:root{--green:#0d4d28;--green2:#173f21;--orange:#ef6400;--cream:#fbfaf5;--shadow:0 14px 40px rgba(0,0,0,.15)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#0b2d1b;color:#172018;font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}
.site-header{position:sticky;top:0;z-index:1000;background:rgba(251,250,245,.97);backdrop-filter:blur(10px);border-bottom:1px solid rgba(13,77,40,.12);box-shadow:0 2px 14px rgba(0,0,0,.06)}
.header-inner{max-width:1180px;margin:auto;min-height:82px;display:flex;align-items:center;gap:28px;padding:10px 22px}.brand{display:flex;align-items:center;gap:10px;font-weight:900;white-space:nowrap}.brand-mark{font-style:italic;font-weight:900;font-size:30px;letter-spacing:-1.5px;color:var(--orange)}.brand-sub{font-size:12px;display:block;color:#4b5450;letter-spacing:.3px;margin-top:-4px}.leaf{font-size:27px;color:#19833f}.nav{display:flex;align-items:center;gap:24px;margin-left:auto}.nav a{font-size:14px;font-weight:800;text-transform:uppercase;padding:10px 0;border-bottom:2px solid transparent}.nav a:hover,.nav a.active{color:var(--green);border-color:var(--green)}.phone{background:var(--green);color:#fff!important;border:0!important;padding:12px 16px!important;border-radius:999px;box-shadow:0 8px 22px rgba(13,77,40,.2)}
.mobile-toggle{display:none;margin-left:auto;border:0;background:var(--green);color:white;border-radius:10px;font-size:22px;width:44px;height:44px}
.hero{background:#000;display:flex;justify-content:center}.hero img{display:block;width:min(100%,1055px);height:auto}
.gateway{background:linear-gradient(180deg,#f8f5ed,#efe8db);padding:70px 20px 82px}.gateway-inner{max-width:1120px;margin:auto}.gateway h1{text-align:center;margin:0;color:var(--green);font-size:clamp(32px,5vw,56px);text-transform:uppercase}.gateway p{text-align:center;max-width:680px;margin:14px auto 36px;font-size:18px;color:#4a514d}.cards{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.card{min-height:150px;border-radius:22px;padding:22px 16px;display:flex;flex-direction:column;justify-content:flex-end;color:#fff;background:linear-gradient(145deg,#174b29,#092d19);box-shadow:var(--shadow);transition:.25s transform,.25s box-shadow;border:1px solid rgba(255,255,255,.08)}.card:hover{transform:translateY(-6px);box-shadow:0 20px 44px rgba(0,0,0,.22)}.card .icon{font-size:30px}.card strong{font-size:18px;margin-top:16px}.card small{opacity:.82;margin-top:5px}.card.orange{background:linear-gradient(145deg,#f07a16,#c64e00)}
.page-wrap{background:#f7f4ed;display:flex;justify-content:center;overflow:hidden}.mockup-crop{width:min(100%,1024px);overflow:hidden;background:#fff}.mockup-crop img{display:block;width:100%;height:auto;margin-top:-88px}
.page-note{background:#f7f4ed;padding:24px 20px 45px;text-align:center;color:#35513f}.page-note a{display:inline-block;background:var(--orange);color:white;font-weight:800;border-radius:999px;padding:13px 20px;margin:6px}.page-note a.secondary{background:var(--green)}
footer{background:#062d18;color:white;padding:26px 20px}.footer-inner{max-width:1100px;margin:auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}.footer-brand{font-weight:900;color:#ff7b20;font-size:22px}.footer-contact{display:flex;gap:20px;flex-wrap:wrap;font-size:14px}
@media(max-width:980px){.cards{grid-template-columns:repeat(2,1fr)}.nav{display:none;position:absolute;top:82px;left:0;right:0;background:#fbfaf5;padding:18px 24px;flex-direction:column;align-items:stretch;box-shadow:0 18px 30px rgba(0,0,0,.12)}.nav.open{display:flex}.nav a{text-align:center}.mobile-toggle{display:block}.phone{border-radius:12px!important}.mockup-crop img{margin-top:-78px}}
@media(max-width:560px){.header-inner{min-height:70px;padding:8px 14px}.brand-mark{font-size:24px}.brand-sub{font-size:10px}.leaf{font-size:22px}.nav{top:70px}.cards{grid-template-columns:1fr}.gateway{padding:48px 16px}.mockup-crop img{margin-top:-70px}.page-note{font-size:14px}}

/* Réservation */
.booking-page{background:#f4efe5;min-height:100vh}.booking-hero{position:relative;overflow:hidden;background:radial-gradient(circle at 82% 15%,rgba(133,190,66,.34),transparent 26%),linear-gradient(120deg,#062f19 0%,#0c4926 55%,#153d22 100%);color:#fff;padding:72px 20px 96px}.booking-hero:before,.booking-hero:after{content:"";position:absolute;width:340px;height:340px;border-radius:50%;filter:blur(1px);opacity:.18;background:repeating-radial-gradient(ellipse at center,transparent 0 18px,#9ed15d 19px 21px,transparent 22px 36px)}.booking-hero:before{left:-120px;bottom:-170px}.booking-hero:after{right:-120px;top:-160px}.booking-hero-inner{position:relative;z-index:1;max-width:1040px;margin:auto;text-align:center}.eyebrow{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);padding:9px 15px;border-radius:999px;font-weight:800}.booking-hero h1{font-size:clamp(38px,6vw,68px);margin:20px 0 12px;text-transform:uppercase;letter-spacing:-2px}.booking-hero p{max-width:760px;margin:0 auto;font-size:18px;line-height:1.65;color:#edf4ed}.booking-badges{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:28px}.booking-badges span{background:#fff;color:#164326;font-weight:800;border-radius:999px;padding:10px 15px}.booking-shell{max-width:1120px;margin:-54px auto 0;padding:0 20px 78px;position:relative;z-index:5}.booking-panel{background:#fff;border-radius:28px;box-shadow:0 25px 70px rgba(7,45,24,.18);overflow:hidden;border:1px solid rgba(13,77,40,.09)}.booking-steps{display:grid;grid-template-columns:repeat(4,1fr);background:#f8f6f0;border-bottom:1px solid #ece7dc}.step{padding:18px 12px;text-align:center;color:#708078;font-weight:900;border-right:1px solid #ece7dc}.step:last-child{border-right:0}.step:first-letter{color:var(--orange)}.booking-form{padding:30px}.hidden-field{display:none}.booking-section{border:0;padding:0;margin:0 0 36px}.booking-section legend{font-size:24px;font-weight:900;color:var(--green);margin-bottom:18px}.service-choice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.service-choice input{position:absolute;opacity:0;pointer-events:none}.service-choice-card{display:flex;min-height:145px;flex-direction:column;justify-content:center;align-items:center;text-align:center;border:2px solid #e9e6df;border-radius:20px;padding:18px;background:linear-gradient(180deg,#fff,#faf8f3);cursor:pointer;transition:.2s}.service-choice-card:hover{transform:translateY(-3px);border-color:#b9cfbd}.service-choice input:checked + .service-choice-card{border-color:var(--orange);box-shadow:0 0 0 4px rgba(239,100,0,.1);background:#fff9f3}.service-choice-card .big-ico{font-size:30px;margin-bottom:9px}.service-choice-card b{color:#163c24;font-size:17px}.service-choice-card small{color:#68766d;margin-top:5px}.date-row{display:flex;gap:18px;align-items:center;background:#f8f7f2;border:1px solid #e5e1d8;padding:18px;border-radius:18px}.date-row label{font-weight:900;color:#31473a}.date-row input{margin-left:auto;min-width:230px;border:1px solid #d5d8d4;background:white;border-radius:12px;padding:13px 14px;font:inherit}.booking-hint{font-size:14px;color:#738078}.slot-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.slot-btn{border:2px solid #dfe5df;background:#fff;border-radius:14px;padding:14px 8px;font-weight:900;color:#1c4b2c;font-size:16px;cursor:pointer;transition:.2s}.slot-btn:hover,.slot-btn.selected{background:var(--green);border-color:var(--green);color:#fff;transform:translateY(-2px)}.slot-placeholder{grid-column:1/-1;background:#f6f4ef;border:1px dashed #c9cec9;color:#6a756e;border-radius:16px;padding:24px;text-align:center}.slot-placeholder.closed{background:#fff5ed;color:#91470f;border-color:#f2bf9b}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field-grid label{display:flex;flex-direction:column;gap:8px;font-weight:800;color:#31473a}.field-grid label.full{grid-column:1/-1}.field-grid input,.field-grid textarea{border:1px solid #d9ddd9;border-radius:13px;padding:14px 15px;font:inherit;background:#fff;outline:none}.field-grid input:focus,.field-grid textarea:focus{border-color:#5c9c6f;box-shadow:0 0 0 4px rgba(92,156,111,.12)}.booking-summary{position:sticky;bottom:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:20px;background:#0b3e21;color:#fff;border-radius:20px;padding:18px 20px;box-shadow:0 12px 38px rgba(0,0,0,.2)}.booking-summary div{display:flex;flex-direction:column;gap:4px}.booking-summary span{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#c5d8c9}.booking-summary strong{font-size:16px}.booking-submit{border:0;background:var(--orange);color:#fff;font-weight:900;border-radius:999px;padding:15px 22px;font-size:15px;cursor:pointer;white-space:nowrap}.booking-legal{font-size:12px;line-height:1.55;color:#7d857f;margin:14px 4px 0}.booking-card{background:linear-gradient(145deg,#c6911c,#f0b93e)}.thanks-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 50% 20%,#1c6336,#062b18);padding:20px}.thanks-card{width:min(620px,100%);background:#fff;border-radius:28px;padding:44px;text-align:center;box-shadow:0 30px 80px rgba(0,0,0,.28)}.thanks-icon{width:74px;height:74px;border-radius:50%;display:grid;place-items:center;background:#e8f5e8;color:#18713c;font-size:38px;font-weight:900;margin:0 auto}.thanks-card h1{color:#103d22;font-size:36px}.thanks-card p{color:#536057;line-height:1.6}.thanks-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:25px}.thanks-actions a{background:var(--orange);color:#fff;padding:13px 20px;border-radius:999px;font-weight:900}.thanks-actions a.secondary{background:var(--green)}
@media(max-width:900px){.service-choice-grid{grid-template-columns:repeat(2,1fr)}.slot-grid{grid-template-columns:repeat(3,1fr)}.booking-steps{grid-template-columns:repeat(2,1fr)}.booking-summary{position:static;align-items:stretch;flex-direction:column}.booking-submit{width:100%}}
@media(max-width:560px){.booking-hero{padding:52px 16px 80px}.booking-shell{padding:0 12px 55px;margin-top:-40px}.booking-form{padding:20px 16px}.service-choice-grid{grid-template-columns:1fr}.slot-grid{grid-template-columns:repeat(2,1fr)}.field-grid{grid-template-columns:1fr}.field-grid label.full{grid-column:auto}.date-row{align-items:stretch;flex-direction:column}.date-row input{margin:0;min-width:0;width:100%}.booking-steps{grid-template-columns:1fr 1fr}.step b{display:block;font-size:11px}.thanks-card{padding:30px 20px}.thanks-card h1{font-size:28px}}

.mockup-crop.plain img{margin-top:0}
.mockup-crop.plain{width:min(100%,1500px)}
.page-wrap:has(.mockup-crop.plain){padding:0 12px}
.hero.hero-with-badge{position:relative;flex-direction:column;align-items:center}
.hero-badge{width:min(100%,1055px);display:flex;align-items:center;gap:18px;padding:16px 34px 22px;background:linear-gradient(180deg,#6d8c2b,#4f6d1d)}
.hero-badge-icon{flex:0 0 auto;width:90px;height:90px;border-radius:50%;background:#173b1d;color:#fff;display:grid;place-items:center;font-size:38px}
.hero-badge-text{display:flex;flex-direction:column;line-height:1.15}
.hero-badge-text strong{font-size:26px;font-weight:900;color:#0f2a15;letter-spacing:.5px}
.hero-badge-text em{font-style:normal;font-size:24px;color:#1c3a20}
@media(max-width:560px){.hero-badge-icon{width:64px;height:64px;font-size:28px}.hero-badge-text strong{font-size:20px}.hero-badge-text em{font-size:18px}}

/* Réservation : erreurs + confirmation */
.field-error{display:block;margin-top:6px;color:#c0392b;font-weight:700;font-size:13px}
.booking-error{background:#fdecea;border:1px solid #f3b5ac;color:#a12b1c;border-radius:14px;padding:14px 16px;font-weight:700;margin:0 0 18px}
.booking-submit:disabled{opacity:.65;cursor:progress}
.booking-confirm{padding:44px 30px;text-align:center}
.booking-confirm h2{color:#103d22;font-size:32px;margin:18px 0 10px}
.booking-confirm p{color:#536057;line-height:1.65;margin:6px 0}
.booking-confirm .confirm-summary{color:#103d22}

/* ===== Espace administrateur ===== */
.admin-page { background: #f4f7f2; min-height: 70vh; padding: 24px 0 60px; }
.admin-shell, .admin-auth { max-width: 1100px; margin: 0 auto; padding: 0 16px; }
.admin-auth { max-width: 460px; padding-top: 30px; }
.admin-card { background: #fff; border: 1px solid #e2e9df; border-radius: 16px; padding: 18px; box-shadow: 0 6px 20px rgba(20,60,20,.06); margin-bottom: 16px; }
.admin-card h1 { margin: 0 0 4px; font-size: 1.5rem; }
.admin-card h2 { margin: 0 0 10px; font-size: 1.1rem; color: #1d5c2b; }
.admin-sub { color: #6b7d6b; font-size: .92rem; margin: 0 0 12px; }
.admin-info { color: #1d5c2b; font-weight: 600; }
.admin-form { display: grid; gap: 12px; }
.admin-form label { display: grid; gap: 6px; font-weight: 600; font-size: .92rem; }
.admin-form input { padding: 12px; border: 1px solid #cfdac9; border-radius: 10px; font-size: 1rem; }
.admin-link { background: none; border: none; color: #1d5c2b; text-decoration: underline; margin-top: 14px; cursor: pointer; font-size: .9rem; }
.admin-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.admin-top h1 { margin: 0; font-size: 1.6rem; }
.admin-logout { background: #fff; border: 1px solid #cfdac9; border-radius: 999px; padding: 9px 16px; cursor: pointer; }
.admin-tabs { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 10px; margin-bottom: 8px; }
.admin-tabs button { flex: 0 0 auto; border: 1px solid #cfdac9; background: #fff; border-radius: 999px; padding: 10px 16px; cursor: pointer; font-weight: 600; }
.admin-tabs button.active { background: #1d5c2b; color: #fff; border-color: #1d5c2b; }
.admin-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.admin-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.admin-list li { background: #f6faf4; border-radius: 10px; padding: 10px 12px; font-size: .92rem; }
.admin-empty { color: #8a998a; font-size: .92rem; }
.cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; text-transform: capitalize; }
.cal-head button { width: 40px; height: 40px; border-radius: 50%; border: 1px solid #cfdac9; background: #fff; font-size: 1.3rem; cursor: pointer; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cal-dow { text-align: center; font-size: .75rem; color: #8a998a; font-weight: 700; }
.cal-day { aspect-ratio: 1; border-radius: 10px; border: 1px solid #e2e9df; background: #fff; cursor: pointer; font-weight: 600; position: relative; }
.cal-day.open { background: #e7f5e4; border-color: #a9d3a2; }
.cal-day.closed { background: #f6e6e6; color: #a04141; border-color: #e5c2c2; }
.cal-day.booked::after { content: ""; position: absolute; bottom: 5px; left: 50%; transform: translateX(-50%); width: 6px; height: 6px; border-radius: 50%; background: #e08b23; }
.cal-day.sel { outline: 2px solid #1d5c2b; }
.cal-detail { margin-top: 18px; border-top: 1px solid #eef2ec; padding-top: 14px; }
.cal-detail h2 { text-transform: capitalize; }
.quick-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.quick-actions button { border: 1px solid #cfdac9; background: #fff; border-radius: 10px; padding: 11px 14px; cursor: pointer; font-weight: 600; font-size: .9rem; }
.quick-actions button.primary { background: #1d5c2b; color: #fff; border-color: #1d5c2b; }
.slot-picker { display: flex; flex-wrap: wrap; gap: 8px; }
.slot-picker button { border: 1px solid #cfdac9; background: #fff; border-radius: 999px; padding: 9px 14px; cursor: pointer; font-size: .9rem; }
.slot-picker button.on { background: #1d5c2b; color: #fff; border-color: #1d5c2b; }
.slot-view { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { background: #e7f5e4; border-radius: 999px; padding: 7px 13px; font-size: .88rem; }
.chip.taken { background: #f6e6e6; color: #a04141; text-decoration: line-through; }
.weekday-row { border-top: 1px solid #eef2ec; padding: 12px 0; }
.weekday-name { font-weight: 700; margin-bottom: 8px; }
.res-list { display: grid; gap: 12px; }
.res-item { border: 1px solid #e2e9df; border-radius: 12px; padding: 12px; }
.res-item header { display: flex; justify-content: space-between; gap: 8px; align-items: center; flex-wrap: wrap; }
.res-item p { margin: 6px 0; }
.res-meta { font-size: .88rem; color: #6b7d6b; }
.res-msg { background: #f6faf4; border-radius: 8px; padding: 8px; font-size: .9rem; }
.badge { border-radius: 999px; padding: 4px 10px; font-size: .78rem; font-weight: 700; background: #eee; }
.badge.en_attente { background: #fdf0d9; color: #9a6410; }
.badge.confirmee { background: #e0f2df; color: #1d5c2b; }
.badge.terminee { background: #e3ecf7; color: #24558c; }
.badge.annulee { background: #f6e6e6; color: #a04141; }
@media (max-width: 640px) {
  .admin-card { padding: 14px; }
  .quick-actions button, .slot-picker button { flex: 1 1 45%; }
}

/* Bloc location de matériel dans le formulaire de devis */
.rental-block {
  margin-top: 18px;
  padding: 18px;
  border: 1px solid #d8e6d2;
  border-left: 5px solid #f39200;
  border-radius: 14px;
  background: #f7fbf5;
}
.rental-block-title {
  margin: 0 0 12px;
  font-weight: 800;
  color: #1f5c2e;
}
.rental-grid {
  display: grid;
  gap: 8px;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
.rental-check {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: #fff;
  border: 1px solid #e2ece0;
  border-radius: 10px;
  font-size: 0.95rem;
  cursor: pointer;
}
.rental-check input {
  width: 18px;
  height: 18px;
  accent-color: #2e7d32;
}
.rental-check:has(input:checked) {
  border-color: #2e7d32;
  background: #eef7ec;
}
.rental-days {
  display: block;
  margin-top: 14px;
  font-weight: 700;
  color: #1f5c2e;
}
.rental-days input {
  display: block;
  margin-top: 6px;
  width: 120px;
  padding: 10px;
  border: 1px solid #cfe0ca;
  border-radius: 10px;
}
.rental-note {
  margin: 12px 0 0;
  font-size: 0.85rem;
  color: #5d6b5c;
}
