:root{--primary:#00b4d8;--primary-dark:#0077a8;--primary-light:#90e0ef;--accent:#f7b731;--accent-dark:#e0a000;--bg:#0a1628;--bg2:#0d1f3c;--bg3:#112347;--card:rgba(255,255,255,.04);--card-border:rgba(0,180,216,.2);--text:#e8f4f8;--text-muted:#8ab4c4;--success:#2ecc71;--warning:#f7b731;--danger:#e74c3c;--radius:14px;--shadow:0 8px 32px rgba(0,0,0,.4)}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Nunito',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden}
body::before{content:'';position:fixed;inset:0;background:radial-gradient(ellipse 80% 50% at 20% 10%,rgba(0,180,216,.12) 0%,transparent 60%),radial-gradient(ellipse 60% 40% at 80% 80%,rgba(0,119,168,.1) 0%,transparent 60%);pointer-events:none;z-index:0}
.bubbles{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.bubble{position:absolute;border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(0,180,216,.3),rgba(144,224,239,.05));border:1px solid rgba(0,180,216,.2);animation:floatBubble linear infinite}
@keyframes floatBubble{0%{transform:translateY(110vh) scale(.5);opacity:0}10%{opacity:1}90%{opacity:.4}100%{transform:translateY(-10vh) scale(1);opacity:0}}
#app{position:relative;z-index:1;min-height:100vh}
/* NAV */
.nav{display:flex;align-items:center;justify-content:space-between;padding:16px 32px;background:rgba(10,22,40,.9);backdrop-filter:blur(20px);border-bottom:1px solid var(--card-border);position:sticky;top:0;z-index:100}
.nav-logo{font-family:'Exo 2',sans-serif;font-weight:900;font-size:1.4rem;background:linear-gradient(135deg,var(--primary),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.nav-links{display:flex;gap:8px;align-items:center}
.nav-btn{padding:8px 16px;border-radius:8px;border:none;cursor:pointer;font-family:'Nunito',sans-serif;font-weight:600;font-size:.9rem;transition:all .2s;background:transparent;color:var(--text-muted);text-decoration:none;display:inline-flex;align-items:center}
.nav-btn:hover{color:var(--text);background:var(--card)}
.nav-btn.active{color:var(--primary)}
.nav-btn.primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;padding:8px 20px}
.nav-btn.primary:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(0,180,216,.4)}
/* PAGES */
.page{display:none;animation:fadeIn .3s ease}
.page.active{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
/* HERO */
.hero{text-align:center;padding:80px 32px 60px;max-width:900px;margin:0 auto}
.hero-badge{display:inline-block;background:rgba(0,180,216,.1);border:1px solid var(--card-border);color:var(--primary-light);padding:6px 18px;border-radius:20px;font-size:.85rem;font-weight:600;margin-bottom:24px}
.hero h1{font-family:'Exo 2',sans-serif;font-weight:900;font-size:clamp(2.4rem,6vw,4rem);line-height:1.05;margin-bottom:20px;background:linear-gradient(135deg,#fff 40%,var(--primary-light));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.hero p{font-size:1.15rem;color:var(--text-muted);max-width:600px;margin:0 auto 40px;line-height:1.7}
.hero-cta{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
/* BTN */
.btn{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;border-radius:10px;border:none;cursor:pointer;font-family:'Nunito',sans-serif;font-weight:700;font-size:1rem;transition:all .25s;text-decoration:none}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;box-shadow:0 4px 20px rgba(0,180,216,.35)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(0,180,216,.5)}
.btn-outline{background:transparent;color:var(--text);border:1.5px solid var(--card-border)}
.btn-outline:hover{border-color:var(--primary);color:var(--primary);background:rgba(0,180,216,.05)}
.btn-accent{background:linear-gradient(135deg,var(--accent),var(--accent-dark));color:#1a1a00;font-weight:800}
.btn-accent:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(247,183,49,.4)}
.btn-sm{padding:8px 16px;font-size:.85rem}
.btn-danger{background:var(--danger);color:#fff}
.btn-success{background:var(--success);color:#fff}
.btn-full{width:100%;justify-content:center}
/* SECTION */
.section{max-width:1100px;margin:0 auto;padding:0 24px 60px}
.section-title{font-family:'Exo 2',sans-serif;font-size:1.8rem;font-weight:800;margin-bottom:8px}
.section-subtitle{color:var(--text-muted);margin-bottom:32px}
/* SERVICES */
.services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-bottom:40px}
.service-card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:28px;transition:all .3s;position:relative;overflow:hidden}
.service-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--primary),var(--accent));transform:scaleX(0);transition:transform .3s}
.service-card:hover{border-color:var(--primary);transform:translateY(-4px);box-shadow:0 16px 40px rgba(0,180,216,.15)}
.service-card:hover::before{transform:scaleX(1)}
.service-icon{font-size:2.5rem;margin-bottom:16px}
.service-name{font-family:'Exo 2',sans-serif;font-size:1.2rem;font-weight:700;margin-bottom:6px}
.service-desc{font-size:.9rem;color:var(--text-muted);margin-bottom:20px;line-height:1.5}
.service-price{font-family:'Exo 2',sans-serif;font-size:2rem;font-weight:900;background:linear-gradient(135deg,var(--accent),#ff9f43);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
/* FEATURES */
.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.feature-item{display:flex;align-items:flex-start;gap:14px;background:var(--card);border:1px solid var(--card-border);border-radius:10px;padding:18px}
.feature-icon{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,rgba(0,180,216,.2),rgba(0,180,216,.05));display:flex;align-items:center;justify-content:center;font-size:1.2rem;flex-shrink:0}
.feature-text{font-size:.95rem;font-weight:600}
.feature-sub{font-size:.82rem;color:var(--text-muted);margin-top:2px}
/* CONTACT */
.contact-banner{background:linear-gradient(135deg,rgba(0,180,216,.1),rgba(247,183,49,.08));border:1px solid rgba(0,180,216,.25);border-radius:var(--radius);padding:32px;text-align:center;margin-top:40px}
.contact-banner h3{font-family:'Exo 2',sans-serif;font-size:1.4rem;font-weight:800;margin-bottom:8px}
.contact-tel{font-family:'Exo 2',sans-serif;font-size:2rem;font-weight:900;color:var(--accent);margin:12px 0}
/* AUTH */
.auth-container{max-width:480px;margin:60px auto;padding:0 24px}
.auth-card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:40px}
.auth-title{font-family:'Exo 2',sans-serif;font-size:1.8rem;font-weight:800;margin-bottom:6px}
.auth-subtitle{color:var(--text-muted);margin-bottom:32px;font-size:.95rem}
/* FORM */
.form-group{margin-bottom:18px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
label{display:block;font-size:.88rem;font-weight:600;color:var(--text-muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.4px}
input,select,textarea{width:100%;background:rgba(255,255,255,.05);border:1.5px solid rgba(255,255,255,.1);border-radius:8px;padding:12px 14px;color:var(--text);font-family:'Nunito',sans-serif;font-size:.95rem;transition:border-color .2s;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--primary);background:rgba(0,180,216,.05)}
select option{background:var(--bg2)}
textarea{resize:vertical;min-height:80px}
.form-link{text-align:center;margin-top:20px;font-size:.9rem;color:var(--text-muted)}
.form-link a{color:var(--primary);cursor:pointer;font-weight:600}
/* DASHBOARD */
.dashboard{max-width:1100px;margin:0 auto;padding:32px 24px}
.dash-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px;flex-wrap:wrap;gap:16px}
.dash-greeting{font-family:'Exo 2',sans-serif;font-size:1.6rem;font-weight:800}
.dash-greeting span{color:var(--primary)}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:32px}
.stat-card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:22px;position:relative;overflow:hidden}
.stat-card::after{content:attr(data-icon);position:absolute;right:16px;top:16px;font-size:2rem;opacity:.15}
.stat-label{font-size:.82rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:8px;font-weight:600}
.stat-value{font-family:'Exo 2',sans-serif;font-size:2rem;font-weight:900;color:var(--primary)}
.stat-value.accent{color:var(--accent)}
.stat-value.success{color:var(--success)}
/* RDV LIST */
.rdv-list{display:flex;flex-direction:column;gap:12px}
.rdv-card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:20px;display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center}
.rdv-date{text-align:center;background:linear-gradient(135deg,rgba(0,180,216,.15),rgba(0,180,216,.05));border-radius:10px;padding:12px 16px;min-width:80px}
.rdv-date-day{font-family:'Exo 2',sans-serif;font-size:1.6rem;font-weight:900;color:var(--primary);line-height:1}
.rdv-date-month{font-size:.75rem;text-transform:uppercase;color:var(--text-muted);font-weight:600}
.rdv-date-time{font-size:.88rem;color:var(--text);font-weight:600;margin-top:4px}
.rdv-info h3{font-family:'Exo 2',sans-serif;font-weight:700;font-size:1.1rem;margin-bottom:4px}
.rdv-info p{font-size:.88rem;color:var(--text-muted)}
.rdv-actions{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.rdv-price{font-family:'Exo 2',sans-serif;font-weight:800;font-size:1.2rem;color:var(--accent)}
/* BADGES */
.badge{display:inline-block;padding:4px 10px;border-radius:6px;font-size:.78rem;font-weight:700;text-transform:uppercase}
.badge-pending{background:rgba(247,183,49,.15);color:var(--warning);border:1px solid rgba(247,183,49,.3)}
.badge-confirmed{background:rgba(0,180,216,.15);color:var(--primary);border:1px solid rgba(0,180,216,.3)}
.badge-progress{background:rgba(52,152,219,.15);color:#3498db;border:1px solid rgba(52,152,219,.3)}
.badge-done{background:rgba(46,204,113,.15);color:var(--success);border:1px solid rgba(46,204,113,.3)}
.badge-cancelled{background:rgba(231,76,60,.15);color:var(--danger);border:1px solid rgba(231,76,60,.3)}
/* BOOKING */
.booking-container{max-width:680px;margin:0 auto;padding:32px 24px}
.booking-steps{display:flex;margin-bottom:36px;border-radius:10px;overflow:hidden;border:1px solid var(--card-border)}
.step{flex:1;text-align:center;padding:12px 8px;background:var(--card);font-size:.82rem;font-weight:700;color:var(--text-muted);border-right:1px solid var(--card-border)}
.step:last-child{border-right:none}
.step.active{background:rgba(0,180,216,.15);color:var(--primary)}
.step.done{background:rgba(46,204,113,.1);color:var(--success)}
.booking-card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:32px}
.options-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-top:10px}
.option-item{background:rgba(255,255,255,.03);border:1.5px solid rgba(255,255,255,.08);border-radius:8px;padding:12px;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:10px}
.option-item:hover{border-color:var(--primary)}
.option-item.selected{border-color:var(--primary);background:rgba(0,180,216,.08)}
.slots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;margin-top:10px}
.slot-btn{padding:10px;border-radius:8px;border:1.5px solid rgba(255,255,255,.1);background:rgba(255,255,255,.03);color:var(--text);cursor:pointer;font-family:'Exo 2',sans-serif;font-weight:700;font-size:.9rem;transition:all .2s}
.slot-btn:hover:not(.disabled){border-color:var(--primary);background:rgba(0,180,216,.1)}
.slot-btn.selected{border-color:var(--primary);background:rgba(0,180,216,.2);color:var(--primary)}
.slot-btn.disabled{opacity:.3;cursor:not-allowed}
/* ADMIN */
.admin-layout{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 65px)}
.admin-sidebar{background:var(--bg2);border-right:1px solid var(--card-border);padding:24px 0}
.sidebar-item{display:flex;align-items:center;gap:12px;padding:12px 24px;cursor:pointer;color:var(--text-muted);font-weight:600;transition:all .2s;border-left:3px solid transparent;font-size:.95rem}
.sidebar-item:hover{background:var(--card);color:var(--text)}
.sidebar-item.active{color:var(--primary);background:rgba(0,180,216,.08);border-left-color:var(--primary)}
.admin-content{padding:32px;overflow-y:auto}
.admin-section{display:none}
.admin-section.active{display:block;animation:fadeIn .3s ease}
/* TABLE */
.table-container{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);overflow:hidden}
table{width:100%;border-collapse:collapse}
thead tr{background:rgba(255,255,255,.03)}
th{padding:12px 16px;text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-weight:700;border-bottom:1px solid var(--card-border)}
td{padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.04);font-size:.92rem;vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:rgba(255,255,255,.02)}
/* FILTERS */
.filters{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}
.filter-select{background:var(--card);border:1px solid var(--card-border);border-radius:8px;padding:8px 12px;color:var(--text);font-family:'Nunito',sans-serif;font-size:.9rem;cursor:pointer}
/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .2s ease}
.modal{background:var(--bg2);border:1px solid var(--card-border);border-radius:var(--radius);padding:32px;max-width:520px;width:100%;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease}
@keyframes slideUp{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}
.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}
.modal-title{font-family:'Exo 2',sans-serif;font-size:1.3rem;font-weight:800}
.modal-close{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:1.4rem;transition:color .2s}
.modal-close:hover{color:var(--danger)}
/* TOAST */
#toast-container{position:fixed;bottom:24px;right:24px;z-index:2000;display:flex;flex-direction:column;gap:8px}
.toast{padding:14px 20px;border-radius:10px;font-weight:600;font-size:.9rem;min-width:280px;animation:toastIn .3s ease;box-shadow:var(--shadow)}
@keyframes toastIn{from{transform:translateX(100px);opacity:0}to{transform:translateX(0);opacity:1}}
.toast-success{background:rgba(46,204,113,.9);color:#fff;border:1px solid rgba(46,204,113,.5)}
.toast-error{background:rgba(231,76,60,.9);color:#fff;border:1px solid rgba(231,76,60,.5)}
.toast-info{background:rgba(0,180,216,.9);color:#fff;border:1px solid rgba(0,180,216,.5)}
/* MISC */
.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}
.empty-icon{font-size:3rem;margin-bottom:16px;opacity:.5}
.empty-title{font-family:'Exo 2',sans-serif;font-size:1.1rem;font-weight:700;margin-bottom:8px;color:var(--text)}
.loading{display:flex;align-items:center;justify-content:center;gap:8px;padding:40px;color:var(--text-muted)}
.spinner{width:24px;height:24px;border:3px solid rgba(0,180,216,.2);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.divider{height:1px;background:var(--card-border);margin:24px 0}
.summary-box{background:rgba(0,180,216,.06);border:1px solid rgba(0,180,216,.2);border-radius:10px;padding:20px;margin-top:20px}
.summary-row{display:flex;justify-content:space-between;padding:6px 0;font-size:.95rem}
.summary-total{font-family:'Exo 2',sans-serif;font-size:1.4rem;font-weight:900;color:var(--accent)}
.inline-tabs{display:flex;gap:4px;margin-bottom:24px;background:var(--card);border-radius:10px;padding:4px;border:1px solid var(--card-border)}
.inline-tab{flex:1;padding:8px 16px;border-radius:8px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-family:'Nunito',sans-serif;font-weight:600;transition:all .2s;font-size:.9rem}
.inline-tab.active{background:rgba(0,180,216,.2);color:var(--primary)}
/* RESPONSIVE */
@media(max-width:768px){
  .nav{padding:12px 16px}
  .form-row{grid-template-columns:1fr}
  .admin-layout{grid-template-columns:1fr}
  .admin-sidebar{display:none}
  .rdv-card{grid-template-columns:1fr}
  .rdv-actions{flex-direction:row;align-items:center}
  th,td{padding:10px}
}

/* ========== Styles pour les cartes d'offres (page publique) ========== */
.services-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 20px;
    margin: 20px 0;
}

.service-card {
    background: white;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 20px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    transition: transform 0.2s, box-shadow 0.2s;
}

.service-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

.service-card h3 {
    margin-top: 0;
    color: #333;
    font-size: 1.2rem;
}

.service-card p {
    color: #666;
    margin-bottom: 15px;
    line-height: 1.5;
}

.service-price {
    font-weight: bold;
    color: var(--primary);
    font-size: 1.2rem;
    margin: 10px 0;
}

.service-card .btn {
    width: 100%;
    margin-top: 10px;
}

/* ========== Styles pour les tables admin ========== */
.admin-table {
    width: 100%;
    border-collapse: collapse;
    margin: 20px 0;
}

.admin-table th, .admin-table td {
    padding: 12px 15px;
    text-align: left;
    border-bottom: 1px solid #ddd;
}

.admin-table th {
    background-color: #f8f9fa;
    font-weight: 600;
}

.admin-table tr:hover {
    background-color: #f5f5f5;
}

.admin-table .btn {
    padding: 6px 12px;
    font-size: 0.8rem;
    margin-right: 5px;
}

.btn-outline {
    background: transparent;
    border: 1px solid var(--primary);
    color: var(--primary);
}

.btn-danger {
    background-color: #ff4444;
    color: white;
    border: none;
}

/* ========== Styles pour les formulaires admin ========== */
.admin-form {
    margin-bottom: 20px;
    padding: 20px;
    background: #f9f9f9;
    border-radius: 8px;
}

.admin-form .form-group {
    margin-bottom: 15px;
}

.admin-form .form-group label {
    display: block;
    margin-bottom: 5px;
    font-weight: 600;
}

.admin-form .form-group input,
.admin-form .form-group textarea,
.admin-form .form-group select {
    width: 100%;
    padding: 8px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
}

.admin-form .form-group textarea {
    min-height: 100px;
    resize: vertical;
}

/* ========== Styles pour le modal ========== */
.modal {
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    display: flex;
    justify-content: center;
    align-items: center;
}

.modal-content {
    background-color: white;
    padding: 25px;
    border-radius: 8px;
    width: 500px;
    max-width: 90%;
    position: relative;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.close-modal {
    position: absolute;
    top: 10px;
    right: 15px;
    font-size: 24px;
    cursor: pointer;
    color: #666;
}

.close-modal:hover {
    color: #333;
}

/* ========== Animation de chargement ========== */
.loading {
    text-align: center;
    padding: 20px;
    color: #666;
}

.spinner {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 3px solid rgba(0, 0, 0, 0.1);
    border-radius: 50%;
    border-top-color: var(--primary);
    animation: spin 1s ease-in-out infinite;
    margin-right: 10px;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* ========== Styles pour les boutons ========== */
.btn {
    display: inline-block;
    padding: 8px 16px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.9rem;
    font-weight: 500;
    transition: background-color 0.2s, transform 0.1s;
}

.btn:hover {
    transform: translateY(-1px);
}

.btn-primary {
    background-color: var(--primary);
    color: white;
}

.btn-primary:hover {
    background-color: #0056b3;
}

.btn-sm {
    padding: 5px 10px;
    font-size: 0.8rem;
}
