:root{
  --admin-bg:#eef2f7;
  --admin-surface:#ffffff;
  --admin-surface-soft:#f8fafc;
  --admin-line:#dbe3ed;
  --admin-line-strong:#cbd6e3;
  --admin-text:#162033;
  --admin-muted:#67758a;
  --admin-primary:#295caa;
  --admin-primary-strong:#1e447e;
  --admin-accent:#0f8b8d;
  --admin-sidebar:#111b2e;
  --admin-sidebar-2:#1a2740;
  --admin-sidebar-text:#eef4fb;
  --admin-sidebar-line:rgba(255,255,255,.08);
  --admin-shadow:0 18px 44px rgba(15,23,42,.08);
  --bs-body-font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --bs-primary:#295caa;
  --bs-primary-rgb:41,92,170;
  --bs-border-color:#dbe3ed;
}

*{box-sizing:border-box}

body.admin-body,
body.admin-login-body{
  margin:0;
  color:var(--admin-text);
  background:
    radial-gradient(circle at top right, rgba(41,92,170,.12), transparent 24rem),
    linear-gradient(180deg, #f7f9fc 0%, #eef2f7 100%);
  font-family:var(--bs-body-font-family);
}

a{text-decoration:none}

.admin-shell{
  display:grid;
  grid-template-columns:292px minmax(0,1fr);
  min-height:100vh;
}

.admin-sidebar{
  position:sticky;
  top:0;
  height:100vh;
  overflow:auto;
  padding:1.4rem 1.1rem;
  background:
    linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,0)),
    linear-gradient(180deg, var(--admin-sidebar) 0%, var(--admin-sidebar-2) 100%);
  color:var(--admin-sidebar-text);
  border-right:1px solid rgba(255,255,255,.04);
}

.admin-brand{
  padding:1.15rem 1.1rem;
  margin-bottom:1.25rem;
  border:1px solid rgba(255,255,255,.08);
  border-radius:24px;
  background:linear-gradient(135deg, rgba(255,255,255,.10), rgba(255,255,255,.04));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}

.admin-brand-title{
  font-size:1.06rem;
  font-weight:800;
  letter-spacing:-.02em;
}

.admin-brand-subtitle{
  margin-top:.28rem;
  color:#a8b7cc;
  font-size:.9rem;
}

.admin-menu-section{margin:1rem 0}

.admin-menu-title{
  margin:.8rem .5rem;
  color:#8393a9;
  font-size:.73rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.14em;
}

.admin-menu-list{margin:0;padding:0;list-style:none}

.admin-menu-link{
  display:flex;
  align-items:center;
  gap:.8rem;
  padding:.9rem 1rem;
  border-radius:18px;
  color:var(--admin-sidebar-text);
  transition:all .18s ease;
}

.admin-menu-link:hover,
.admin-menu-link.is-active{
  color:#fff;
  background:linear-gradient(135deg, rgba(41,92,170,.48), rgba(15,139,141,.22));
  box-shadow:0 10px 22px rgba(4,12,24,.22);
}

.admin-main{
  min-width:0;
  display:flex;
  flex-direction:column;
}

