:root {
  --cream: #FAF7F4;
  --rose: #C9A8A0;
  --rose-light: #E8D5D0;
  --mocha: #2C1810;
  --mocha-mid: #5C3D35;
  --gold: #C9A882;
  --gold-light: #EDD9BC;
  --white: #FFFFFF;
  --text: #3A2520;
  --text-light: #7A6560;
  --border: #E8DDD8;
}
* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { font-family:'Inter',sans-serif; background:var(--cream); color:var(--text); min-height:100vh; padding-top:64px; }

/* NAV */
nav {
  position:fixed; top:0; left:0; right:0; z-index:100;
  background:rgba(250,247,244,0.92); backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
  display:flex; align-items:center; justify-content:space-between;
  padding:0 32px; height:64px;
}
.nav-logo { font-family:'Playfair Display',serif; font-size:1.25rem; color:var(--mocha); letter-spacing:0.04em; text-decoration:none; }
.nav-logo span { color:var(--rose); font-style:italic; }
.nav-links { display:flex; gap:28px; list-style:none; }
.nav-links a { text-decoration:none; color:var(--text-light); font-size:0.82rem; letter-spacing:0.08em; text-transform:uppercase; font-weight:500; transition:color 0.2s; }
.nav-links a:hover, .nav-links a.active { color:var(--mocha); }
.nav-cta { background:var(--mocha); color:var(--white); border:none; padding:9px 22px; border-radius:2px; font-size:0.78rem; letter-spacing:0.1em; text-transform:uppercase; cursor:pointer; font-weight:500; transition:background 0.2s; text-decoration:none; }
.nav-cta:hover { background:var(--mocha-mid); }
.hamburger { display:none; flex-direction:column; gap:5px; cursor:pointer; background:none; border:none; }
.hamburger span { width:22px; height:1.5px; background:var(--mocha); display:block; transition:all 0.3s; }

/* MOBILE MENU */
#mobile-menu { display:none; position:fixed; top:64px; left:0; right:0; background:var(--white); border-bottom:1px solid var(--border); z-index:99; padding:20px; }
#mobile-menu ul { list-style:none; display:flex; flex-direction:column; gap:16px; }
#mobile-menu a { text-decoration:none; font-size:0.85rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--text); }

/* HERO */
.hero {
  min-height:calc(100vh - 64px);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding:60px 24px;
  background: linear-gradient(160deg, var(--cream) 0%, #F0E8E4 50%, var(--cream) 100%);
  position:relative; overflow:hidden;
}
.hero::before { content:''; position:absolute; top:-20%; left:-10%; width:60%; height:60%; background: radial-gradient(ellipse, rgba(201,168,160,0.12) 0%, transparent 70%); animation: pulse 6s ease-in-out infinite; }
.hero::after { content:''; position:absolute; bottom:-10%; right:-10%; width:50%; height:50%; background: radial-gradient(ellipse, rgba(201,168,128,0.1) 0%, transparent 70%); animation: pulse 6s ease-in-out infinite 3s; }
@keyframes pulse { 0%,100%{opacity:0.6; transform:scale(1);} 50%{opacity:1; transform:scale(1.05);} }
.hero-badge { display:inline-flex; align-items:center; gap:8px; background:var(--white); border:1px solid var(--border); border-radius:100px; padding:6px 16px; font-size:0.72rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--text-light); margin-bottom:32px; position:relative; z-index:1; }
.hero-badge::before { content:'✦'; color:var(--rose); }
.hero h1 { font-family:'Playfair Display',serif; font-size:clamp(2.4rem,6vw,4.5rem); font-weight:400; line-height:1.1; color:var(--mocha); margin-bottom:8px; position:relative; z-index:1; }
.hero h1 em { font-style:italic; color:var(--rose); }
.hero-sub { font-family:'Cormorant Garamond',serif; font-size:clamp(1rem,2vw,1.35rem); color:var(--text-light); margin:16px 0 40px; font-style:italic; position:relative; z-index:1; }
.hero-actions { display:flex; gap:12px; flex-wrap:wrap; justify-content:center; position:relative; z-index:1; }
.btn-primary, .btn-outline { font-family:'Inter',sans-serif; font-size:0.8rem; letter-spacing:0.12em; text-transform:uppercase; cursor:pointer; font-weight:500; border-radius:2px; transition:all 0.2s; text-decoration:none; display:inline-block; padding:14px 32px; }
.btn-primary { background:var(--mocha); color:var(--white); border:none; }
.btn-primary:hover { background:var(--mocha-mid); transform:translateY(-1px); }
.btn-outline { background:transparent; color:var(--mocha); border:1px solid var(--mocha); }
.btn-outline:hover { background:var(--mocha); color:var(--white); }
.hero-gems { display:flex; gap:32px; margin-top:64px; position:relative; z-index:1; }
.gem-stat { text-align:center; }
.gem-stat strong { font-family:'Playfair Display',serif; font-size:1.8rem; color:var(--mocha); display:block; }
.gem-stat span { font-size:0.72rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--text-light); }

