/* ======= ANIMATION DE CHARGEMENT ======= */
.loading-screen {
  position: fixed;
  inset: 0;
  background: linear-gradient(135deg, #1abc9c 0%, #117a6a 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 99999;
  opacity: 1;
  visibility: visible;
  transition: opacity 0.6s ease, visibility 0.6s ease;
}

.loading-screen.hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.loading-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
}

/* Logo pulsant */
.loading-logo {
  position: relative;
  width: 120px;
  height: 120px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(10px);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4);
  animation: logoFloat 3s ease-in-out infinite;
}

.logo-pulse {
  width: 80px;
  height: 80px;
  object-fit: cover;
  border-radius: 50%;
  animation: logoPulse 2s ease-in-out infinite;
}

/* Spinner triple anneaux */
.loading-spinner {
  position: relative;
  width: 80px;
  height: 80px;
}

.spinner-ring {
  position: absolute;
  inset: 0;
  border: 3px solid transparent;
  border-top-color: #f1c40f;
  border-radius: 50%;
  animation: spinnerRotate 1.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite;
}

.spinner-ring:nth-child(2) {
  border-top-color: #e0b14c;
  animation-delay: -0.5s;
  inset: 8px;
}

.spinner-ring:nth-child(3) {
  border-top-color: #c7ae33;
  animation-delay: -1s;
  inset: 16px;
}

/* Texte de chargement */
.loading-text {
  color: #fff;
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: 2px;
  margin: 0;
  animation: textFade 1.5s ease-in-out infinite;
}

/* Animations */
@keyframes logoFloat {
  0%, 100% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-10px);
  }
}

@keyframes logoPulse {
  0%, 100% {
    transform: scale(1);
    box-shadow: 0 0 0 0 rgba(241, 196, 15, 0.7);
  }
  50% {
    transform: scale(1.05);
    box-shadow: 0 0 0 10px rgba(241, 196, 15, 0);
  }
}

