:root {
    --bg: #fff7fb;
    --panel: #ffffff;
    --text: #4a2337;
    --muted: #8b6a7b;
    --border: #efd8e4;
    --pink: #d73b93;
    --pink-dark: #8c1655;
    --pink-soft: #fde4f2;
    --success: #1f8b63;
    --danger: #b53655;
    --shadow: 0 20px 55px rgba(112, 24, 70, 0.10);
}

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    min-height: 100vh;
    font-family: Arial, sans-serif;
    color: var(--text);
    background: var(--bg);
}

a {
    color: inherit;
}

.auth-page {
    display: grid;
    place-items: center;
    padding: 24px;
    background:
        radial-gradient(circle at top left, #ffe7f4, transparent 35%),
        linear-gradient(135deg, #fffafd, #f8ddec);
}

.auth-card {
    width: min(460px, 100%);
    padding: 38px;
    border: 1px solid var(--border);
    border-radius: 28px;
    background: rgba(255,255,255,.94);
    box-shadow: var(--shadow);
}

h1, h2, p {
    margin-top: 0;
}

.eyebrow {
    margin-bottom: 8px;
    color: var(--pink);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 1.6px;
    text-transform: uppercase;
}

.muted {
    color: var(--muted);
}

form {
    display: grid;
    gap: 18px;
}

label {
    display: grid;
    gap: 8px;
    font-size: 14px;
    font-weight: 700;
}

input, textarea, select {
    width: 100%;
    padding: 13px 14px;
    border: 1px solid var(--border);
    border-radius: 13px;
    background: #fff;
    color: var(--text);
    font: inherit;
}

input:focus, textarea:focus, select:focus {
    outline: 3px solid rgba(215,59,147,.14);
    border-color: var(--pink);
}

button, .secondary-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 12px 20px;
    border: 0;
    border-radius: 999px;
    background: linear-gradient(135deg, var(--pink), var(--pink-dark));
    color: #fff;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
}

.secondary-button {
    background: var(--pink-soft);
    color: var(--pink-dark);
}

.alert {
    margin-bottom: 18px;
    padding: 14px 16px;
    border-radius: 13px;
}

.alert.success {
    background: #e8f8f1;
    color: var(--success);
}

.alert.error {
    background: #fff0f3;
    color: var(--danger);
}

.admin-layout {
    min-height: 100vh;
    display: grid;
    grid-template-columns: 260px 1fr;
}

.sidebar {
    position: sticky;
    top: 0;
    height: 100vh;
    padding: 30px 22px;
    display: flex;
    flex-direction: column;
    background: linear-gradient(180deg, #66113e, #3d0a27);
    color: #fff;
}

.sidebar nav {
    display: grid;
    gap: 8px;
    margin-top: 30px;
}

.sidebar nav a,
.logout-link {
    padding: 12px 14px;
    border-radius: 12px;
    color: rgba(255,255,255,.88);
    text-decoration: none;
}

.sidebar nav a:hover,
.logout-link:hover {
    background: rgba(255,255,255,.10);
}

.logout-link {
    margin-top: auto;
}

.admin-main {
    min-width: 0;
}

.topbar {
    min-height: 84px;
    padding: 18px 34px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid var(--border);
    background: rgba(255,255,255,.88);
    backdrop-filter: blur(12px);
}

.content {
    padding: 34px;
}

.page-heading {
    margin-bottom: 24px;
}

.stat-grid,
.menu-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
}

.stat-card,
.panel,
.menu-grid a {
    border: 1px solid var(--border);
    border-radius: 20px;
    background: var(--panel);
    box-shadow: var(--shadow);
}

.stat-card {
    padding: 22px;
}

.stat-card span {
    display: block;
    color: var(--muted);
    font-size: 13px;
}

.stat-card strong {
    display: block;
    margin-top: 10px;
    font-size: 34px;
}

.panel {
    margin-top: 24px;
    padding: 26px;
}

.menu-grid {
    margin-top: 18px;
}

.menu-grid a {
    padding: 20px;
    text-decoration: none;
}

.menu-grid strong,
.menu-grid span {
    display: block;
}

.menu-grid span {
    margin-top: 8px;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.5;
}

.form-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.full {
    grid-column: 1 / -1;
}

@media (max-width: 980px) {
    .stat-grid,
    .menu-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .admin-layout {
        grid-template-columns: 1fr;
    }

    .sidebar {
        position: static;
        height: auto;
    }

    .sidebar nav {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .logout-link {
        margin-top: 20px;
    }

    .topbar,
    .content {
        padding-left: 18px;
        padding-right: 18px;
    }

    .form-grid,
    .stat-grid,
    .menu-grid {
        grid-template-columns: 1fr;
    }
}



/* À AJOUTER À LA FIN DE assets/css/admin.css */

.page-heading-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
}

.primary-button,
.save-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 12px 20px;
    border: 0;
    border-radius: 999px;
    color: #fff;
    background: linear-gradient(135deg, var(--pink), var(--pink-dark));
    box-shadow: 0 12px 28px rgba(140, 22, 85, 0.22);
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
}

