/* ==========================================================================
   DOUIT admin — theme
   Replaces app.min.css / components.css / custom.css / style.css /
   style/app.css / rtl-admin.css. Bootstrap 5 stays loaded for the grid and
   the components the 29 page templates rely on; everything below owns the
   shell, the palette and the component skin.

   Section 3 is a Bootstrap-4 compatibility layer: the pages were written
   against BS4 utility names (ml-*, mr-*, form-group, close) which BS5 does
   not ship. Removing it breaks spacing across the panel.

   Dark mode is opt-in via [data-douit-theme="dark"] — never automatic,
   because 11 page templates carry hardcoded light colours of their own.
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700;800&display=swap');

/* ==========================================================================
   1. Tokens
   ========================================================================== */
:root{
  --c1:#FA716E;
  --c2:#A968AF;
  --grad:linear-gradient(135deg,#FA716E 0%,#A968AF 100%);
  --grad-h:linear-gradient(135deg,#F9615E 0%,#9C589F 100%);
  --accent:#8C4C86;
  --accent-soft:#F7EDF5;

  --nav:#17142B;
  --nav-2:#231F3E;
  --nav-ink:#B3ADCB;
  --nav-lbl:#6E6894;

  --page:#F5F4F8;
  --surf:#FFFFFF;
  --sunk:#F2F0F6;

  --ink:#16141C;
  --ink-2:#4E4A59;
  --ink-3:#847F91;
  --line:#E9E6EF;
  --line-2:#DCD8E5;

  --good:#17864F;  --good-bg:#E4F4EB;
  --warn:#8A6100;  --warn-bg:#FBF2DE;
  --crit:#B3352B;  --crit-bg:#FAE8E6;
  --info:#1F5FA8;  --info-bg:#E7EFF9;
  --mute:#4C4755;  --mute-bg:#EEECF3;

  --r:10px; --r-lg:16px;
  --shadow:0 1px 2px rgba(28,20,38,.04), 0 10px 24px -14px rgba(28,20,38,.18);
  --shadow-lg:0 24px 60px -24px rgba(28,20,38,.34);

  --sidebar-w:258px;
  --navbar-h:62px;
}

:root[data-douit-theme="dark"]{
  --page:#0B0B11;
  --surf:#15151D;
  --sunk:#1D1D27;

  --ink:#EFEFF5;
  --ink-2:#B6B5C6;
  --ink-3:#8A8899;
  --line:#26262F;
  --line-2:#33333F;

  --accent:#DCA9D6;
  --accent-soft:#2B1F32;

  --good:#5FC28E;  --good-bg:#12291C;
  --warn:#E5B45E;  --warn-bg:#2E2410;
  --crit:#EF8A80;  --crit-bg:#2E1614;
  --info:#7FB3EA;  --info-bg:#12212F;
  --mute:#B6B5C6;  --mute-bg:#24242F;

  --shadow:0 1px 2px rgba(0,0,0,.5), 0 12px 28px -18px rgba(0,0,0,.85);
  --shadow-lg:0 28px 70px -28px rgba(0,0,0,.9);
}

/* ==========================================================================
   2. Base
   ========================================================================== */
*{box-sizing:border-box}
html,body{margin:0; padding:0}
body{
  font-family:"Vazirmatn","Segoe UI",Tahoma,sans-serif !important;
  font-size:14px; line-height:1.85;
  background:var(--page) !important;
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3,h4,h5,h6{font-family:inherit; font-weight:700; color:var(--ink); letter-spacing:-.01em; margin:0 0 .4em}
a{color:var(--accent); text-decoration:none}
a:hover{text-decoration:none; opacity:.85}
p{margin:0 0 1em}
img{max-width:100%}
:focus-visible{outline:2px solid var(--c2); outline-offset:2px; border-radius:6px}
.text-muted{color:var(--ink-3) !important}
table td,table th,.tnum{font-variant-numeric:tabular-nums}

/* ==========================================================================
   3. Bootstrap 4 compatibility — utilities BS5 dropped but the pages use
   ========================================================================== */
.ml-auto{margin-left:auto !important} .mr-auto{margin-right:auto !important}
.ml-0{margin-left:0 !important}  .mr-0{margin-right:0 !important}
.ml-1{margin-left:.25rem !important} .mr-1{margin-right:.25rem !important}
.ml-2{margin-left:.5rem !important}  .mr-2{margin-right:.5rem !important}
.ml-3{margin-left:1rem !important}   .mr-3{margin-right:1rem !important}
.ml-4{margin-left:1.5rem !important} .mr-4{margin-right:1.5rem !important}
.pl-0{padding-left:0 !important}  .pr-0{padding-right:0 !important}
.pl-1{padding-left:.25rem !important} .pr-1{padding-right:.25rem !important}
.pl-2{padding-left:.5rem !important}  .pr-2{padding-right:.5rem !important}
.pl-3{padding-left:1rem !important}   .pr-3{padding-right:1rem !important}
.ms-3{margin-inline-start:1rem !important}
.form-group{margin-bottom:1rem}
.btn-block{display:block; width:100%}
.font-15{font-size:15px}
.pointer{cursor:pointer}
button.close{
  background:none; border:0; font-size:22px; line-height:1; opacity:1;
  color:var(--ink-3); cursor:pointer; padding:0 4px;
}
button.close:hover{color:var(--ink)}

/* ==========================================================================
   4. Shell — layout owned here, so nothing else can fight it
   ========================================================================== */
.loader{display:none}
.navbar-bg{display:none}
#app,.main-wrapper{min-height:100vh}

.main-navbar,
nav.navbar.main-navbar{
  position:fixed; top:0; right:var(--sidebar-w); left:0; z-index:890;
  height:var(--navbar-h); min-height:var(--navbar-h);
  display:flex; align-items:center; justify-content:space-between;
  gap:14px; padding:0 20px; margin:0;
  background:var(--surf); border-bottom:1px solid var(--line); box-shadow:none;
}
.main-navbar .navbar-nav{display:flex; align-items:center; flex-direction:row; gap:2px; margin:0; padding:0; list-style:none}
.main-navbar .form-inline{display:flex; align-items:center; margin:0}
.main-navbar .nav-link{color:var(--ink-2); font-size:13px; padding:6px 8px; display:flex; align-items:center}
.main-navbar .nav-link:hover{color:var(--ink)}
.collapse-btn{width:36px; height:36px; border-radius:10px; display:grid !important; place-items:center; padding:0 !important; color:var(--ink-2)}
.collapse-btn:hover{background:var(--sunk)}
.collapse-btn svg{width:18px; height:18px}

.d-topbar-title{display:block; font-size:14.5px; font-weight:700; color:var(--ink); line-height:1.3}
.d-topbar-sub{display:block; font-size:11.5px; color:var(--ink-3); line-height:1.4}
.d-iconbtn{
  width:36px; height:36px; border-radius:10px; border:0; background:transparent;
  color:var(--ink-2); display:grid; place-items:center; cursor:pointer; font-size:15px;
}
.d-iconbtn:hover{background:var(--sunk); color:var(--ink)}

.main-navbar .dropdown{position:relative}
.main-navbar .dropdown-menu{
  position:absolute; top:calc(100% + 8px); left:0; right:auto; min-width:180px;
  background:var(--surf); border:1px solid var(--line); border-radius:var(--r);
  box-shadow:var(--shadow); padding:6px; display:none; z-index:900;
}
.main-navbar .dropdown-menu.show{display:block}
.main-navbar .dropdown-item{
  display:flex; align-items:center; gap:8px; border-radius:8px;
  padding:8px 11px; font-size:13px; color:var(--ink-2);
}
.main-navbar .dropdown-item:hover{background:var(--sunk); color:var(--ink)}
.main-navbar .dropdown-item.text-danger{color:var(--crit) !important}

.main-sidebar{
  position:fixed; top:0; right:0; bottom:0; z-index:900;
  width:var(--sidebar-w); background:var(--nav);
  display:flex; flex-direction:column;
}
.main-sidebar #sidebar-wrapper{
  flex:1; min-height:0; overflow-y:auto; overflow-x:hidden;
  scrollbar-width:thin; scrollbar-color:#332E52 transparent;
}
.main-sidebar #sidebar-wrapper::-webkit-scrollbar{width:5px}
.main-sidebar #sidebar-wrapper::-webkit-scrollbar-thumb{background:#332E52; border-radius:9px}

.sidebar-brand{
  height:var(--navbar-h); display:flex; align-items:center;
  padding:0 18px; border-bottom:1px solid rgba(255,255,255,.07); flex:0 0 auto;
}
.sidebar-brand a{display:flex; align-items:center; gap:10px; color:#fff}
.sidebar-brand img{width:30px; height:30px; border-radius:9px; flex:0 0 auto}
.sidebar-brand .logo-name{color:#fff; font-size:16px; font-weight:700; line-height:1.2}
.sidebar-brand small{display:block; font-size:10.5px; color:var(--nav-lbl); font-weight:400; line-height:1.4}

.sidebar-menu{list-style:none; margin:0; padding:8px 10px 30px}
.sidebar-menu li.menu-header{
  font-size:10.5px; font-weight:600; color:var(--nav-lbl);
  padding:16px 14px 5px; letter-spacing:.05em;
}
.sidebar-menu li.menu-header:first-child{padding-top:6px}
.sidebar-menu li.sideBarli{margin:2px 0; border-radius:11px}
.sidebar-menu li.sideBarli > a{
  display:flex; align-items:center; gap:10px;
  padding:9px 13px; border-radius:11px;
  font-size:13px; line-height:1.7; color:var(--nav-ink);
  transition:background .13s, color .13s;
}
.sidebar-menu li.sideBarli > a i{font-size:15px; width:19px; text-align:center; flex:0 0 auto; opacity:.8}
.sidebar-menu li.sideBarli > a span{flex:1; min-width:0; font-size:13px; line-height:1.7; color:inherit}
.sidebar-menu li.sideBarli > a:hover{background:var(--nav-2); color:#E2DEF0}
.sidebar-menu li.activeLi{background-image:var(--grad); box-shadow:0 6px 16px -8px rgba(169,104,175,.75)}
.sidebar-menu li.activeLi > a,
.sidebar-menu li.activeLi > a:hover{background:transparent; color:#fff; font-weight:500}
.sidebar-menu li.activeLi > a i{opacity:1}

.main-content{
  margin-right:var(--sidebar-w);
  padding:calc(var(--navbar-h) + 20px) 22px 60px;
  min-height:100vh; background:var(--page);
}
.section-header{background:transparent; box-shadow:none; border:0; padding:0; margin:0 0 16px}
.section-header h1{font-size:20px; font-weight:700}

/* collapsed rail — Stisla's JS toggles .sidebar-mini on <body> */
body.sidebar-mini .main-sidebar{width:76px}
body.sidebar-mini .main-navbar{right:76px}
body.sidebar-mini .main-content{margin-right:76px}
body.sidebar-mini .sidebar-menu li.sideBarli > a span,
body.sidebar-mini .sidebar-menu li.menu-header,
body.sidebar-mini .sidebar-brand .logo-name,
body.sidebar-mini .sidebar-brand small{display:none}
body.sidebar-mini .sidebar-menu li.sideBarli > a{justify-content:center; padding:10px}
body.sidebar-mini .sidebar-brand{justify-content:center; padding:0}

@media (max-width:991px){
  :root{--sidebar-w:0px}
  .main-sidebar{transform:translateX(100%); transition:transform .22s; width:258px}
  body.sidebar-show .main-sidebar{transform:none}
  .main-navbar{right:0}
  .main-content{margin-right:0; padding-left:14px; padding-right:14px}
}

/* ==========================================================================
   5. Cards
   ========================================================================== */
.card{
  background:var(--surf); border:1px solid var(--line);
  border-radius:var(--r-lg); box-shadow:var(--shadow);
  margin-bottom:16px; position:relative;
}
.card > .card-header{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  padding:15px 20px; border-bottom:1px solid var(--line);
  background:transparent; border-radius:var(--r-lg) var(--r-lg) 0 0;
}
.card > .card-header h4,.card > .card-header h5{margin:0; font-size:15px; font-weight:700}
.card > .card-body{padding:18px 20px}
.card > .card-footer{padding:14px 20px; border-top:1px solid var(--line); background:transparent}

.card-statistic-4{padding:6px 4px}
.card-icon2{
  width:44px; height:44px; line-height:44px; font-size:18px;
  border-radius:13px; text-align:center; box-shadow:none; margin:0;
}
.mainbg,.card-icon2.mainbg{background:var(--grad) !important; background-image:var(--grad) !important}
.maincolor{color:#fff !important}
.card-statistic-4 .card-content h5{font-size:12.5px; color:var(--ink-3); font-weight:400; margin:12px 0 2px}
.card-statistic-4 .card-content h3{font-size:28px; font-weight:700; color:var(--ink); margin:0; line-height:1.35}

/* ==========================================================================
   6. Tables + DataTables
   ========================================================================== */
.table{width:100%; margin:0; color:var(--ink); border-collapse:collapse; background:transparent}
.table thead th{
  background:var(--sunk); color:var(--ink-3);
  border:0; border-bottom:1px solid var(--line);
  font-size:11.5px; font-weight:600; text-align:right;
  padding:11px 12px; white-space:nowrap;
}
.table tbody td{
  border-top:1px solid var(--line); color:var(--ink);
  padding:11px 12px; font-size:12.5px; vertical-align:middle; background:transparent;
}
.table.table-striped tbody tr:nth-of-type(odd),
.table.table-striped tbody tr:nth-of-type(odd) td{background:transparent}
.table tbody tr:hover td{background:var(--sunk)}
.table td img{border-radius:8px}
.table-responsive,.dataTables_wrapper{overflow-x:auto}

.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_info{color:var(--ink-3); font-size:12px; padding:6px 0}
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select{
  background:var(--surf); color:var(--ink);
  border:1px solid var(--line-2); border-radius:10px;
  height:36px; padding:5px 12px; font-size:12.5px; margin:0 6px;
}
.dataTables_wrapper .dataTables_filter input:focus,
.dataTables_wrapper .dataTables_length select:focus{border-color:var(--c2); outline:0}
.dataTables_wrapper .dataTables_paginate{padding-top:8px}
.dataTables_wrapper .dataTables_paginate .paginate_button,
.page-item .page-link{
  display:inline-block; background:var(--surf); color:var(--ink-2) !important;
  border:1px solid var(--line); border-radius:9px;
  margin:0 2px; padding:5px 13px; font-size:12.5px; cursor:pointer;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover,
.page-item .page-link:hover{background:var(--sunk); color:var(--ink) !important}
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.page-item.active .page-link{background:var(--grad) !important; border-color:transparent; color:#fff !important}
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
.page-item.disabled .page-link{opacity:.45; cursor:default}
.pagination{display:flex; gap:2px; list-style:none; padding:0; margin:0}

/* ==========================================================================
   7. Buttons
   ========================================================================== */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  border:1px solid transparent; border-radius:var(--r);
  font-size:13px; font-weight:500; line-height:1.7;
  padding:8px 16px; cursor:pointer; box-shadow:none;
  transition:filter .13s, background .13s, color .13s;
}
.btn-sm{padding:5px 12px; font-size:12px; border-radius:9px}
.btn-primary{background:var(--grad); background-image:var(--grad); border:0; color:#fff}
.btn-primary:hover{background-image:var(--grad-h); color:#fff}
.btn-light,.btn-secondary,.btn-outline-secondary{background:var(--surf); border-color:var(--line-2); color:var(--ink)}
.btn-light:hover,.btn-secondary:hover{background:var(--sunk); color:var(--ink)}
.btn-danger{background:var(--crit-bg); border-color:var(--crit); color:var(--crit) !important}
.btn-danger:hover{background:var(--crit); color:#fff !important}
.btn-success{background:var(--good-bg); border-color:var(--good); color:var(--good) !important}
.btn-success:hover{background:var(--good); color:#fff !important}
.btn-warning{background:var(--warn-bg); border-color:var(--warn); color:var(--warn) !important}
.btn-info{background:var(--info-bg); border-color:var(--info); color:var(--info) !important}

/* ==========================================================================
   8. Forms
   ========================================================================== */
.form-control,.custom-select,select.form-control,textarea.form-control,input.form-control{
  display:block; width:100%;
  background:var(--surf); color:var(--ink);
  border:1px solid var(--line-2); border-radius:var(--r);
  font-size:13px; font-family:inherit; min-height:40px; padding:8px 14px; box-shadow:none;
}
textarea.form-control{min-height:96px}
.form-control:focus{border-color:var(--c2); outline:0; box-shadow:0 0 0 3px var(--accent-soft)}
.form-control::placeholder{color:var(--ink-3)}
label,.form-group label{display:inline-block; font-size:12.5px; font-weight:500; color:var(--ink-2); margin-bottom:5px}
.input-group-text{background:var(--sunk); border:1px solid var(--line-2); color:var(--ink-3); border-radius:var(--r)}
.custom-file-label{background:var(--surf); border:1px solid var(--line-2); border-radius:var(--r); color:var(--ink-3)}

/* ==========================================================================
   9. Badges, tabs, modals, alerts
   ========================================================================== */
.badge{display:inline-block; border-radius:999px; font-size:11px; font-weight:500; padding:3px 10px; line-height:1.7}
.badge.bg-danger,.badge-danger{background:var(--crit-bg) !important; color:var(--crit) !important}
.badge.bg-success,.badge-success{background:var(--good-bg) !important; color:var(--good) !important}
.badge.bg-warning,.badge-warning{background:var(--warn-bg) !important; color:var(--warn) !important}
.badge.bg-info,.badge-info{background:var(--info-bg) !important; color:var(--info) !important}
.badge.bg-primary,.badge-primary{background:var(--accent-soft) !important; color:var(--accent) !important}
.badge.bg-dark,.badge.bg-secondary,.badge-dark{background:var(--mute-bg) !important; color:var(--mute) !important}
.badge-transparent{background:var(--sunk); color:var(--ink-2)}
.badge.text-white{color:inherit !important}

.card-tab .nav-tabs,ul.nav.nav-tabs{
  display:inline-flex; flex-wrap:wrap; gap:2px; list-style:none;
  background:var(--sunk); border:1px solid var(--line);
  border-radius:999px; padding:3px; margin:0;
}
ul.nav.nav-tabs .nav-item{margin:0}
ul.nav.nav-tabs .nav-link{
  display:block; border:0; border-radius:999px;
  color:var(--ink-3); font-size:12.5px; font-weight:500; padding:6px 16px; white-space:nowrap;
}
ul.nav.nav-tabs .nav-link:hover{color:var(--ink)}
ul.nav.nav-tabs .nav-link.active{background:var(--grad); color:#fff}
.tab-content > .tab-pane{display:none}
.tab-content > .tab-pane.active{display:block}

.modal-content{background:var(--surf); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--shadow-lg)}
.modal-header,.modal-footer{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:16px 20px; border-bottom:1px solid var(--line);
}
.modal-footer{border-bottom:0; border-top:1px solid var(--line)}
.modal-body{padding:18px 20px}
.modal-header h5{margin:0; font-size:15px; font-weight:700; color:var(--ink)}

.alert{border-radius:12px; border:1px solid var(--line); font-size:13px; padding:12px 16px; margin-bottom:1rem}
.alert-light{background:var(--sunk); color:var(--ink-2)}
.alert-warning{background:var(--warn-bg); color:var(--warn); border-color:transparent}
.alert-danger{background:var(--crit-bg); color:var(--crit); border-color:transparent}
.alert-success{background:var(--good-bg); color:var(--good); border-color:transparent}
.alert-info{background:var(--info-bg); color:var(--info); border-color:transparent}

.swal-modal{background:var(--surf); border-radius:var(--r-lg)}
.swal-title,.swal-text{color:var(--ink)}
.note-editor.note-frame{border:1px solid var(--line-2); border-radius:var(--r)}
.note-editor .note-toolbar{background:var(--sunk); border-bottom:1px solid var(--line)}

/* ==========================================================================
   10. Page-level components
   11 templates ship their own <style> with hardcoded light colours; these
   restate them through the tokens so both themes resolve.
   ========================================================================== */
.main-content .analytics-card,
.main-content .moderation-kpi,
.main-content .faq-card,   .main-content .faq-kpi,   .main-content .faq-help,
.main-content .legal-card, .main-content .legal-kpi, .main-content .legal-draft,
.main-content .verify-card,
.main-content .ticket-panel, .main-content .ticket-message,
.main-content .preview-card, .main-content .metric,
.main-content .panel, .main-content .help-box, .main-content .composer-section{
  background:var(--surf) !important;
  border-color:var(--line) !important;
  color:var(--ink) !important;
  border-radius:14px !important;
}
.main-content .analytics-card{border-radius:var(--r-lg) !important; box-shadow:var(--shadow) !important}
.main-content .analytics-header{border-bottom:1px solid var(--line) !important}
.main-content .analytics-title{color:var(--ink) !important; font-weight:700 !important}
.main-content .analytics-subtitle{color:var(--ink-3) !important}
.main-content .analytics-filter{
  background:var(--surf) !important; color:var(--ink) !important;
  border:1px solid var(--line-2) !important; border-radius:var(--r) !important;
  height:38px !important; font-size:13px;
}
.main-content .analytics-stats,
.main-content .analytics-chart-wrap,
.main-content .analytics-filters{background:transparent !important}
.main-content .analytics-stat{
  background:var(--sunk) !important; border:1px solid var(--line) !important;
  border-radius:14px !important; color:var(--ink) !important;
}
.main-content .analytics-stat strong{color:var(--ink) !important}
.main-content .analytics-stat span{color:var(--ink-3) !important}
.main-content .analytics-stat-icon{border-radius:12px !important}
.main-content .analytics-stat.posts  .analytics-stat-icon{background:#FFF0F4 !important; color:#E35372 !important}
.main-content .analytics-stat.reels  .analytics-stat-icon{background:#F6EFFB !important; color:#8F54B5 !important}
.main-content .analytics-stat.events .analytics-stat-icon{background:#EAF8F5 !important; color:#268A7C !important}
[data-douit-theme="dark"] .main-content .analytics-stat.posts  .analytics-stat-icon{background:#33161F !important; color:#F08DA3 !important}
[data-douit-theme="dark"] .main-content .analytics-stat.reels  .analytics-stat-icon{background:#241A33 !important; color:#BC93D8 !important}
[data-douit-theme="dark"] .main-content .analytics-stat.events .analytics-stat-icon{background:#122925 !important; color:#5FC0AE !important}

.main-content .moderation-kpi strong,
.main-content .faq-kpi strong,.main-content .legal-kpi strong{color:var(--ink) !important}
.main-content .moderation-kpi span,
.main-content .faq-kpi span,.main-content .legal-kpi span{color:var(--ink-3) !important}

.main-content .moderation-filter{display:flex; gap:8px; flex-wrap:wrap}
.main-content .moderation-filter a{
  background:var(--surf) !important; color:var(--ink-2) !important;
  border:1px solid var(--line-2) !important; border-radius:999px !important;
  font-size:12.5px; padding:7px 15px !important;
}
.main-content .moderation-filter a:hover{background:var(--sunk) !important; color:var(--ink) !important}
.main-content .moderation-filter a.active{background:var(--grad) !important; border-color:transparent !important; color:#fff !important}
.main-content .status-pill{background:var(--mute-bg) !important; color:var(--mute) !important; border-radius:999px}
.main-content .status-quarantined{background:var(--crit-bg) !important; color:var(--crit) !important}
.main-content .status-safe{background:var(--good-bg) !important; color:var(--good) !important}
.main-content .status-uncertain,
.main-content .status-manual_review{background:var(--warn-bg) !important; color:var(--warn) !important}
.main-content .moderation-error{color:var(--crit) !important}
.main-content .moderation-preview{background:var(--sunk) !important; border-radius:12px}
.main-content .moderation-score{color:var(--ink-2) !important}
.main-content .analytics-loading{opacity:.5}

/* ==========================================================================
   11. Bootstrap colour utilities
   Standalone .bg-* fills (card header bars etc.) stay solid with white text.
   The tonal treatment in section 9 is scoped to .badge and stays more
   specific, so pills keep reading as pills.
   ========================================================================== */
.bg-primary{background:var(--grad) !important; background-image:var(--grad) !important; color:#fff}
.bg-info{background:var(--info) !important; color:#fff}
.bg-success{background:var(--good) !important; color:#fff}
.bg-danger{background:var(--crit) !important; color:#fff}
.bg-warning{background:var(--warn) !important; color:#fff}
.bg-dark{background:var(--nav) !important; color:#fff}
.bg-secondary{background:var(--mute) !important; color:#fff}
.bg-light{background:var(--sunk) !important; color:var(--ink)}
.bg-white{background:var(--surf) !important}
.text-white{color:#fff}
.text-primary{color:var(--accent) !important}
.text-danger{color:var(--crit) !important}
.text-success{color:var(--good) !important}
.text-warning{color:var(--warn) !important}
.text-info{color:var(--info) !important}

/* ==========================================================================
   12. Settings page
   Its two-column layout lived in rtl-admin.css; re-authored here on tokens.
   ========================================================================== */
.settings-layout{display:grid; grid-template-columns:minmax(210px,244px) minmax(0,1fr); gap:20px; align-items:start}
.settings-navigation,.settings-panel{
  background:var(--surf); border:1px solid var(--line);
  border-radius:var(--r-lg); box-shadow:var(--shadow);
}
.settings-navigation{position:sticky; top:calc(var(--navbar-h) + 20px); padding:8px; display:flex; flex-direction:column; gap:2px}
.settings-navigation button{
  width:100%; border:0; border-radius:10px; padding:10px 14px;
  background:transparent; color:var(--ink-2); text-align:right;
  font-family:inherit; font-size:13px; font-weight:500; cursor:pointer;
  transition:background .13s, color .13s;
}
.settings-navigation button:hover{background:var(--sunk); color:var(--ink)}
.settings-navigation button.active{
  background:var(--grad); background-image:var(--grad); color:#fff;
  box-shadow:0 6px 14px -6px rgba(169,104,175,.5);
}
.settings-panel{overflow:hidden}
.settings-panel-header{padding:18px 22px; border-bottom:1px solid var(--line)}
.settings-panel-header h4{margin:0 0 4px; font-size:16px; font-weight:700; color:var(--ink)}
.settings-panel-header p,.settings-panel-header .text-muted{margin:0; font-size:12.5px; color:var(--ink-3)}
.settings-panel-body{padding:22px}
.settings-section{display:none}
.settings-section.active{display:block}
.settings-section .form-group{max-width:520px}
.settings-section .form-control{min-height:44px}
.settings-actions{margin-top:20px; padding-top:18px; border-top:1px solid var(--line); display:flex; gap:10px; flex-wrap:wrap}
@media (max-width:900px){
  .settings-layout{grid-template-columns:1fr}
  .settings-navigation{position:static; flex-direction:row; overflow-x:auto; gap:6px}
  .settings-navigation button{width:auto; min-width:max-content; white-space:nowrap}
  .settings-panel-body,.settings-panel-header{padding:16px}
}

/* ==========================================================================
   13. Dashboard — KPI strip, attention queue, share bars
   ========================================================================== */
.dz-dash{display:flex; flex-direction:column; gap:16px}
.dz-kpis{display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:14px}
.dz-kpi{
  display:flex; align-items:center; gap:13px;
  background:var(--surf); border:1px solid var(--line);
  border-radius:var(--r-lg); box-shadow:var(--shadow); padding:16px 18px;
}
.dz-kpi .ic{
  width:44px; height:44px; flex:0 0 auto; border-radius:13px;
  display:grid; place-items:center; color:#fff; font-size:17px;
  background:var(--grad); background-image:var(--grad);
}
.dz-kpi .tx{min-width:0}
.dz-kpi .lb{display:block; font-size:12.5px; color:var(--ink-3); line-height:1.6; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.dz-kpi strong{display:block; font-size:26px; font-weight:700; color:var(--ink); line-height:1.35; font-variant-numeric:tabular-nums}

.dz-two{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:16px}
.dz-card{background:var(--surf); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--shadow)}
.dz-card > header{
  display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
  padding:16px 20px 12px;
}
.dz-card > header h4{margin:0; font-size:15px; font-weight:700; color:var(--ink)}
.dz-card > header p{margin:3px 0 0; font-size:11.5px; color:var(--ink-3); line-height:1.6}
.dz-card .bd{padding:0 20px 18px}

.dz-row{display:flex; align-items:center; gap:12px; padding:11px 20px; border-top:1px solid var(--line)}
.dz-row .ic{width:32px; height:32px; flex:0 0 auto; border-radius:10px; display:grid; place-items:center; font-size:14px}
.dz-row .tx{flex:1; min-width:0}
.dz-row .tx b{display:block; font-size:13px; font-weight:500; color:var(--ink); line-height:1.6}
.dz-row .tx small{font-size:11px; color:var(--ink-3)}
.dz-chip{font-size:11.5px; padding:3px 11px; border-radius:999px; white-space:nowrap; font-variant-numeric:tabular-nums}
.dz-chip.warn{background:var(--warn-bg); color:var(--warn)}
.dz-chip.crit{background:var(--crit-bg); color:var(--crit)}
.dz-chip.ok{background:var(--good-bg); color:var(--good)}
.dz-chip.mute{background:var(--mute-bg); color:var(--mute)}
.dz-row .ic.warn{background:var(--warn-bg); color:var(--warn)}
.dz-row .ic.crit{background:var(--crit-bg); color:var(--crit)}
.dz-row .ic.ok{background:var(--good-bg); color:var(--good)}
.dz-row .ic.mute{background:var(--mute-bg); color:var(--mute)}

.dz-bar{display:grid; grid-template-columns:120px minmax(0,1fr) auto; align-items:center; gap:12px; margin-bottom:12px}
.dz-bar:last-child{margin-bottom:0}
.dz-bar .lb{font-size:12.5px; color:var(--ink-2)}
.dz-bar .track{height:10px; border-radius:999px; background:var(--sunk); overflow:hidden}
.dz-bar .fill{display:block; height:100%; border-radius:999px; background:var(--grad); background-image:var(--grad); min-width:3px}
.dz-bar .fill.g2{background:var(--info)} .dz-bar .fill.g3{background:var(--crit)}
.dz-bar .vl{font-size:12.5px; font-weight:500; color:var(--ink); font-variant-numeric:tabular-nums; white-space:nowrap}
.dz-bar .vl small{color:var(--ink-3); font-weight:400}

.dz-mini{display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:12px}
.dz-mini div{
  background:var(--sunk); border:1px solid var(--line); border-radius:12px; padding:13px 15px;
}
.dz-mini span{display:block; font-size:12px; color:var(--ink-3); line-height:1.6}
.dz-mini strong{display:block; font-size:20px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; line-height:1.4}

/* ==========================================================================
   14. Fixes for what Bootstrap 5 does on its own
   ========================================================================== */

/* Striping: BS5 paints odd rows with an inset box-shadow AND forces
   --bs-table-striped-color (#212529). On the dark surface that is dark text
   on a dark ground, so both have to go — not just the background. */
.table.table-striped > tbody > tr > *,
.table > tbody > tr > *{
  --bs-table-bg:transparent;
  --bs-table-accent-bg:transparent;
  --bs-table-striped-bg:transparent;
  --bs-table-striped-color:var(--ink);
  --bs-table-color:var(--ink);
  --bs-table-hover-bg:transparent;
  --bs-table-hover-color:var(--ink);
  box-shadow:none !important;
  color:var(--ink) !important;
  background-color:transparent !important;
}
.table > tbody > tr:hover > *{background-color:var(--sunk) !important}
.table > thead > tr > *{
  --bs-table-bg:transparent;
  color:var(--ink-3) !important;
  background-color:var(--sunk) !important;
  box-shadow:none !important;
}
/* keep intentionally coloured cell content (badges, links, muted meta) */
.table td .badge,.table td .btn,.table td a,.table td .text-muted{color:inherit}
.table td .text-muted{color:var(--ink-3) !important}

/* Top bar: mr-auto resolves to a ~900px auto margin inside a
   space-between flex row and shoves the brand group off the edge. */
.main-navbar .form-inline.mr-auto,
.main-navbar > .form-inline{margin:0 !important}
.main-navbar .navbar-nav.mr-3{margin:0 !important}
.main-navbar > .form-inline .navbar-nav{gap:10px}
.main-navbar .collapse-btn{order:-1}

/* .form-row is Bootstrap 4 only; without it the stat rows on the user page
   stack vertically instead of sitting side by side. */
.form-row{display:flex; flex-wrap:wrap; margin-right:-5px; margin-left:-5px}
.form-row > [class*="col-"],.form-row > .col{padding-right:5px; padding-left:5px}
.font-20{font-size:20px}
.font-18{font-size:18px}
.form-label{display:inline-block; font-size:12.5px; font-weight:500; color:var(--ink-2); margin-bottom:5px}
.bg-black{background:var(--nav) !important; color:#fff}
.btn-close{
  background:none; border:0; width:28px; height:28px; border-radius:8px;
  color:var(--ink-3); font-size:18px; line-height:1; cursor:pointer; opacity:1;
}
.btn-close:hover{background:var(--sunk); color:var(--ink)}
.btn-close::before{content:"\00d7"}

/* the user-detail stat strip */
.main-content .user-stat,
.main-content .form-row .d-flex.align-items-center{gap:8px}

/* ==========================================================================
   15. Analytics page
   ========================================================================== */
.dz-range{display:inline-flex; gap:4px; background:var(--sunk); border:1px solid var(--line); border-radius:999px; padding:3px}
.dz-range a{
  display:block; padding:6px 16px; border-radius:999px;
  font-size:12.5px; font-weight:500; color:var(--ink-3);
}
.dz-range a:hover{color:var(--ink); opacity:1}
.dz-range a.active{background:var(--grad); background-image:var(--grad); color:#fff}

.dz-week{display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:8px; align-items:end}
.dz-week > div{display:flex; flex-direction:column; align-items:center; gap:6px; min-width:0}
.dz-week .col{
  display:flex; align-items:flex-end; justify-content:center;
  width:100%; height:120px; background:var(--sunk); border-radius:8px; overflow:hidden;
}
.dz-week .col > span{display:block; width:100%; border-radius:8px 8px 0 0; background:var(--grad); background-image:var(--grad)}
.dz-week .n{font-size:12px; font-weight:500; color:var(--ink); font-variant-numeric:tabular-nums}
.dz-week .d{font-size:11.5px; color:var(--ink-3)}

/* ==========================================================================
   16. User detail page
   .user-insight-* also lived in the retired sheets, so the stat cards were
   collapsing into a vertical list with the icon glued to the number.
   ========================================================================== */
.user-insight-grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:12px; margin:0 0 4px;
}
.user-insight-card{
  display:flex; flex-direction:column; align-items:flex-start; gap:2px;
  background:var(--sunk); border:1px solid var(--line);
  border-radius:14px; padding:14px 16px; min-width:0;
}
.user-insight-card > i{
  width:34px; height:34px; margin-bottom:6px; border-radius:11px;
  display:grid; place-items:center; font-size:14px; color:#fff;
  background:var(--grad); background-image:var(--grad); flex:0 0 auto;
}
.user-insight-card > strong{
  font-size:22px; font-weight:700; color:var(--ink); line-height:1.35;
  font-variant-numeric:tabular-nums;
}
.user-insight-card > span{font-size:12px; color:var(--ink-3); line-height:1.6}
.user-data-card{margin-bottom:16px}

/* ==========================================================================
   17. Action bars built from <h2 class="btn">
   Several templates use headings as buttons, so they inherited heading size,
   weight and margins. Normalised here rather than in 29 templates.
   ========================================================================== */
h1.btn,h2.btn,h3.btn,h4.btn,h5.btn{
  font-size:13px !important; font-weight:500 !important;
  line-height:1.7 !important; letter-spacing:0 !important; margin:0 !important;
}
.card-header .d-flex,.card > .card-header .d-flex.ml-auto{display:flex; gap:8px; flex-wrap:wrap; align-items:center}
.card-header .d-flex .btn{margin:0 !important}
.btn > svg,.btn .feather{width:15px; height:15px; flex:0 0 auto}

/* reversible moderation actions read as quiet outlines; only deletion is red */
.card-header .btn.block,.card-header .btn.unblock,
.card-header .btn.allow-live,.card-header .btn.restrict-live{
  background:var(--surf) !important; border:1px solid var(--line-2) !important; color:var(--ink) !important;
}
.card-header .btn.block:hover,.card-header .btn.restrict-live:hover{
  background:var(--crit-bg) !important; border-color:var(--crit) !important; color:var(--crit) !important;
}
.card-header .btn.unblock:hover,.card-header .btn.allow-live:hover{
  background:var(--good-bg) !important; border-color:var(--good) !important; color:var(--good) !important;
}
.card-header .btn.deleteUser{
  background:var(--crit-bg) !important; border:1px solid var(--crit) !important; color:var(--crit) !important;
}
.card-header .btn.deleteUser:hover{background:var(--crit) !important; color:#fff !important}

/* ==========================================================================
   18. Media inside data tables stays a thumbnail
   Highlight covers and post images were rendering at full size and blowing
   the row height out.
   ========================================================================== */
.table td img,
.dataTables_wrapper table td img{
  max-width:72px; max-height:72px; width:auto; height:auto;
  object-fit:cover; border-radius:10px; display:block;
}
.table td img.rounded-circle,.table td img.avatar{max-width:40px; max-height:40px; border-radius:50%}
.table td video{max-width:96px; max-height:72px; border-radius:10px}
.table td{max-width:360px}
.table td .moderation-preview{width:72px; height:72px}

/* the template's own thumbnail class, capped wherever it appears */
.user-media-thumb{
  width:72px !important; height:72px !important;
  object-fit:cover; border-radius:10px; display:block; background:var(--sunk);
}

/* ==========================================================================
   19. Remaining Stisla layout patterns
   These markup shapes are still in the templates but their CSS left with the
   retired sheets, so the pieces were falling back to generic .card rules.
   ========================================================================== */

/* stat tile: icon block + label + value, laid out as one row */
.card.card-statistic-1{
  display:flex; align-items:center; gap:14px;
  padding:16px 18px; overflow:hidden;
}
.card.card-statistic-1 .card-icon{
  width:48px; height:48px; flex:0 0 auto; margin:0;
  border-radius:14px; display:grid; place-items:center;
  color:#fff; font-size:19px;
}
.card.card-statistic-1 .card-wrap{flex:1; min-width:0}
.card.card-statistic-1 .card-wrap .card-header{
  padding:0 !important; border:0 !important; background:transparent !important;
  display:block; min-height:0;
}
.card.card-statistic-1 .card-wrap .card-header h4{
  margin:0; font-size:12.5px; font-weight:400; color:var(--ink-3); line-height:1.6;
}
.card.card-statistic-1 .card-wrap .card-body{
  padding:0 !important; font-size:26px; font-weight:700; color:var(--ink);
  line-height:1.35; font-variant-numeric:tabular-nums;
}

/* page section wrappers */
.section{display:block}
.section-body{display:block; padding-top:4px}
.section-header-button{margin-inline-start:auto}
.tab,.tabs{display:block}

/* Bootstrap 4 custom switch — BS5 renamed it to .form-switch, so the control
   was rendering as a bare checkbox with a floating label */
.custom-control.custom-switch,.custom-switch{
  position:relative; display:inline-flex; align-items:center; gap:10px;
  padding:0; min-height:24px;
}
.custom-switch .custom-control-input{
  position:absolute; opacity:0; width:44px; height:24px; margin:0; cursor:pointer; z-index:2;
}
.custom-switch .custom-control-label{
  position:relative; display:inline-flex; align-items:center; gap:10px;
  margin:0; padding-inline-start:52px; min-height:24px; cursor:pointer;
  font-size:13px; color:var(--ink-2);
}
.custom-switch .custom-control-label::before{
  content:""; position:absolute; inset-inline-start:0; top:50%; transform:translateY(-50%);
  width:44px; height:24px; border-radius:999px;
  background:var(--sunk); border:1px solid var(--line-2); transition:background .16s, border-color .16s;
}
.custom-switch .custom-control-label::after{
  content:""; position:absolute; inset-inline-start:3px; top:50%; transform:translateY(-50%);
  width:18px; height:18px; border-radius:50%; background:var(--surf);
  box-shadow:0 1px 3px rgba(0,0,0,.25); transition:inset-inline-start .16s;
}
.custom-switch .custom-control-input:checked ~ .custom-control-label::before{
  background:var(--grad); background-image:var(--grad); border-color:transparent;
}
.custom-switch .custom-control-input:checked ~ .custom-control-label::after{inset-inline-start:23px}
.custom-switch .custom-control-input:focus-visible ~ .custom-control-label::before{outline:2px solid var(--c2); outline-offset:2px}

/* plain checkboxes and radios pick up the brand tint instead of the browser default */
input[type="checkbox"],input[type="radio"]{
  accent-color:var(--c2); width:16px; height:16px; cursor:pointer; vertical-align:-2px;
}
input[type="checkbox"]:disabled,input[type="radio"]:disabled{cursor:not-allowed; opacity:.5}

/* ==========================================================================
   20. Interests page
   Its inline <style> pins the card to #fff while the text colour comes from
   the theme, so in dark mode it was white on white. Restated on tokens.
   ========================================================================== */
.main-content .interest-category-item{
  background:var(--surf) !important;
  border:1px solid var(--line) !important;
  border-radius:12px !important;
  color:var(--ink) !important;
  padding:13px 14px !important;
}
.main-content .interest-category-item:hover{border-color:var(--line-2) !important}
.main-content .interest-category-item.is-off{opacity:1}
.main-content .interest-category-item.is-off .interest-category-title{opacity:.55}
.main-content .interest-category-title{color:var(--ink) !important; font-size:13.5px; font-weight:500}
.main-content .interest-category-title strong,
.main-content .interest-category-title b{color:var(--ink) !important}
.main-content .interest-category-meta{color:var(--ink-3) !important; font-size:12px !important}
.main-content .interest-help{color:var(--ink-3) !important}
.main-content .interest-category-actions{gap:8px !important; flex-wrap:wrap}
.main-content .interest-category-actions .btn{padding:5px 12px; font-size:12px; border-radius:9px}
.main-content .interest-category-list{
  gap:9px !important; padding-inline-end:4px;
  scrollbar-width:thin; scrollbar-color:var(--line-2) transparent;
}
.main-content .interest-category-list::-webkit-scrollbar{width:6px}
.main-content .interest-category-list::-webkit-scrollbar-thumb{background:var(--line-2); border-radius:9px}
.main-content .interest-category-list::-webkit-scrollbar-track{background:transparent}

/* the toggle/edit controls the page builds in JS */
.main-content .interest-category-actions .btn-dark,
.main-content .btn-dark{
  background:var(--sunk) !important; border:1px solid var(--line-2) !important;
  color:var(--ink) !important;
}
.main-content .interest-category-actions .btn-dark:hover,
.main-content .btn-dark:hover{background:var(--line) !important}
.main-content .interest-category-actions .btn-link,
.main-content .interest-category-actions a:not(.btn){
  color:var(--accent) !important; font-size:12.5px; text-decoration:none;
}
.main-content .interest-category-item .badge{background:var(--mute-bg) !important; color:var(--mute) !important}

/* ==========================================================================
   21. Remaining light-locked page components
   Found by scanning every inline <style> for a hardcoded white/near-white
   background or near-black text. Structure is left alone; only the colour
   is restated so both themes resolve.
   (event-share is intentionally excluded — it is a public page and does not
   load this stylesheet.)
   ========================================================================== */

/* surfaces */
.main-content .notification-center,
.main-content .bug-admin,
.main-content .dropdown-content,
.main-content .hk{
  background:var(--surf) !important;
  border-color:var(--line) !important;
  color:var(--ink) !important;
}

/* chat-style bubbles on the bug ticket page */
.main-content .ticket-message.admin,
.main-content .ticket-message .admin,
.main-content .admin{background:var(--accent-soft) !important; color:var(--ink) !important; border-color:var(--brand-line,var(--line)) !important}
.main-content .ticket-message.internal,
.main-content .internal{background:var(--warn-bg) !important; color:var(--warn) !important; border-color:transparent !important}

/* soft badges and chips */
.main-content .badge-soft,
.main-content .faq-chip{
  background:var(--sunk) !important; color:var(--ink-2) !important;
  border:1px solid var(--line) !important; border-radius:999px;
}

/* tab strips these pages roll themselves */
.main-content .legal-tabs,
.main-content .verify-tabs{
  display:flex; flex-wrap:wrap; gap:4px;
  background:var(--sunk) !important; border:1px solid var(--line) !important;
  border-radius:999px; padding:3px;
}
.main-content .legal-tabs a,.main-content .legal-tabs button,
.main-content .verify-tabs a,.main-content .verify-tabs button{
  background:transparent !important; border:0 !important; border-radius:999px !important;
  color:var(--ink-3) !important; font-size:12.5px; font-weight:500; padding:6px 16px;
}
.main-content .legal-tabs a:hover,.main-content .verify-tabs a:hover{color:var(--ink) !important}
.main-content .legal-tabs .active,.main-content .verify-tabs .active,
.main-content .legal-tabs a.active,.main-content .verify-tabs a.active{
  background:var(--grad) !important; background-image:var(--grad) !important; color:#fff !important;
}

.main-content .legal-active{background:var(--good-bg) !important; color:var(--good) !important; border-color:transparent !important}
.main-content .legal-required{background:var(--crit-bg) !important; color:var(--crit) !important; border-color:transparent !important}

/* close glyphs on the fake-user dialog */
.main-content .closeicon,.main-content .closeArtistIcon{
  background:var(--sunk) !important; color:var(--ink-2) !important;
  border:1px solid var(--line) !important; border-radius:8px;
}
.main-content .closeicon:hover,.main-content .closeArtistIcon:hover{background:var(--line) !important; color:var(--ink) !important}
.main-content .dropbtn{
  background:var(--surf) !important; color:var(--ink) !important;
  border:1px solid var(--line-2) !important; border-radius:var(--r);
}
.main-content .dropbtn:hover{background:var(--sunk) !important}

/* light gradient panels — the shorthand has to be reset, not just the colour */
.main-content .hero,
.main-content .notification-center{
  background:var(--sunk) !important;
  background-image:none !important;
  border:1px solid var(--line) !important;
  color:var(--ink) !important;
}
.main-content .hero h1,.main-content .hero h2,.main-content .hero h3,
.main-content .hero h4,.main-content .hero strong{color:var(--ink) !important}
.main-content .hero p,.main-content .hero span:not(.badge):not(.dz-chip){color:var(--ink-2) !important}
.main-content .hk{background-image:none !important; background:var(--surf) !important}