@keyframes spinnerRotate {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

@keyframes textFade {
  0%, 100% {
    opacity: 0.6;
  }
  50% {
    opacity: 1;
  }
}







/* Harmonisation styles avec studio.css */
body{font-family:'Montserrat','Segoe UI',Arial,sans-serif;background:linear-gradient(120deg,#f7f9fa 0%,#eaf6f6 60%,#d4f1f4 100%);color:#2c3e50;margin:0;padding:0;}
.detail-root{max-width:1100px;margin:40px auto;padding:0 20px;font-family:'Montserrat','Segoe UI',Arial,sans-serif;color:#2c3e50;}
header.detail-head{display:block;margin:2px 0 2px;} /* le header devient bloc simple */
.detail-head h1{line-height:1.05;margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px;} /* on regroupe tout */
.detail-head .rating-summary{display:none;} /* remplacé par inline */
.rating-inline{display:inline-flex;align-items:center;font-size:.75rem;font-weight:600;color:#f5b301;letter-spacing:1px;margin-left:10px;vertical-align:middle;}
.rating-inline .rating-num{color:#334155;font-weight:500;font-size:.6rem;letter-spacing:0;margin-left:4px;}
.detail-head h1{flex:1 1 320px;font-size:clamp(1.6rem,2.2vw,2.4rem);margin:0;}
.status-badge{display:inline-block;padding:4px 8px;border-radius:6px;font-size:.85rem;font-weight:600;margin-left:auto;}
.status-ok{background:#e7faf4;color:#0d8b73;border:1px solid #bfeee3;}
.status-ko{background:#f3f4f6;color:#6b7280;border:1px solid #e5e7eb;}
.meta-inline{display:none;} /* retiré */
.meta-line .pill{background:#f0f7f7;padding:4px 8px;border-radius:999px;font-size:.75rem;font-weight:500;color:#51646a;}
.gallery{position:relative;overflow:hidden;border-radius:14px;background:#000;margin:0 0 24px;touch-action: pan-x pinch-zoom;}
.gallery .slides{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;gap:4px;align-items:center;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;touch-action: pan-x pinch-zoom;}
.gallery .slides::-webkit-scrollbar{display:none;}
.gallery .slide{min-width:100%;scroll-snap-align:center;scroll-snap-stop:always;position:relative;display:flex;align-items:center;justify-content:center;}
/* Afficher toute la photo sans recadrage : */
.gallery img{max-width:100%;max-height:70vh;width:auto;height:auto;object-fit:contain;display:block;background:#000;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;}
.gallery-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:20;background:rgba(255,255,255,.9);color:#0f172a;border:1px solid #cbd5e1;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;cursor:pointer;font-weight:600;backdrop-filter:blur(4px);transition:background .15s,transform .15s;pointer-events:auto;}
.gallery-nav{touch-action:manipulation;-webkit-tap-highlight-color: rgba(0,0,0,0);}
.gallery-nav:hover{background:#fff;}
.gallery-nav:active{transform:translateY(-50%) scale(.9);} 
.gallery-nav.prev{left:12px;}
.gallery-nav.next{right:12px;}
.gallery-nav[disabled]{opacity:.35;cursor:not-allowed;}
.gallery .dots{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);display:flex;gap:6px;z-index:3;}
.gallery .dot{width:10px;height:10px;border-radius:50%;background:#ffffff55;cursor:pointer;}
.gallery .dot.active{background:#fff;}
.section-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:28px;margin-top:20px;}
.card-block{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:18px 20px;box-shadow:0 2px 4px -2px rgba(0,0,0,.08);}
.card-block h3{margin:0 0 12px;font-size:1.05rem;color:#124;}
.map-wrap #map{width:100%;height:230px;border-radius:12px;}
.avis-list{display:flex;flex-direction:column;gap:14px;}
.avis-item{background:#f8fafc;padding:12px 14px;border-radius:12px;font-size:.85rem;line-height:1.35;color:#234;}
.contact-opts{display:flex;flex-wrap:wrap;gap:14px;margin-top:8px;}
.contact-opts a{flex:1 1 160px;text-decoration:none;background:#1abc9c;color:#fff;padding:12px 16px;border-radius:12px;font-weight:600;display:flex;flex-direction:column;gap:4px;align-items:flex-start;border:1px solid #18a58a;}
.contact-opts a small{opacity:.85;font-weight:400;font-size:.7rem;}
.desc-main{font-size:.95rem;line-height:1.5;color:#233;margin-top:6px;} /* rapproche description */
footer.detail-foot{margin:40px 0 0;padding:24px 0;font-size:.7rem;text-align:center;color:#667;}
@media (max-width:700px){.gallery img{max-height:60vh;} header.detail-head{flex-direction:column;} }
.btn-retour{margin:14px 20px;background:#1abc9c;border:1px solid #18a58a;color:#fff;padding:8px 18px;border-radius:8px;cursor:pointer;font-size:1rem;transition:background .2s;}
.btn-retour.fixed{ position:fixed; top:14px; left:18px; z-index:11980; margin:0; }
.btn-retour:hover{background:#159c85;}
.more-link{display:inline-block;margin-left:8px;}
/* Boutons génériques alignés sur studio.css */
.btn-primary,.btn-outline{padding:8px 12px;border-radius:8px;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:4px;font-family:'Montserrat','Segoe UI',Arial,sans-serif;font-size:.9rem;}
.btn-primary{background:#1abc9c;color:#fff;border:1px solid #18a58a;}
.btn-primary[disabled]{opacity:.65;cursor:not-allowed;}
.btn-outline{background:#fff;color:#1abc9c;border:1px solid #1abc9c;}

/* Admin panel styles (alignés sur studio.css) */
#admin-panel{margin:0 auto 16px;max-width:1100px;}
.admin-card{max-width:1100px;margin:0 auto 16px;background:#fff;border:1px solid #e6ecec;border-radius:12px;padding:12px;}
.admin-card h3{margin:4px 0 12px;}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.admin-card label{display:block;font-size:.9rem;color:#415055;}
.admin-card input,.admin-card textarea,.admin-card select{width:100%;box-sizing:border-box;margin-top:4px;padding:8px;border:1px solid #d7e2e2;border-radius:8px;font:inherit;}
.admin-actions{margin-top:10px;display:flex;justify-content:flex-end;}
.admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:6px 0 10px;}
.admin-toolbar .left{display:flex;gap:8px;flex-wrap:wrap;}
.images-editor{display:grid;gap:8px;}
.images-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;}
.images-item{position:relative;border:1px solid #e6ecec;border-radius:8px;overflow:hidden;background:#f9fbfb;}
.images-item img{width:100%;height:90px;object-fit:cover;display:block;}
.images-item .controls{position:absolute;inset:auto 6px 6px auto;display:flex;gap:6px;}
.images-item .ctrl{background:rgba(255,255,255,0.95);border:1px solid #e5e7eb;padding:4px 6px;border-radius:6px;font-size:.8rem;cursor:pointer;}
.images-add{display:flex;gap:8px;}
.images-add input{flex:1;}
.availability-field{display:grid;gap:6px;}
.switch{position:relative;display:inline-flex;align-items:center;gap:10px;}
.switch input{position:absolute;opacity:0;width:0;height:0;}
.switch .slider{width:44px;height:24px;background:#d1d5db;border-radius:999px;position:relative;transition:background .2s;}
.switch .slider::after{content:'';position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .2s;}
.switch input:checked + .slider{background:#1abc9c;}
.switch input:checked + .slider::after{transform:translateX(20px);}
.availability-field .status-text{font-weight:600;color:#415055;font-size:.8rem;align-content:center;}
/* Stars reviews */
.review-stars-input .star-btn{background:none;border:none;padding:0 2px;font-size:18px;line-height:1;cursor:pointer;color:#d1d5db;transition:color .15s,transform .15s;}
.review-stars-input .star-btn.active,.review-stars-input .star-btn:hover,.review-stars-input .star-btn:focus{color:#f5b301;outline:none;}
.review-stars-input .star-btn:active{transform:scale(.85);} 
.review-item .stars{color:#f5b301;font-size:.7rem;letter-spacing:1px;}
/* Note moyenne */
.rating-summary{margin-top:4px;font-size:.85rem;font-weight:600;color:#f5b301;display:flex;align-items:center;gap:6px;letter-spacing:1px;}
.rating-summary .rating-num{color:#334155;font-weight:500;font-size:.7rem;letter-spacing:0;}
/* Note moyenne inline dans le titre */
.rating-summary-inline{display:inline-block;font-size:.8rem;font-weight:600;color:#f5b301;line-height:1;margin-left:8px;vertical-align:baseline;}
.rating-summary-inline .rating-num{color:#334155;font-weight:500;font-size:.65rem;letter-spacing:0;}
/* Note à l'intérieur du badge dispo */
/* (supprimé: rating-badge-inline n'est plus utilisé) */