.ghost-button,
.danger-button {
    min-height: 40px;
    padding: 9px 14px;
    border-radius: 999px;
    font-weight: 700;
}

.ghost-button {
    border: 1px solid var(--border);
    color: var(--pink-dark);
    background: #fff;
}

.danger-button {
    border: 1px solid #f2c4d0;
    color: var(--danger);
    background: #fff4f7;
}

.inline-form {
    display: inline;
}

.prestations-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
}

.prestation-card {
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 24px;
    background: var(--panel);
    box-shadow: var(--shadow);
}

.prestation-image {
    position: relative;
    height: 245px;
    overflow: hidden;
    background: var(--pink-soft);
}

.prestation-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.image-placeholder {
    width: 100%;
    height: 100%;
    display: grid;
    place-items: center;
    font-size: 52px;
    background: linear-gradient(135deg, #ffeaf5, #f4bbd8);
}

.status-badge {
    position: absolute;
    top: 16px;
    right: 16px;
    padding: 8px 12px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 800;
}

.status-badge.active {
    color: #14664a;
    background: rgba(232, 248, 241, 0.94);
}

.status-badge.inactive {
    color: #7c596a;
    background: rgba(255, 255, 255, 0.92);
}

.prestation-body {
    padding: 22px;
}

.prestation-heading {
    display: flex;
    justify-content: space-between;
    gap: 18px;
}

.order-label {
    color: var(--pink);
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
}

.price {
    white-space: nowrap;
    color: var(--pink-dark);
    font-size: 20px;
}

.duration {
    color: var(--pink);
    font-size: 13px;
    font-weight: 700;
}

.prestation-intro {
    color: var(--muted);
    line-height: 1.6;
}

.card-actions {
    margin-top: 20px;
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
}

.empty-state {
    padding: 55px 25px;
    text-align: center;
}

.editor-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 24px;
    align-items: start;
}

.editor-layout .panel {
    margin-top: 0;
}

.editor-sidebar {
    display: grid;
    gap: 20px;
}

.single-column {
    grid-template-columns: 1fr;
}

.current-image {
    margin: 15px 0;
    overflow: hidden;
    border-radius: 18px;
}

.current-image img {
    width: 100%;
    max-height: 260px;
    display: block;
    object-fit: cover;
}

.switch-row {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px;
    border: 1px solid var(--border);
    border-radius: 15px;
    background: #fffafd;
}

.switch-row input {
    width: 20px;
    height: 20px;
    accent-color: var(--pink);
}

.switch-row span,
.switch-row strong,
.switch-row small {
    display: block;
}

.save-button {
    width: 100%;
}

.sidebar nav a.active {
    color: #fff;
    background: rgba(255, 255, 255, 0.16);
}

