*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--gh-font-body,var(--font-body),-apple-system,sans-serif);font-size:14px;background:var(--body-background-color);color:var(--text-color-dark);line-height:1.5}
button{cursor:pointer;font-family:inherit}

/* ── LOGIN ── */
#adm-login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--body-background-color)}
.adm-login-box{background:var(--card-background-color);border:1px solid var(--border-color);border-radius:var(--radius-md,16px);padding:2.5rem 2rem;width:380px;box-shadow:var(--shadow,0 4px 24px rgba(0,0,0,.08))}
.adm-login-logo{font-size:22px;font-weight:900;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.4rem;text-align:center;letter-spacing:-.03em}
.adm-login-sub{font-size:13px;color:var(--text-color-main);text-align:center;margin-bottom:2rem;opacity:.7}
.adm-login-box label{display:block;font-size:11px;font-weight:700;color:var(--text-color-main);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.4rem;opacity:.8}
.adm-login-box input{width:100%;height:42px;padding:0 12px;border:1.5px solid var(--border-color);border-radius:var(--radius-sm,8px);font-size:14px;font-family:inherit;outline:none;transition:border-color .15s;margin-bottom:1rem;background:var(--body-background-color);color:var(--text-color-dark)}
.adm-login-box input:focus{border-color:var(--theme-color)}
.adm-login-btn{width:100%;height:44px;background:var(--gradient-primary);color:#fff;border:none;border-radius:var(--radius-sm,8px);font-size:14px;font-weight:700;transition:opacity .15s;margin-top:.25rem}
.adm-login-btn:hover{opacity:.88}
.adm-login-err{color:#e03b3b;font-size:13px;margin-top:.75rem;text-align:center;min-height:18px}

/* ── APP LAYOUT ── */
#adm-app{height:100vh;height:100dvh;display:flex;flex-direction:column}
.adm-topbar{height:56px;background:var(--gradient-primary);display:flex;align-items:stretch;padding:0 1.75rem;flex-shrink:0;gap:0}
.adm-topbar-brand{font-size:16px;font-weight:900;color:#fff;letter-spacing:-.03em;display:flex;align-items:center;padding-right:2rem;flex-shrink:0}
.adm-topbar-tabs{display:flex;align-items:stretch;flex:1}
.adm-topbar-tab{height:100%;padding:0 1.25rem;background:none;border:none;border-bottom:2.5px solid transparent;color:rgba(255,255,255,.6);font-size:13.5px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:8px;transition:color .15s,border-color .15s;font-family:inherit}
.adm-topbar-tab:hover{color:rgba(255,255,255,.9)}
.adm-topbar-tab.active{color:#fff;border-bottom-color:#fff}
.adm-logout{height:32px;padding:0 16px;background:rgba(255,255,255,.18);color:#fff;border:none;border-radius:99px;font-size:13px;font-weight:600;transition:background .15s;align-self:center;flex-shrink:0}
.adm-logout:hover{background:rgba(255,255,255,.28)}
.adm-body{display:flex;flex:1;overflow:hidden}

/* ── MOBILE NAV (hidden on desktop) ── */
.adm-nav{display:none}
.adm-nav-badge{background:#e03b3b;color:#fff;border-radius:999px;font-size:11px;font-weight:700;padding:1px 7px;min-width:20px;text-align:center}

/* ── SEARCH ── */
.adm-search-wrap{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}
.adm-search{flex:1;height:38px;padding:0 12px 0 36px;border:1.5px solid var(--border-color);border-radius:var(--radius-sm,8px);font-size:13px;font-family:inherit;color:var(--text-color-dark);background:var(--card-background-color);outline:none;transition:border-color .15s}
.adm-search:focus{border-color:var(--theme-color)}
.adm-search-ico{position:relative;flex:1;display:flex;align-items:center}
.adm-search-ico::before{content:"⌕";position:absolute;left:11px;font-size:16px;color:var(--text-color-main);opacity:.4;pointer-events:none;line-height:1}
.adm-search-count{font-size:12px;color:var(--text-color-main);opacity:.55;white-space:nowrap;flex-shrink:0}

/* ── FILTERS ── */
.adm-filters-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1.25rem}
.adm-filter-select{height:34px;padding:0 10px;border:1.5px solid var(--border-color);border-radius:var(--radius-sm,8px);font-size:12px;font-family:inherit;color:var(--text-color-dark);background:var(--card-background-color);outline:none;cursor:pointer}
.adm-filter-select:focus{border-color:var(--theme-color)}
.adm-filter-reset{border:none;background:none;color:var(--text-color-main);opacity:.6;font-size:12px;cursor:pointer;padding:0 4px;font-family:inherit}
.adm-filter-reset:hover{opacity:1;color:var(--theme-color)}
.adm-filter-date-label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-color-main);opacity:.75;white-space:nowrap}
.adm-filter-date{height:34px;padding:0 8px;border:1.5px solid var(--border-color);border-radius:var(--radius-sm,8px);font-size:12px;font-family:inherit;color:var(--text-color-dark);background:var(--card-background-color);outline:none}
.adm-filter-date:focus{border-color:var(--theme-color)}

/* ── PAGINATION ── */
.adm-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem}
.adm-page-btn{height:32px;padding:0 14px;border:1.5px solid var(--border-color);border-radius:var(--radius-sm,8px);background:var(--card-background-color);color:var(--text-color-dark);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:border-color .15s,opacity .15s}
.adm-page-btn:hover:not(:disabled){border-color:var(--theme-color);color:var(--theme-color)}
.adm-page-btn:disabled{opacity:.35;cursor:default}
.adm-page-info{font-size:12px;color:var(--text-color-main);opacity:.7}

/* ── CONTENT ── */
.adm-content{flex:1;overflow-y:auto;padding:1.75rem}
.adm-tab{display:none}
.adm-tab.active{display:block}

/* ── PAGE HEADER ── */
.adm-page-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}
.adm-page-title{font-size:22px;font-weight:800;color:var(--text-color-dark);letter-spacing:-.02em}
.adm-btn-primary{height:38px;padding:0 18px;background:var(--gradient-primary);color:#fff;border:none;border-radius:99px;font-size:13px;font-weight:700;transition:opacity .15s}
.adm-btn-primary:hover{opacity:.88}

/* ── LIST ── */
.adm-list{background:var(--card-background-color);border-radius:var(--radius-md,16px);border:1px solid var(--border-color);overflow:hidden;box-shadow:var(--shadow,0 1px 4px rgba(0,0,0,.06))}
.adm-list-item{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border-color);transition:background .12s}
.adm-list-item:last-child{border-bottom:none}
.adm-list-item:hover{background:var(--body-background-color)}
.adm-list-avatar{width:40px;height:40px;border-radius:10px;background:var(--gradient-primary);color:#fff;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:-.02em}
.adm-list-main{flex:1;min-width:0}
.adm-list-name{font-size:14px;font-weight:700;color:var(--text-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-list-sub{font-size:12px;color:var(--text-color-main);margin-top:1px;opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-list-meta{display:flex;align-items:center;gap:.5rem;flex-shrink:0}
.adm-list-actions{display:flex;gap:6px;flex-shrink:0}
.adm-list-empty{text-align:center;padding:3rem 1rem;color:var(--text-color-main);opacity:.5;font-size:14px}

/* ── BADGES ── */
.adm-badge{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:99px;font-size:11px;font-weight:700;letter-spacing:.02em}
.adm-badge-green{background:#d4f5e2;color:#1a7a4a}
.adm-badge-blue{background:rgba(var(--theme-color-rgb,99,91,255),.12);color:var(--theme-color)}
.adm-badge-gray{background:var(--body-background-color);color:var(--text-color-main)}
.adm-badge-orange{background:#fff3e0;color:#e65100}
.adm-badge-red{background:#fde8e8;color:#c0392b}

/* ── ROW ACTIONS ── */
.adm-row-actions{display:flex;gap:8px}
.adm-btn-sm{height:34px;padding:0 16px;border-radius:99px;font-size:12.5px;font-weight:600;border:none;transition:background .15s,color .15s,border-color .15s;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;cursor:pointer}
.adm-btn-edit{background:transparent;color:var(--text-color-main);border:1.5px solid var(--border-color)}
.adm-btn-edit:hover{color:var(--theme-color);border-color:var(--theme-color);background:var(--body-background-color)}
.adm-btn-del{background:transparent;color:#c0392b;border:1.5px solid rgba(192,57,43,.35)}
.adm-btn-del:hover{background:#fde8e8;border-color:#c0392b}
.adm-btn-ok{background:#d4f5e2;color:#1a7a4a;border:1.5px solid transparent}
.adm-btn-ok:hover{background:#bdefce}
.adm-btn-view{background:transparent;color:var(--text-color-main);border:1.5px solid var(--border-color)}
.adm-btn-view:hover{color:var(--theme-color);border-color:var(--theme-color);background:var(--body-background-color)}

/* ── MODAL ── */
.adm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;display:none;align-items:center;justify-content:center;padding:1rem;backdrop-filter:blur(2px)}
.adm-overlay.open{display:flex}
.adm-modal{background:var(--card-background-color);border-radius:var(--radius-md,16px);width:680px;max-width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 16px 64px rgba(0,0,0,.18);border:1px solid var(--border-color)}
.adm-modal-hd{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.adm-modal-title{font-size:17px;font-weight:800;color:var(--text-color-dark);letter-spacing:-.02em}
.adm-modal-x{background:none;border:none;font-size:22px;color:var(--text-color-main);line-height:1;padding:0 4px;opacity:.5}
.adm-modal-x:hover{opacity:1}
.adm-modal-body{padding:1.5rem;overflow-y:auto;flex:1}
.adm-modal-ft{padding:1rem 1.5rem;border-top:1px solid var(--border-color);display:flex;gap:10px;justify-content:flex-end;flex-shrink:0}

/* ── FORM ── */
.adm-form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}
.adm-form-row.full{grid-template-columns:1fr}
.adm-form-group{display:flex;flex-direction:column;gap:.4rem}
.adm-form-group label{font-size:11px;font-weight:700;color:var(--text-color-main);text-transform:uppercase;letter-spacing:.08em;opacity:.8}
.adm-form-group input,.adm-form-group select,.adm-form-group textarea{height:38px;padding:0 12px;border:1.5px solid var(--border-color);border-radius:var(--radius-sm,8px);font-size:13px;font-family:inherit;color:var(--text-color-dark);outline:none;background:var(--body-background-color);transition:border-color .15s;width:100%}
.adm-form-group textarea{height:90px;padding:8px 12px;resize:vertical;line-height:1.5}
.adm-form-group input:focus,.adm-form-group select:focus,.adm-form-group textarea:focus{border-color:var(--theme-color)}
.adm-form-hint{font-size:11px;color:var(--text-color-main);margin-top:2px;opacity:.7}
.adm-form-check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-color-dark);cursor:pointer}
.adm-form-check input[type=checkbox]{width:16px;height:16px;accent-color:var(--theme-color)}
.adm-btn-cancel{height:38px;padding:0 16px;background:var(--body-background-color);color:var(--text-color-main);border:1.5px solid var(--border-color);border-radius:99px;font-size:13px;font-weight:600}
.adm-btn-cancel:hover{border-color:var(--text-color-main)}

/* ── FILE DROP ── */
.adm-file{border:2px dashed var(--border-color);border-radius:var(--radius-sm,8px);padding:1.25rem 1rem;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;position:relative}
.adm-file:hover,.adm-file.drag{border-color:var(--theme-color);background:var(--body-background-color)}
.adm-file input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.adm-file-ico{font-size:22px;opacity:.3;display:block;margin-bottom:.35rem}
.adm-file-txt{font-size:12.5px;color:var(--text-color-main);line-height:1.5}
.adm-file-browse{color:var(--theme-color);font-weight:600}
.adm-file-ext{font-size:11px;opacity:.45;margin-top:.15rem}
.adm-file-name{font-size:12.5px;font-weight:600;color:#1a7a4a;margin-top:.5rem;display:none;word-break:break-all}
.adm-file-name.show{display:block}

/* ── LEAD DETAIL ── */
.adm-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1.5rem}
.adm-detail-row{display:flex;flex-direction:column;gap:.25rem}
.adm-detail-row.full{grid-column:1/-1}
.adm-detail-section-title{grid-column:1/-1;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--theme-color);margin-top:.5rem;padding-top:.75rem;border-top:1px solid var(--border-color)}
.adm-detail-label{font-size:10.5px;font-weight:700;color:var(--text-color-main);text-transform:uppercase;letter-spacing:.08em;opacity:.7}
.adm-detail-val{font-size:13px;color:var(--text-color-dark);word-break:break-word}

/* ── TOAST ── */
.adm-toast{position:fixed;bottom:1.5rem;right:1.5rem;background:var(--text-color-dark);color:var(--body-background-color);padding:.75rem 1.25rem;border-radius:99px;font-size:13px;font-weight:600;z-index:9999;box-shadow:0 4px 20px rgba(0,0,0,.15);opacity:0;transition:opacity .2s;pointer-events:none}
.adm-toast.show{opacity:1}

/* ── MULTI-SELECT ── */
.adm-ms{position:relative}
.adm-ms-trigger{min-height:38px;padding:4px 10px 4px 12px;border:1.5px solid var(--border-color);border-radius:var(--radius-sm,8px);background:var(--body-background-color);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;user-select:none;transition:border-color .15s;width:100%}
.adm-ms-trigger.open,.adm-ms-trigger:focus{border-color:var(--theme-color);outline:none}
.adm-ms-body{flex:1;display:flex;flex-wrap:wrap;gap:4px;min-height:26px;align-items:center}
.adm-ms-ph{font-size:13px;color:var(--text-color-main);opacity:.5}
.adm-ms-tag{display:inline-flex;align-items:center;gap:4px;background:var(--body-background-color);border:1px solid var(--border-color);border-radius:999px;font-size:11.5px;font-weight:500;padding:2px 8px 2px 10px;color:var(--text-color-dark)}
.adm-ms-rm{cursor:pointer;font-size:13px;opacity:.4;background:none;border:none;padding:0;line-height:1;font-family:inherit;color:inherit}
.adm-ms-rm:hover{opacity:1}
.adm-ms-arrow{font-size:10px;opacity:.45;flex-shrink:0;transition:transform .15s}
.adm-ms-trigger.open .adm-ms-arrow{transform:rotate(180deg)}
.adm-ms-dd{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:500;background:var(--card-background-color);border:1.5px solid var(--border-color);border-radius:var(--radius-sm,8px);max-height:220px;overflow-y:auto;box-shadow:0 8px 24px rgba(0,0,0,.12)}
.adm-ms-opt{display:flex;align-items:center;gap:10px;padding:8px 12px;font-size:13px;cursor:pointer;transition:background .1s,opacity .15s;color:var(--text-color-dark)}
.adm-ms-opt:hover{background:var(--body-background-color)}
.adm-ms-opt input{flex-shrink:0;width:14px;height:14px;cursor:pointer;accent-color:var(--theme-color)}
.adm-ms-opt.adm-ms-opt-disabled{opacity:.4;cursor:not-allowed}
.adm-ms-opt.adm-ms-opt-disabled:hover{background:none}
.adm-ms-opt.adm-ms-opt-disabled input{cursor:not-allowed}
.adm-ms-group{padding:8px 12px 3px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--theme-color);position:sticky;top:0;background:var(--card-background-color)}
.adm-ms-group:first-child{padding-top:8px}

/* ── RESPONSIVE ── */
@media (max-width: 640px) {
  /* Login */
  .adm-login-box{width:calc(100% - 2rem);padding:2rem 1.25rem}

  /* Topbar: masquer les tabs, garder brand + logout */
  .adm-topbar-tabs{display:none}
  .adm-topbar{padding:0 1rem;gap:1rem}
  .adm-topbar-brand{padding-right:0;flex:1}

  /* Layout: nav en haut */
  .adm-body{flex-direction:column}
  .adm-nav{display:flex;width:100%;border-bottom:1px solid var(--border-color);flex-shrink:0;background:var(--card-background-color)}
  .adm-nav-btn{display:flex;align-items:center;justify-content:center;gap:6px;flex:1;height:50px;border:none;background:none;font-size:13px;font-weight:600;color:var(--text-color-main);border-bottom:2.5px solid transparent;transition:color .15s,border-color .15s;font-family:inherit;padding:0;border-radius:0}
  .adm-nav-btn:hover{color:var(--text-color-dark)}
  .adm-nav-btn.active{color:var(--theme-color);border-bottom-color:var(--theme-color)}
  .adm-nav-badge{margin-left:4px}

  /* Content */
  .adm-content{padding:.875rem;overflow-y:auto;flex:1;min-height:0}

  /* Page header */
  .adm-page-hd{flex-direction:row;flex-wrap:wrap;margin-bottom:.875rem}
  .adm-page-title{font-size:18px}

  /* List items → 2 lignes */
  .adm-list-item{flex-wrap:wrap;padding:.875rem 1rem;gap:.5rem .75rem;align-items:flex-start}
  .adm-list-avatar{flex-shrink:0}
  .adm-list-main{flex:1;min-width:0}
  .adm-list-meta{order:3;flex-basis:100%;padding-left:calc(40px + .75rem);gap:.35rem;flex-wrap:wrap}
  .adm-list-actions{order:4;flex-basis:100%;padding-left:calc(40px + .75rem);gap:10px}
  /* Boutons touch-friendly */
  .adm-btn-sm{height:44px;padding:0 20px;font-size:14px;border-radius:12px;flex:1}
  .adm-btn-del{background:#fde8e8;border-color:#fde8e8;color:#c0392b}

  /* Modal → bottom sheet */
  .adm-overlay{align-items:flex-end;padding:0}
  .adm-modal{width:100%;max-height:92vh;border-radius:var(--radius-md,16px) var(--radius-md,16px) 0 0}

  /* Form → 1 colonne */
  .adm-form-row{grid-template-columns:1fr}
  .adm-form-row.full{grid-template-columns:1fr}

  /* Detail grid → 1 colonne */
  .adm-detail-grid{grid-template-columns:1fr}

  /* Topbar */
  .adm-topbar{padding:0 1rem}
  .adm-topbar-brand{font-size:14px}
  .adm-logout{padding:0 12px;font-size:12px}

  /* Toast */
  .adm-toast{bottom:70px;left:1rem;right:1rem;text-align:center;border-radius:12px}
}

/* ── DARK MODE ── */
[data-theme=dark] .adm-badge-green{background:rgba(26,122,74,.25);color:#4ade80}
[data-theme=dark] .adm-badge-blue{background:rgba(139,92,246,.2);color:#a78bfa}
[data-theme=dark] .adm-badge-gray{background:rgba(255,255,255,.08);color:var(--text-color-main)}
[data-theme=dark] .adm-badge-orange{background:rgba(230,81,0,.2);color:#fb923c}
[data-theme=dark] .adm-badge-red{background:rgba(192,57,43,.2);color:#f87171}
[data-theme=dark] .adm-btn-del{background:rgba(192,57,43,.2);color:#f87171}
[data-theme=dark] .adm-btn-ok{background:rgba(26,122,74,.2);color:#4ade80}
[data-theme=dark] .adm-overlay{background:rgba(0,0,0,.65)}
[data-theme=dark] .adm-toast{background:var(--card-background-color);color:var(--text-color-dark);border:1px solid var(--border-color)}

/* ── PARAMÈTRES (taxonomies) ── */
.adm-params-section{margin-bottom:2rem}
.adm-params-title{font-size:15px;font-weight:700;color:var(--text-color-dark);margin:0 0 .75rem}
.adm-params-group{border:1px solid var(--border-color);border-radius:var(--radius-sm,8px);margin-bottom:1rem;overflow:hidden}
.adm-params-group-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--theme-color);background:var(--body-background-color);padding:.6rem 1rem;border-bottom:1px solid var(--border-color)}
.adm-params-item{display:flex;align-items:center;gap:.6rem;padding:.65rem 1rem;border-bottom:1px solid var(--border-color)}
.adm-params-item:last-child{border-bottom:none}
.adm-params-value{flex:1;font-size:13.5px;color:var(--text-color-dark);font-weight:600}
.adm-params-usage{font-size:11.5px;color:var(--text-color-main);opacity:.6;white-space:nowrap}
.adm-params-item .adm-btn-sm{height:28px;padding:0 10px;font-size:11.5px}
.adm-params-newgroup,.adm-params-add-row{display:flex;gap:.5rem;align-items:center;margin-top:.5rem}
.adm-params-newgroup input,.adm-params-add-row input{height:36px;padding:0 12px;border:1.5px solid var(--border-color);border-radius:var(--radius-sm,8px);font-size:13px;font-family:inherit;color:var(--text-color-dark);background:var(--body-background-color);outline:none;flex:1;box-sizing:border-box}
.adm-params-newgroup input:focus,.adm-params-add-row input:focus{border-color:var(--theme-color)}
.adm-params-add-row{padding:.65rem 1rem}
/* Hauteur explicite alignée sur l'input (36px) — volontairement pas .adm-btn-sm/.adm-btn-primary
   ensemble ici : les deux fixent une hauteur différente (34px/38px) avec la même spécificité
   CSS, donc laquelle "gagne" dépend juste de l'ordre des règles dans ce fichier — fragile. */
/* Hauteur volontairement 2px au-dessus du champ (38 vs 36) : un bouton pilule
   totalement arrondi à côté d'un champ à coins carrés de la MÊME hauteur technique
   paraît visuellement plus bas/petit à l'œil à cause de la courbure des coins —
   compensation optique standard, pas une vraie différence de taille recherchée. */
.adm-params-add-btn{height:38px;padding:0 16px;background:var(--gradient-primary);color:#fff;border:none;border-radius:99px;font-size:12.5px;font-weight:700;font-family:inherit;line-height:1;cursor:pointer;white-space:nowrap;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity .15s}
.adm-params-add-btn:hover{opacity:.88}
.adm-params-empty{text-align:center;padding:1.5rem;color:var(--text-color-main);opacity:.5;font-size:13px}
@media(max-width:640px){
  .adm-params-item{flex-wrap:wrap}
  .adm-params-value{flex-basis:100%}
  .adm-params-newgroup{flex-direction:column;align-items:stretch}
}