.admin-mobile-topbar{
  position:sticky;
  top:0;
  z-index:1040;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.9rem;
  padding:1rem;
  backdrop-filter:blur(14px);
  background:
    linear-gradient(135deg, rgba(255,255,255,.05), rgba(255,255,255,0)),
    linear-gradient(135deg, var(--admin-sidebar) 0%, #162641 52%, #1f4f83 100%);
  border-bottom:1px solid rgba(255,255,255,.08);
  box-shadow:0 18px 34px rgba(8,15,29,.22);
}

.admin-burger{
  width:52px;
  height:52px;
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  flex:0 0 auto;
  border:1px solid rgba(255,255,255,.14);
  border-radius:18px;
  background:linear-gradient(135deg, rgba(255,255,255,.16), rgba(255,255,255,.06));
  box-shadow:0 12px 28px rgba(3,8,18,.26);
}

.admin-burger span{
  width:20px;
  height:2px;
  border-radius:999px;
  background:#fff;
}

.admin-mobile-brand{
  min-width:0;
  flex:1 1 auto;
}

.admin-mobile-brand-title{
  font-size:1rem;
  font-weight:800;
  letter-spacing:-.02em;
  color:#fff;
}

.admin-mobile-brand-subtitle{
  color:#c4d0e0;
  font-size:.84rem;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.admin-mobile-logout{
  width:auto;
  flex:0 0 auto;
}

.admin-mobile-topbar .btn-outline-secondary{
  --bs-btn-color:#fff;
  --bs-btn-border-color:rgba(255,255,255,.18);
  --bs-btn-hover-color:var(--admin-text);
  --bs-btn-hover-bg:#fff;
  --bs-btn-hover-border-color:#fff;
  --bs-btn-active-color:var(--admin-text);
  --bs-btn-active-bg:#eef4fa;
  --bs-btn-active-border-color:#eef4fa;
  background:rgba(255,255,255,.06);
}

.admin-topbar{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:1rem;
  padding:1.5rem 1.5rem 1rem;
}

.admin-topbar-heading{
  min-width:0;
}

.admin-topbar-actions{
  min-width:min(100%, 28rem);
}

.admin-mairie-switch{
  padding:.7rem .8rem;
  border:1px solid rgba(22,32,51,.08);
  border-radius:18px;
  background:rgba(255,255,255,.68);
}

.admin-mairie-switch label{
  flex:0 0 auto;
  margin:0;
}

.admin-mairie-switch .form-select{
  min-width:13rem;
}

.admin-content{
  padding:0 1.5rem 1.5rem;
}

.admin-card,
.form-card,
.table-card{
  background:linear-gradient(180deg, rgba(255,255,255,.98), rgba(255,255,255,.92));
  border:1px solid rgba(255,255,255,.85);
  border-radius:26px;
  box-shadow:var(--admin-shadow);
}

.admin-card,
.form-card{padding:1.35rem}

.table-card{
  overflow:hidden;
  border-color:rgba(22,32,51,.06);
}

.table-responsive{
  -webkit-overflow-scrolling:touch;
}

.table-card .border-bottom{
  border-color:var(--admin-line)!important;
  background:linear-gradient(180deg, #fbfdff, #f4f7fb);
}

.table{
  --bs-table-bg:transparent;
  --bs-table-hover-bg:rgba(41,92,170,.04);
  margin-bottom:0;
}

.table-light,
.table thead th{
  background:var(--admin-surface-soft)!important;
}

.table td,
.table th{
  vertical-align:middle;
}

.form-control,
.form-select{
  min-height:48px;
  border-color:var(--admin-line);
  border-radius:16px;
  background:#fbfdff;
}

textarea.form-control{min-height:120px}

.form-control:focus,
.form-select:focus{
  border-color:rgba(41,92,170,.42);
  box-shadow:0 0 0 .24rem rgba(41,92,170,.12);
}

.btn{
  --bs-btn-font-weight:700;
  --bs-btn-border-radius:999px;
  letter-spacing:.01em;
}

.btn-primary{
  --bs-btn-bg:var(--admin-primary);
  --bs-btn-border-color:var(--admin-primary);
  --bs-btn-hover-bg:var(--admin-primary-strong);
  --bs-btn-hover-border-color:var(--admin-primary-strong);
  --bs-btn-active-bg:var(--admin-primary-strong);
  --bs-btn-active-border-color:var(--admin-primary-strong);
  box-shadow:0 12px 28px rgba(41,92,170,.18);
}

.btn-outline-primary{
  --bs-btn-color:var(--admin-primary);
  --bs-btn-border-color:rgba(41,92,170,.22);
  --bs-btn-hover-bg:var(--admin-primary);
  --bs-btn-hover-border-color:var(--admin-primary);
}

.btn-outline-secondary{
  --bs-btn-color:var(--admin-text);
  --bs-btn-border-color:var(--admin-line-strong);
  --bs-btn-hover-bg:#eff4fa;
  --bs-btn-hover-color:var(--admin-text);
  --bs-btn-hover-border-color:var(--admin-line-strong);
}

.btn-outline-danger{--bs-btn-border-color:rgba(220,53,69,.24)}

.badge-soft{
  display:inline-flex;
  align-items:center;
  padding:.42rem .74rem;
  border-radius:999px;
  background:rgba(41,92,170,.08);
  color:var(--admin-primary);
  font-size:.78rem;
  font-weight:700;
}

.html-editor{
  overflow:hidden;
  border:1px solid var(--admin-line);
  border-radius:18px;
  background:#fff;
}

.html-editor textarea{
  min-height:240px;
  border:0;
  border-radius:0;
  background:transparent;
}

.list-thumb{
  width:76px;
  height:76px;
  object-fit:cover;
  border-radius:18px;
  border:1px solid var(--admin-line);
  background:#eef2f7;
}

.service-icon{
  width:56px;
  height:56px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:18px;
  color:var(--admin-primary);
  background:linear-gradient(135deg, rgba(41,92,170,.12), rgba(15,139,141,.16));
}

.service-icon-picker{
  padding:1rem;
  border:1px solid var(--admin-line);
  border-radius:20px;
  background:linear-gradient(180deg, #fbfdff, #f5f8fc);
}

.service-icon-preview{
  display:flex;
  align-items:center;
  gap:.9rem;
  margin-bottom:1rem;
}

.service-icon-preview-badge{
  flex:0 0 auto;
}

.service-icon-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(56px, 1fr));
  gap:.7rem;
}

.service-icon-option{
  width:100%;
  min-height:56px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--admin-line);
  border-radius:16px;
  background:#fff;
  color:var(--admin-primary);
  font-size:1.2rem;
  transition:all .16s ease;
}

.service-icon-option:hover{
  transform:translateY(-2px);
  border-color:rgba(41,92,170,.34);
  box-shadow:0 10px 22px rgba(41,92,170,.10);
}

.service-icon-option.is-selected{
  color:#fff;
  border-color:transparent;
  background:linear-gradient(135deg, var(--admin-primary), var(--admin-accent));
  box-shadow:0 12px 24px rgba(41,92,170,.18);
}

.service-mobile-list{
  display:grid;
  gap:1rem;
  padding:1rem;
}

.service-mobile-card{
  display:flex;
  gap:.9rem;
  align-items:flex-start;
  padding:1rem;
  border:1px solid var(--admin-line);
  border-radius:20px;
  background:linear-gradient(180deg, #ffffff, #f8fbff);
  box-shadow:0 10px 24px rgba(15,23,42,.05);
}

.service-mobile-thumb{
  flex:0 0 auto;
}

.service-mobile-body{
  min-width:0;
  flex:1 1 auto;
}

.service-mobile-header{
  display:flex;
  justify-content:space-between;
  gap:.75rem;
  align-items:flex-start;
  margin-bottom:.9rem;
}

.service-mobile-actions{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:.65rem;
}

.admin-mobile-list{
  display:grid;
  gap:1rem;
  padding:1rem;
}

.admin-mobile-list-card{
  display:grid;
  gap:.9rem;
  padding:1rem;
  border:1px solid var(--admin-line);
  border-radius:20px;
  background:linear-gradient(180deg, #ffffff, #f8fbff);
  box-shadow:0 10px 24px rgba(15,23,42,.05);
}

.admin-mobile-list-header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:.75rem;
}

.admin-mobile-list-meta{
  display:grid;
  gap:.35rem;
  color:var(--admin-muted);
  font-size:.92rem;
}

.admin-mobile-list-actions{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:.65rem;
}

.alert{
  border:0;
  border-radius:18px;
  box-shadow:0 10px 26px rgba(15,23,42,.06);
}

.admin-mobile-menu{
  color:var(--admin-sidebar-text);
  background:
    linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,0)),
    linear-gradient(180deg, var(--admin-sidebar) 0%, var(--admin-sidebar-2) 100%);
}