/* SECTIONS */
section { padding:80px 24px; }
.section-label { font-size:0.7rem; text-transform:uppercase; letter-spacing:0.2em; color:var(--rose); margin-bottom:12px; display:block; }
.section-title { font-family:'Playfair Display',serif; font-size:clamp(1.8rem,4vw,2.8rem); font-weight:400; color:var(--mocha); line-height:1.15; }
.section-title em { font-style:italic; color:var(--rose); }
.container { max-width:1100px; margin:0 auto; }
.divider { width:40px; height:1px; background:var(--rose); margin:20px 0 40px; }

/* SERVICES GRID & prestat */
.services-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:2px; }
.service-card { background:var(--white); padding:48px 40px; position:relative; overflow:hidden; text-decoration:none; color:inherit; transition:all 0.3s; display:block; }
.service-card::before { content:''; position:absolute; bottom:0; left:0; right:0; height:2px; background:linear-gradient(90deg, var(--rose), var(--gold)); transform:scaleX(0); transition:transform 0.3s; }
.service-card:hover::before { transform:scaleX(1); }
.service-card:hover { transform:translateY(-3px); box-shadow:0 12px 40px rgba(44,24,16,0.08); }
.service-icon { font-size:2rem; margin-bottom:20px; }
.service-card h3 { font-family:'Playfair Display',serif; font-size:1.4rem; font-weight:400; margin-bottom:8px; color:var(--mocha); }
.service-card .price { font-size:1.6rem; font-family:'Playfair Display',serif; color:var(--rose); margin:12px 0; }
.service-card .price span { font-size:0.8rem; color:var(--text-light); font-family:'Inter',sans-serif; }
.service-card p { font-size:0.85rem; line-height:1.7; color:var(--text-light); }
.tag { display:inline-block; background:var(--rose-light); color:var(--mocha-mid); font-size:0.68rem; letter-spacing:0.08em; text-transform:uppercase; padding:3px 10px; border-radius:2px; margin-bottom:16px; }

/* TARIFS TABLE */
.tarifs-wrap { background:var(--white); padding:48px; margin-top:40px; }
.tarif-section { margin-bottom:40px; }
.tarif-section h3 { font-family:'Playfair Display',serif; font-size:1.2rem; font-weight:400; color:var(--mocha); margin-bottom:20px; padding-bottom:12px; border-bottom:1px solid var(--border); }
.tarif-row { display:flex; justify-content:space-between; align-items:center; padding:12px 0; border-bottom:1px solid rgba(232,221,216,0.5); }
.tarif-row:last-child { border-bottom:none; }
.tarif-row span { font-size:0.88rem; color:var(--text); }
.tarif-row strong { font-family:'Playfair Display',serif; font-size:1.1rem; color:var(--mocha); }
.tarif-badge { background:var(--gold-light); color:var(--mocha-mid); font-size:0.65rem; padding:2px 8px; border-radius:2px; letter-spacing:0.06em; text-transform:uppercase; }
.strass-grid { display:grid; grid-template-columns:1fr 1fr; gap:32px; }