@media (max-width: 1050px) {
    .editor-layout {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 850px) {
    .prestations-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 650px) {
    .page-heading-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .editor-sidebar {
        grid-template-columns: 1fr;
    }

    .card-actions,
    .card-actions .secondary-button,
    .card-actions .inline-form,
    .card-actions button {
        width: 100%;
    }
}


/* À AJOUTER À LA FIN DE assets/css/admin.css */
.gallery-upload-panel{margin-bottom:24px}
.dropzone{position:relative;min-height:230px;padding:35px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;border:2px dashed #e5abc9;border-radius:22px;color:var(--pink-dark);background:linear-gradient(135deg,#fffafd,#fdeaf4);text-align:center;cursor:pointer;transition:.2s}
.dropzone:hover,.dropzone.is-dragging{border-color:var(--pink);background:#fde1f0;transform:translateY(-2px)}
.dropzone input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.dropzone-icon{font-size:42px}
.dropzone strong{font-size:18px}
.dropzone span,.dropzone small{color:var(--muted)}
.selected-files{margin-top:18px;display:grid;gap:8px}
.selected-file-item{padding:11px 14px;display:flex;justify-content:space-between;gap:15px;border:1px solid var(--border);border-radius:12px;background:#fff}
.selected-file-item small{color:var(--muted)}
.upload-progress-wrap{margin:22px 0}
.upload-progress-header{margin-bottom:9px;display:flex;justify-content:space-between;gap:15px}
.upload-progress{height:14px;overflow:hidden;border-radius:999px;background:#f3dce8}
.upload-progress-bar{width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--pink),var(--pink-dark));transition:width .15s}
.gallery-admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.gallery-admin-card{overflow:hidden;border:1px solid var(--border);border-radius:22px;background:var(--panel);box-shadow:var(--shadow)}
.gallery-admin-image{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--pink-soft)}
.gallery-admin-image img{width:100%;height:100%;object-fit:cover}.gallery-admin-body{padding:18px}
.gallery-admin-body h2{margin:6px 0 0;font-size:18px}
.gallery-edit-preview img{width:100%;max-height:720px;object-fit:contain;background:#f8edf3}@media(max-width:1100px){.gallery-admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){
    .gallery-admin-grid{grid-template-columns:1fr}
    .dropzone{min-height:190px;padding:25px 18px}
    .selected-file-item{flex-direction:column;gap:4px}
}


/* À AJOUTER À LA FIN DE assets/css/admin.css */
.review-stats{margin-bottom:24px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.review-stat{padding:20px;display:flex;align-items:center;justify-content:space-between;gap:15px;border:1px solid var(--border);border-radius:20px;color:inherit;background:var(--panel);box-shadow:var(--shadow);text-decoration:none;transition:.2s ease}
.review-stat:hover,.review-stat.active{border-color:#e6abc9;background:linear-gradient(135deg,#fffafd,#fdeaf4);transform:translateY(-2px)}
.review-stat span{color:var(--muted);font-weight:700}
.review-stat strong{color:var(--pink-dark);font-size:28px}
.reviews-list{display:grid;gap:18px}
.review-card{padding:24px;border:1px solid var(--border);border-radius:22px;background:var(--panel);box-shadow:var(--shadow)}
.review-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:22px}
.review-card h2{margin:12px 0 5px;font-size:21px}
.review-stars{display:flex;gap:3px;color:#ddd0d7;font-size:19px}
.review-stars .filled{color:#d89a25}
.review-meta{display:grid;justify-items:end;gap:5px;color:var(--muted);font-size:12px}
.review-card blockquote{margin:22px 0 0;padding:19px 21px;border-left:4px solid var(--pink);border-radius:0 16px 16px 0;color:#5f4a56;background:#fff8fc;font-family:Georgia,serif;font-size:17px;font-style:italic;line-height:1.7}
.review-preview-stars{margin-top:17px;padding:14px;border-radius:14px;color:#d89a25;background:#fff8e7;font-size:23px;letter-spacing:3px;text-align:center}
@media(max-width:750px){.review-stats{grid-template-columns:1fr}.review-card-top{flex-direction:column}.review-meta{justify-items:start}}





/* À AJOUTER À LA FIN DE assets/css/admin.css */

.reservation-stats {
    margin-bottom: 24px;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
}

.reservation-stat {
    padding: 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
    border: 1px solid var(--border);
    border-radius: 20px;
    color: inherit;
    background: var(--panel);
    box-shadow: var(--shadow);
    text-decoration: none;
    transition: .2s ease;
}

.reservation-stat:hover {
    border-color: #e6abc9;
    background: linear-gradient(135deg, #fffafd, #fdeaf4);
    transform: translateY(-2px);
}

.reservation-stat span {
    color: var(--muted);
    font-weight: 700;
}

.reservation-stat strong {
    color: var(--pink-dark);
    font-size: 28px;
}

.reservation-filters {
    margin-bottom: 24px;
}

.reservation-filter-form {
    display: grid;
    grid-template-columns: 180px 180px minmax(220px, 1fr) auto auto;
    gap: 14px;
    align-items: end;
}

.filter-search {
    min-width: 0;
}

.reset-filter {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    text-decoration: none;
}

.reservations-list {
    display: grid;
    gap: 18px;
}

.reservation-card {
    display: grid;
    grid-template-columns: 105px minmax(0, 1fr);
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 22px;
    background: var(--panel);
    box-shadow: var(--shadow);
}

.reservation-date-block {
    padding: 24px 15px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: #fff;
    background: linear-gradient(160deg, var(--pink), var(--pink-dark));
    text-align: center;
}

.reservation-date-block strong {
    font-size: 38px;
    line-height: 1;
}

.reservation-date-block span {
    margin-top: 6px;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: 1px;
}

.reservation-date-block small {
    margin-top: 4px;
    opacity: .8;
}

.reservation-main {
    padding: 22px;
}

.reservation-title-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
}

.reservation-time {
    display: inline-block;
    margin-bottom: 4px;
    color: var(--pink);
    font-size: 20px;
    font-weight: 800;
}

.reservation-title-row h2 {
    margin: 0;
    font-size: 22px;
}

.reservation-service {
    margin: 7px 0 0;
    color: var(--muted);
    font-weight: 700;
}

.reservation-status {
    padding: 8px 12px;
    border-radius: 999px;
    white-space: nowrap;
    font-size: 11px;
    font-weight: 800;
}

.reservation-status.pending {
    color: #865d13;
    background: #fff4cf;
}

.reservation-status.confirmed {
    color: #14664a;
    background: #e8f8f1;
}

.reservation-status.completed {
    color: #315a78;
    background: #eaf4fb;
}

.reservation-status.cancelled {
    color: #9d3453;
    background: #fff0f4;
}

.reservation-details {
    margin-top: 17px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
}

.reservation-details a,
.reservation-details span {
    color: var(--muted);
    text-decoration: none;
    font-size: 13px;
}

.reservation-message {
    margin-top: 17px;
    padding: 15px 17px;
    border-radius: 14px;
    color: #65515c;
    background: #fff8fc;
    line-height: 1.6;
}

.reservation-actions {
    margin-top: 20px;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 9px;
}

.reservation-status-form select {
    min-height: 40px;
    padding: 8px 35px 8px 12px;
    border-radius: 999px;
}

@media (max-width: 1100px) {
    .reservation-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .reservation-filter-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .filter-search {
        grid-column: 1 / -1;
    }
}

@media (max-width: 700px) {
    .reservation-stats {
        grid-template-columns: 1fr;
    }

    .reservation-filter-form {
        grid-template-columns: 1fr;
    }

    .filter-search {
        grid-column: auto;
    }

    .reservation-card {
        grid-template-columns: 1fr;
    }

    .reservation-date-block {
        padding: 15px;
        flex-direction: row;
        gap: 8px;
    }

    .reservation-date-block strong {
        font-size: 25px;
    }

    .reservation-title-row {
        flex-direction: column;
    }

    .reservation-actions,
    .reservation-actions > *,
    .reservation-actions button,
    .reservation-actions select {
        width: 100%;
    }
}

/* À AJOUTER À LA FIN DE assets/css/admin.css */
.availability-panel{margin-bottom:24px}.availability-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.availability-table{display:grid;gap:12px}.availability-row{display:grid;grid-template-columns:150px repeat(5,minmax(110px,1fr));gap:12px;align-items:end;padding:16px;border:1px solid var(--border);border-radius:16px;background:#fffafd}.availability-row label{margin:0}.day-toggle{display:flex;align-items:center;gap:10px;align-self:center}.day-toggle input{width:auto}.availability-columns{display:grid;grid-template-columns:minmax(280px,.7fr) minmax(0,1.3fr);gap:24px}.blocked-list{display:grid;gap:10px}.blocked-item{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:14px;border:1px solid var(--border);border-radius:14px}.blocked-item small{display:block;margin-top:4px;color:var(--muted)}@media(max-width:1100px){.availability-row{grid-template-columns:repeat(3,1fr)}.day-toggle{grid-column:1/-1}.availability-columns{grid-template-columns:1fr}}@media(max-width:650px){.availability-heading{align-items:flex-start;flex-direction:column}.availability-row{grid-template-columns:1fr 1fr}.day-toggle{grid-column:1/-1}.blocked-item{align-items:flex-start;flex-direction:column}}


.tarif-admin-list{display:grid;gap:12px;margin-bottom:14px}.tarif-admin-row{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;padding:12px;border:1px solid var(--border);border-radius:14px;background:#fffafd}.tarif-admin-row label{margin:0}.photo-admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}.photo-admin-card{border:1px solid var(--border);border-radius:16px;padding:12px;background:#fff}.photo-admin-card img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px}.photo-admin-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}@media(max-width:700px){.tarif-admin-row{grid-template-columns:1fr 1fr}.tarif-admin-row button{grid-column:1/-1}}