.admin-mobile-menu .offcanvas-header,
.admin-mobile-menu .offcanvas-body,
.admin-mobile-menu .admin-brand-title,
.admin-mobile-menu .admin-menu-link,
.admin-mobile-menu .admin-menu-title{
  color:var(--admin-sidebar-text);
}

.admin-mobile-menu .admin-brand-subtitle,
.admin-mobile-menu .small.text-secondary{
  color:#b5c2d5 !important;
}

.admin-mobile-menu .btn-outline-secondary{
  --bs-btn-color:#fff;
  --bs-btn-border-color:rgba(255,255,255,.18);
  --bs-btn-hover-color:var(--admin-text);
  --bs-btn-hover-bg:#fff;
  --bs-btn-hover-border-color:#fff;
  --bs-btn-active-color:var(--admin-text);
  --bs-btn-active-bg:#eef4fa;
  --bs-btn-active-border-color:#eef4fa;
  background:rgba(255,255,255,.06);
}

.admin-mobile-menu .offcanvas-header{
  align-items:flex-start;
  padding:1.2rem 1.1rem 0;
  border-bottom:0;
}

.admin-mobile-menu .offcanvas-body{
  padding:1rem 1rem 1.25rem;
}

.admin-mobile-menu .admin-menu-section:first-child{
  margin-top:0;
}