/* AVIS */
.avis-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:20px; margin-top:40px; }
.avis-card { background:var(--white); padding:32px; position:relative; }
.avis-card::before { content:'❝'; font-family:Georgia,serif; font-size:3rem; color:var(--rose-light); position:absolute; top:16px; right:20px; line-height:1; }
.avis-card p { font-size:0.88rem; line-height:1.8; color:var(--text); margin-bottom:20px; font-style:italic; }
.avis-card .avis-author { font-size:0.75rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--text-light); display:flex; align-items:center; gap:8px; }
.avis-card .avis-author::before { content:''; width:20px; height:1px; background:var(--rose); }

/* INFOS */
.infos-grid { display:grid; grid-template-columns:1fr 1fr; gap:2px; margin-top:40px; }
.info-card { background:var(--white); padding:40px; }
.info-card h3 { font-family:'Playfair Display',serif; font-size:1.1rem; font-weight:400; margin-bottom:20px; color:var(--mocha); }
.info-list { list-style:none; }
.info-list li { font-size:0.85rem; padding:10px 0; border-bottom:1px solid var(--border); color:var(--text-light); display:flex; align-items:center; gap:10px; }
.info-list li:last-child { border-bottom:none; }
.info-list li::before { content:'—'; color:var(--rose); flex-shrink:0; }
.info-card.danger h3 { color:var(--mocha); }
.info-list.danger li::before { content:'✕'; color:#C0504D; }

/* BOOKING ENGINE */
.booking-wrap { max-width:600px; margin:0 auto; }
.week-nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:32px; }
.week-nav h3 { font-family:'Playfair Display',serif; font-size:1.2rem; font-weight:400; color:var(--mocha); }
.week-nav button { background:none; border:1px solid var(--border); padding:8px 16px; cursor:pointer; font-size:0.8rem; color:var(--text-light); border-radius:2px; transition:all 0.2s; }
.week-nav button:hover { border-color:var(--mocha); color:var(--mocha); }
.days-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; margin-bottom:24px; }
.day-col { background:var(--white); padding:12px 8px; text-align:center; min-height:120px; }
.day-col .day-name { font-size:0.65rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--text-light); margin-bottom:8px; }
.day-col .day-num { font-family:'Playfair Display',serif; font-size:1.1rem; color:var(--mocha); margin-bottom:12px; }
.day-col.today .day-num { background:var(--mocha); color:var(--white); width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center; margin:0 auto 12px; font-size:0.9rem; }
.day-col.past { opacity:0.4; pointer-events:none; }
.slot { background:var(--rose-light); color:var(--mocha-mid); font-size:0.65rem; padding:4px 6px; border-radius:2px; margin:3px 0; cursor:pointer; transition:background 0.2s; text-align:center; }
.slot:hover { background:var(--rose); color:var(--white); }
.slot.booked { background:var(--border); color:var(--text-light); cursor:not-allowed; text-decoration:line-through; }
.slot.selected { background:var(--mocha); color:var(--white); }
.no-slots { font-size:0.65rem; color:var(--border); }

