/* app.css — pages applicatives (auth, tableau de bord client, panel admin)
   Réutilise les tokens définis dans style.css (charger style.css AVANT ce fichier) */

body.auth-page{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:var(--grad-dark);padding:24px;position:relative;overflow:hidden;
}
body.auth-page::before{
  content:"";position:absolute;inset:0;
  background:
    radial-gradient(480px 320px at 85% 10%, rgba(236,72,209,.32), transparent 70%),
    radial-gradient(600px 400px at 5% 90%, rgba(124,58,237,.32), transparent 70%);
  pointer-events:none;
}
.auth-card{
  position:relative;z-index:1;
  background:var(--surface);border-radius:22px;padding:44px 40px;max-width:430px;width:100%;
  box-shadow:0 40px 80px -20px rgba(0,0,0,.55);
  border-top:4px solid transparent;
  border-image:var(--grad-brand) 1;
}
.auth-card .brand{
  justify-content:center;margin-bottom:28px;color:var(--ink);font-size:1.2rem;gap:12px;
}
.auth-card .brand-logo{width:42px;height:42px;}
.auth-card .eyebrow-auth{
  display:block;text-align:center;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--fuchsia);margin-bottom:8px;
}
.auth-card h1{font-size:1.5rem;text-align:center;margin-bottom:8px;}
.auth-card p.auth-sub{text-align:center;font-size:.9rem;margin-bottom:26px;}
.auth-card .form-row{margin-bottom:16px;}
.auth-card p.foot-link{margin-top:22px;font-size:.88rem;text-align:center;padding-top:20px;border-top:1px solid var(--line);}
.auth-card p.foot-link a{color:var(--violet);font-weight:600;}
.auth-card .btn-block{margin-top:6px;}