.admin-mobile-menu-footer{
  margin-top:1.4rem;
  padding-top:1rem;
  border-top:1px solid var(--admin-sidebar-line);
}

.text-secondary,
.small.text-secondary{color:var(--admin-muted)!important}

.admin-login-body{
  min-height:100vh;
  display:flex;
  align-items:center;
}

.admin-login-card{
  position:relative;
  overflow:hidden;
  background:linear-gradient(180deg, rgba(255,255,255,.98), rgba(255,255,255,.92));
  border:1px solid rgba(255,255,255,.9);
  border-radius:32px;
  box-shadow:0 28px 70px rgba(15,23,42,.14);
}

.admin-login-card::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:6px;
  background:linear-gradient(90deg, var(--admin-primary), var(--admin-accent));
}

@media (max-width: 991px){
  .admin-shell{grid-template-columns:1fr}
  .admin-sidebar{
    position:relative;
    height:auto;
    border-bottom:1px solid rgba(255,255,255,.04);
  }
  .admin-topbar{
    flex-direction:column;
    align-items:stretch;
    padding:1.1rem 1rem 1rem;
  }
  .admin-topbar-actions{
    min-width:0;
    width:100%;
  }
  .admin-content{padding:0 1rem 1rem}
  .admin-mairie-switch{
    width:100%;
    flex-wrap:wrap;
  }
  .admin-mairie-switch .form-select{
    min-width:0;
    width:100%;
  }
  .table{
    min-width:720px;
  }
}

@media (max-width: 767px){
  .admin-mobile-topbar{
    padding:.85rem .85rem .75rem;
  }
  .admin-topbar{padding:1rem .95rem .85rem}
  .admin-card,
  .form-card{padding:1rem}
  .admin-card,
  .form-card,
  .table-card,
  .admin-brand{border-radius:20px}
  .admin-content{
    padding:0 .85rem .85rem;
  }
  .row.g-4{
    --bs-gutter-x:1rem;
    --bs-gutter-y:1rem;
  }
  .admin-topbar-actions{
    gap:.75rem !important;
  }
  .admin-topbar-actions > .text-secondary.small{
    width:100%;
  }
  .admin-topbar-actions > .btn{
    display:none;
  }
  .admin-topbar-actions > .btn,
  .admin-topbar-actions > form,
  .admin-topbar-actions > .admin-mairie-switch{
    width:100%;
  }
  .table{
    min-width:640px;
  }
  .list-thumb{
    width:60px;
    height:60px;
    border-radius:14px;
  }
  .service-mobile-card{
    padding:.9rem;
  }
  .admin-mobile-list-card{
    padding:.9rem;
  }
  .admin-mobile-list-header{
    flex-direction:column;
  }
  .service-mobile-header{
    flex-direction:column;
    margin-bottom:.8rem;
  }
  .admin-mobile-list-actions{
    grid-template-columns:1fr;
  }
  .service-mobile-actions{
    grid-template-columns:1fr;
  }
}