/* FORMS */
.booking-form { background:var(--white); padding:40px; margin-top:24px; display:none; }
.booking-form.show { display:block; }
.booking-form h3 { font-family:'Playfair Display',serif; font-size:1.2rem; font-weight:400; color:var(--mocha); margin-bottom:24px; }
.form-selected { background:var(--rose-light); padding:12px 16px; font-size:0.82rem; color:var(--mocha-mid); margin-bottom:24px; border-radius:2px; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
.form-group { display:flex; flex-direction:column; gap:6px; margin-bottom:16px; }
.form-group label { font-size:0.72rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--text-light); }
.form-group input, .form-group select { border:1px solid var(--border); padding:12px 14px; font-size:0.88rem; font-family:'Inter',sans-serif; background:var(--cream); border-radius:2px; outline:none; transition:border-color 0.2s; color:var(--text); }
.form-group input:focus, .form-group select:focus { border-color:var(--rose); }
.form-note { font-size:0.75rem; color:var(--text-light); background:var(--gold-light); padding:12px 16px; border-radius:2px; margin-bottom:24px; line-height:1.6; }
.btn-book { width:100%; background:var(--mocha); color:var(--white); border:none; padding:16px; font-size:0.8rem; letter-spacing:0.12em; text-transform:uppercase; cursor:pointer; font-weight:500; border-radius:2px; transition:background 0.2s; }
.btn-book:hover { background:var(--mocha-mid); }
.success-msg { background:#E8F5E9; border:1px solid #A5D6A7; padding:20px; border-radius:2px; text-align:center; display:none; }
.success-msg.show { display:block; }
.success-msg h4 { font-family:'Playfair Display',serif; font-size:1.2rem; color:#2E7D32; margin-bottom:8px; }
.success-msg p { font-size:0.85rem; color:#388E3C; }

/* ADMIN VIEWS */
.admin-login { max-width:400px; margin:80px auto; padding:48px; background:var(--white); }
.admin-login h2 { font-family:'Playfair Display',serif; font-size:1.8rem; font-weight:400; color:var(--mocha); margin-bottom:8px; }
.admin-login p { font-size:0.82rem; color:var(--text-light); margin-bottom:32px; }
.admin-wrap { max-width:1100px; margin:0 auto; padding:40px 24px; }
.admin-tabs { display:flex; gap:2px; margin-bottom:40px; flex-wrap:wrap; }
.admin-tab { background:var(--white); border:none; padding:12px 24px; font-size:0.78rem; letter-spacing:0.08em; text-transform:uppercase; cursor:pointer; font-family:'Inter',sans-serif; color:var(--text-light); transition:all 0.2s; }
.admin-tab.active, .admin-tab:hover { background:var(--mocha); color:var(--white); }
.admin-panel { display:none; }
.admin-panel.active { display:block; }
.admin-section { background:var(--white); padding:32px; margin-bottom:24px; }
.admin-section h3 { font-family:'Playfair Display',serif; font-size:1.1rem; font-weight:400; color:var(--mocha); margin-bottom:20px; padding-bottom:12px; border-bottom:1px solid var(--border); }
.admin-grid-3 { display:grid; grid-template-columns:repeat(3, 1fr); gap:16px; }
.rdv-table { width:100%; border-collapse:collapse; }
.rdv-table th { font-size:0.7rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--text-light); padding:10px 12px; text-align:left; border-bottom:2px solid var(--border); }
.rdv-table td { font-size:0.84rem; padding:12px; border-bottom:1px solid var(--border); color:var(--text); }
.status-badge { font-size:0.65rem; padding:3px 10px; border-radius:2px; text-transform:uppercase; letter-spacing:0.06em; }
.status-confirmed { background:#E8F5E9; color:#2E7D32; }
.status-pending { background:var(--gold-light); color:var(--mocha-mid); }
.status-cancelled { background:#FFEBEE; color:#C62828; }
.btn-danger { background:#FFEBEE; color:#C62828; border:none; padding:5px 12px; border-radius:2px; cursor:pointer; font-size:0.72rem; }
.btn-sm { background:var(--mocha); color:var(--white); border:none; padding:6px 14px; border-radius:2px; cursor:pointer; font-size:0.72rem; text-transform:uppercase; }
.price-input-wrap { display:flex; align-items:center; gap:8px; }
.price-input-wrap input { flex:1; }
.price-input-wrap span { color:var(--text-light); font-size:0.88rem; }
.avail-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:8px; margin-top:16px; }
.avail-day { background:var(--cream); padding:12px 8px; border-radius:2px; text-align:center; }
.avail-day label { font-size:0.65rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--text-light); display:block; margin-bottom:8px; }
.avail-day .toggle { display:flex; align-items:center; justify-content:center; margin-bottom:8px; gap:6px; font-size:0.75rem; }
.stat-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:2px; margin-bottom:32px; }
.stat-card { background:var(--white); padding:24px; }
.stat-card .stat-val { font-family:'Playfair Display',serif; font-size:2rem; color:var(--mocha); }
.stat-card .stat-label { font-size:0.72rem; text-transform:uppercase; letter-spacing:0.08em; color:var(--text-light); margin-top:4px; }
.admin-save { background:var(--mocha); color:var(--white); border:none; padding:10px 24px; border-radius:2px; cursor:pointer; font-size:0.78rem; letter-spacing:0.1em; text-transform:uppercase; margin-top:16px; font-family:'Inter',sans-serif; }

/* TOAST */
.toast { position:fixed; bottom:32px; left:50%; transform:translateX(-50%); background:var(--mocha); color:var(--white); padding:12px 24px; border-radius:2px; font-size:0.82rem; opacity:0; transition:opacity 0.3s; z-index:999; pointer-events:none; }
.toast.show { opacity:1; }

/* GALLERY & FOOTER */
.photo-section { background:var(--mocha); padding:80px 24px; }
.photo-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:2px; margin-top:40px; }
.photo-placeholder { aspect-ratio:1; background:rgba(255,255,255,0.05); display:flex; flex-direction:column; align-items:center; justify-content:center; color:rgba(255,255,255,0.2); font-size:0.75rem; text-align:center; gap:8px; border:1px dashed rgba(255,255,255,0.1); }
.photo-placeholder span { font-size:2rem; opacity:0.4; }
footer { background:var(--mocha); color:rgba(255,255,255,0.7); padding:60px 24px 40px; }
.footer-grid { max-width:1100px; margin:0 auto; display:grid; grid-template-columns:1fr 1fr 1fr; gap:40px; margin-bottom:40px; }
.footer-brand h3 { font-family:'Playfair Display',serif; font-size:1.4rem; color:var(--white); margin-bottom:8px; }
.footer-col h4 { font-size:0.72rem; text-transform:uppercase; letter-spacing:0.12em; color:rgba(255,255,255,0.5); margin-bottom:16px; }
.footer-col ul { list-style:none; }
.footer-col li { font-size:0.82rem; padding:5px 0; }
.footer-col li a { color: inherit; text-decoration: none; transition: color 0.2s; }
.footer-col li a:hover { color: var(--white); }
.footer-bottom { max-width:1100px; margin:0 auto; padding-top:24px; border-top:1px solid rgba(255,255,255,0.1); display:flex; justify-content:space-between; align-items:center; font-size:0.75rem; }

/* RESPONSIVE */
@media(max-width:768px){
  .nav-links, .nav-cta { display:none; }
  .hamburger { display:flex; }
  .infos-grid, .form-row, .admin-grid-3, .stat-cards, .footer-grid, .strass-grid { grid-template-columns:1fr; }
  .days-grid { grid-template-columns:repeat(4,1fr); }
  .avail-grid { grid-template-columns:repeat(3,1fr); }
  .tarifs-wrap, .admin-wrap, .admin-section { padding:24px 16px; }
}

/* DISPOS LIST REFONTE */
.dispos-list { display: flex; flex-direction: column; gap: 16px; margin-top: 16px; }
.dispo-row { background: var(--white); border: 1px solid var(--border); border-radius: 4px; padding: 20px; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; transition: all 0.3s; }
.dispo-row.closed { opacity: 0.6; background: #FAF7F4; }
.dispo-day-info { display: flex; align-items: center; gap: 16px; min-width: 180px; }
.dispo-day-name { font-family: 'Playfair Display', serif; font-size: 1.15rem; color: var(--mocha); font-weight: 600; width: 90px; }
.dispo-status { font-size: 0.72rem; font-weight: 600; text-transform: uppercase; padding: 4px 10px; border-radius: 100px; letter-spacing: 0.05em; text-align: center; width: 80px; }
.status-open { background: #E8F5E9; color: #2E7D32; border: 1px solid #A5D6A7; }
.status-closed { background: #FFEBEE; color: #C62828; border: 1px solid #FFCDD2; }
.dispo-slots-container { flex: 1; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; min-width: 250px; }
.slot-badge { background: var(--rose-light); color: var(--mocha-mid); font-size: 0.78rem; font-weight: 500; padding: 6px 12px; border-radius: 100px; display: inline-flex; align-items: center; gap: 8px; transition: all 0.2s; border: 1px solid transparent; }
.slot-badge:hover { background: #FFEBEE; color: #C62828; border-color: #EF9A9A; }
.slot-badge-remove { cursor: pointer; font-weight: bold; font-size: 0.85rem; padding: 0 2px; }
.add-slot-ctrl { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.add-slot-input { border: 1px solid var(--border); padding: 8px 10px; font-size: 0.8rem; border-radius: 4px; outline: none; background: var(--cream); color: var(--text); font-family: inherit; width: 100px; }
.add-slot-input:focus { border-color: var(--rose); }