/* ---------- app shell (dashboard + admin) ---------- */
.app-shell{min-height:100vh;background:var(--mist);}
.app-topbar{
  background:var(--grad-dark);color:#fff;padding:0;
}
.app-topbar .wrap{display:flex;align-items:center;justify-content:space-between;height:70px;}
.app-topbar .brand{color:#fff;}
.app-user{display:flex;align-items:center;gap:14px;font-size:.88rem;color:rgba(255,255,255,.75);}
.app-user a{color:#fff;text-decoration:underline;text-underline-offset:2px;}
.app-main{padding:48px 0;}
.app-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px;flex-wrap:wrap;gap:14px;}
.app-head h1{font-size:1.6rem;}
.app-head p{margin-top:6px;}

/* ---------- status badges ---------- */
.badge-status{
  display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:.74rem;
  padding:4px 11px;border-radius:999px;text-transform:uppercase;letter-spacing:.03em;
}
.badge-status::before{content:"";width:6px;height:6px;border-radius:50%;}
.badge-actif{background:#dcfce7;color:#15803d;}
.badge-actif::before{background:#22c55e;}
.badge-suspendu{background:#fef3c7;color:#b45309;}
.badge-suspendu::before{background:#f59e0b;}
.badge-expire{background:#fee2e2;color:#b91c1c;}
.badge-expire::before{background:#ef4444;}
.badge-en_attente{background:#ede9fe;color:#6d28d9;}
.badge-en_attente::before{background:#8b5cf6;}

/* ---------- service cards (client dashboard) ---------- */
.service-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;
  display:flex;flex-direction:column;gap:10px;
}
.service-card .service-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;}
.service-card h3{font-size:1.05rem;}
.service-card .service-type{
  font-family:var(--font-mono);font-size:.72rem;color:var(--fuchsia);text-transform:uppercase;letter-spacing:.05em;
}
.service-meta{display:flex;flex-wrap:wrap;gap:16px;margin-top:6px;font-size:.85rem;color:var(--muted);}
.service-meta b{color:var(--ink);}
.empty-state{
  text-align:center;padding:60px 20px;background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);
}

/* ---------- admin table ---------- */
.app-table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto;-webkit-overflow-scrolling:touch;}
.app-table{width:100%;border-collapse:collapse;}
.app-table th,.app-table td{padding:14px 18px;text-align:left;font-size:.9rem;border-bottom:1px solid var(--line);}
.app-table thead th{background:var(--mist);font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.app-table tr:last-child td{border-bottom:none;}
.app-table tr:hover td{background:var(--mist);}
.app-table a.row-link{color:var(--violet);font-weight:600;}
.app-table td.actions{white-space:nowrap;}

.stat-mini{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:28px;}
.stat-mini .box{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 24px;min-width:140px;
}
.stat-mini .box .num{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--violet);}
.stat-mini .box .label{font-size:.8rem;color:var(--muted);font-family:var(--font-mono);}

/* ---------- admin service form panel ---------- */
.panel-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px;margin-bottom:24px;}
.panel-box h2{font-size:1.05rem;margin-bottom:18px;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media (max-width:640px){.form-grid{grid-template-columns:1fr;}}

.btn-danger{background:var(--surface);color:#dc2626;border:1px solid #fecaca;}
.btn-danger:hover{background:#fef2f2;}

.back-link{display:inline-flex;align-items:center;gap:6px;font-size:.88rem;color:var(--muted);margin-bottom:18px;}
.back-link:hover{color:var(--violet);}

/* ---------- dashboard shell (sidebar + topbar, style YorkHost) ---------- */
.dash-layout{display:flex;min-height:100vh;background:var(--mist);}
.dash-sidebar{
  width:250px;flex-shrink:0;background:#0f0819;color:#fff;padding:22px 0 24px;
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;
}
.dash-sidebar .brand{padding:0 22px;margin-bottom:22px;font-size:1.05rem;}
.dash-sidebar .brand-logo{width:32px;height:32px;}
.dash-nav-label{
  font-family:var(--font-mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;
  color:rgba(255,255,255,.35);padding:16px 22px 6px;
}
.dash-nav a{
  display:flex;align-items:center;gap:11px;padding:10px 22px;color:rgba(255,255,255,.68);
  font-size:.88rem;transition:background .15s ease,color .15s ease;
}
.dash-nav a .icon{width:18px;text-align:center;font-size:.95rem;}
.dash-nav a:hover{background:rgba(255,255,255,.06);color:#fff;}
.dash-nav a.active{background:var(--grad-brand);color:#fff;font-weight:600;}

.dash-main{flex:1;min-width:0;}
.dash-topbar{
  background:var(--surface);border-bottom:1px solid var(--line);padding:0 32px;height:68px;
  display:flex;align-items:center;justify-content:space-between;gap:20px;position:sticky;top:0;z-index:10;
}
.dash-search{flex:1;max-width:380px;position:relative;}
.dash-search input{
  width:100%;padding:10px 16px 10px 38px;border-radius:10px;border:1px solid var(--line);
  background:var(--mist);font-size:.86rem;font-family:var(--font-body);
}
.dash-search .icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:.85rem;}
.dash-topbar-right{display:flex;align-items:center;gap:14px;}
.dash-credit{
  font-family:var(--font-mono);font-size:.76rem;background:var(--mist);border:1px solid var(--line);
  border-radius:10px;padding:8px 14px;color:var(--muted);white-space:nowrap;
}
.dash-user{display:flex;align-items:center;gap:9px;cursor:pointer;position:relative;padding:6px 10px 6px 6px;border-radius:999px;border:1px solid var(--line);}
.dash-user:hover{border-color:var(--violet);}
.dash-user .avatar{
  width:32px;height:32px;border-radius:50%;background:var(--grad-brand);
  display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:.85rem;flex-shrink:0;
}
.dash-user span{font-size:.85rem;font-weight:600;}
.dash-user-menu{
  position:absolute;top:52px;right:0;background:var(--surface);border:1px solid var(--line);border-radius:14px;
  box-shadow:0 24px 50px -20px rgba(0,0,0,.3);min-width:230px;padding:8px;display:none;z-index:30;
}
.dash-user-menu.open{display:block;}
.dash-user-menu a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;font-size:.86rem;color:var(--ink);}
.dash-user-menu a:hover{background:var(--mist);}
.dash-user-menu a.danger{color:#dc2626;}
.dash-user-head{padding:10px 12px;border-bottom:1px solid var(--line);margin-bottom:6px;}
.dash-user-head b{display:block;font-size:.88rem;}
.dash-user-head span{font-size:.76rem;color:var(--muted);}

.dash-content{padding:40px 32px;}
.dash-content-head{text-align:center;margin-bottom:32px;}
.dash-content-head h1{font-size:1.5rem;}
.dash-content-head p{margin-top:6px;}

.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
@media(max-width:1000px){.quick-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:600px){.quick-grid{grid-template-columns:1fr;}}
.quick-card{
  background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px;
  display:flex;gap:14px;align-items:flex-start;transition:transform .15s ease,box-shadow .15s ease;
}
.quick-card:hover{transform:translateY(-3px);box-shadow:0 20px 40px -20px rgba(124,58,237,.3);}
.quick-card .icon-box{
  width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:1.15rem;flex-shrink:0;
}
.quick-card h3{font-size:.95rem;margin-bottom:2px;}
.quick-card p{font-size:.8rem;}
@media(max-width:760px){.dash-sidebar{display:none;}}

/* ---------- tables responsives ---------- */
.app-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.app-table{min-width:640px;}
.dash-menu-toggle{
  display:none;background:none;border:1px solid var(--line);border-radius:10px;
  width:38px;height:38px;align-items:center;justify-content:center;font-size:1.1rem;
  cursor:pointer;color:var(--ink);margin-right:8px;flex-shrink:0;
}
.dash-backdrop{display:none;position:fixed;inset:0;background:rgba(10,4,20,.5);z-index:55;}
@media(max-width:760px){
  .dash-menu-toggle{display:flex;}
  .dash-sidebar{
    display:flex !important;position:fixed;top:0;left:0;height:100vh;z-index:60;
    transform:translateX(-105%);transition:transform .25s ease;width:270px;
  }
  .dash-sidebar.open{transform:translateX(0);}
  .dash-backdrop.open{display:block;}
  .dash-content{padding:28px 18px;}
  .dash-topbar{padding:0 16px;}
  .dash-search{display:none;}
}
@media(max-width:420px){
  .dash-credit{display:none;}
  .dash-user span{display:none;}
  .dash-topbar-right{gap:8px;}
  .lang-toggle-app{padding:0 8px;font-size:.72rem;}
}

/* ---------- notifications (cloche) ---------- */
.dash-notif{position:relative;cursor:pointer;font-size:1.15rem;padding:8px 10px;border-radius:10px;}
.dash-notif:hover{background:var(--mist);}
.notif-badge{
  position:absolute;top:2px;right:2px;background:#ef4444;color:#fff;font-size:.62rem;font-weight:700;
  padding:1px 5px;border-radius:999px;font-family:var(--font-mono);line-height:1.3;
}
.dash-notif-menu{
  position:absolute;top:48px;right:0;width:320px;max-height:420px;overflow-y:auto;
  background:var(--surface);border:1px solid var(--line);border-radius:14px;
  box-shadow:0 24px 50px -20px rgba(0,0,0,.3);display:none;z-index:30;
}
.dash-notif-menu.open{display:block;}
.dash-notif-head{padding:14px 16px;font-weight:700;font-size:.9rem;border-bottom:1px solid var(--line);font-family:var(--font-display);}
.dash-notif-item{padding:12px 16px;border-bottom:1px solid var(--line);cursor:default;}
.dash-notif-item:last-child{border-bottom:none;}
.dash-notif-item.unread{background:var(--mist);}
.dash-notif-item b{font-size:.86rem;display:block;margin-bottom:2px;}
.dash-notif-item p{font-size:.8rem;line-height:1.5;}
.dash-notif-item span{font-size:.68rem;color:var(--muted);font-family:var(--font-mono);display:block;margin-top:6px;}
.dash-notif-empty{padding:28px 16px;text-align:center;color:var(--muted);font-size:.85rem;}

.theme-toggle-app{
  background:var(--mist);border:1px solid var(--line);color:var(--ink);
  border-radius:10px;width:38px;height:38px;display:flex;align-items:center;justify-content:center;
  font-size:1rem;cursor:pointer;transition:background .15s ease;flex-shrink:0;
}
.theme-toggle-app:hover{background:var(--line);}

/* ---------- admin top nav tabs ---------- */
.admin-tabs{display:flex;gap:4px;margin-left:24px;}
.admin-tabs a{
  padding:8px 14px;border-radius:8px;color:rgba(255,255,255,.6);font-size:.86rem;font-weight:500;
  transition:background .15s ease,color .15s ease;
}
.admin-tabs a:hover{background:rgba(255,255,255,.08);color:#fff;}
.admin-tabs a.active{background:rgba(255,255,255,.12);color:#fff;font-weight:600;}
@media(max-width:760px){
  .admin-tabs{
    display:flex;overflow-x:auto;-webkit-overflow-scrolling:touch;
    margin-left:12px;gap:2px;max-width:40vw;
  }
  .admin-tabs::-webkit-scrollbar{display:none;}
  .admin-tabs a{white-space:nowrap;padding:8px 10px;font-size:.78rem;}
}
@media(max-width:560px){
  .app-topbar .brand span{display:none;}
}
