:root{
      --brand:        #635bff;
      --brand-600:    #524be0;
      --brand-soft:   rgba(99,91,255,.12);
      --sidebar-w:    266px;
      --sidebar-w-sm: 78px;
      --topbar-h:     66px;
      --radius:       12px;
      --ring:         0 0 0 .2rem var(--brand-soft);
    }

    /* ---- theme surfaces ---------------------------------------------- */
    [data-bs-theme="light"]{
      --app-bg:      #f5f6fb;
      --surface:     #ffffff;
      --border:      #e9eaf1;
      --text:        #1c1f2a;
      --muted:       #6b7280;
      --sidebar-bg:  #0f1424;
      --sidebar-fg:  #aeb4c7;
      --sidebar-fg-strong:#ffffff;
      --sidebar-hover:rgba(255,255,255,.06);
      --sidebar-section:#5c6480;
    }
    [data-bs-theme="dark"]{
      --app-bg:      #0b0e17;
      --surface:     #141926;
      --border:      #232a3b;
      --text:        #e7e9f0;
      --muted:       #8a91a6;
      --sidebar-bg:  #0a0d16;
      --sidebar-fg:  #9aa1b8;
      --sidebar-fg-strong:#ffffff;
      --sidebar-hover:rgba(255,255,255,.05);
      --sidebar-section:#565e79;
    }

    body{
      font-family:'Inter',system-ui,-apple-system,sans-serif;
      background:var(--app-bg);
      color:var(--text);
      -webkit-font-smoothing:antialiased;
    }
    h1,h2,h3,h4,h5,h6,.brand-font{ font-family:'Plus Jakarta Sans','Inter',sans-serif; }

    /* ---- layout shell ------------------------------------------------ */
    .app{ display:flex; min-height:100vh; }

    .app-main{
      flex:1 1 auto;
      min-width:0;
      margin-left:var(--sidebar-w);
      display:flex;
      flex-direction:column;
      transition:margin-left .22s ease;
    }
    .app.is-collapsed .app-main{ margin-left:var(--sidebar-w-sm); }

    .page-content{ flex:1 1 auto; padding:1.5rem; }
    @media (min-width:1200px){ .page-content{ padding:1.75rem 2rem; } }

    /* ---- sidebar ----------------------------------------------------- */
    .sidebar{
      position:fixed; inset:0 auto 0 0;
      width:var(--sidebar-w);
      background:var(--sidebar-bg);
      color:var(--sidebar-fg);
      display:flex; flex-direction:column;
      z-index:1045;
      transition:width .22s ease, transform .22s ease;
      overflow:hidden;
    }
    .app.is-collapsed .sidebar{ width:var(--sidebar-w-sm); }

    .sidebar-brand{
      height:var(--topbar-h);
      display:flex; align-items:center; gap:.7rem;
      padding:0 1.35rem;
      color:var(--sidebar-fg-strong);
      font-family:'Plus Jakarta Sans',sans-serif;
      font-weight:800; font-size:1.15rem; letter-spacing:-.02em;
      white-space:nowrap;
      flex-shrink:0;
    }
    .sidebar-brand .logo-mark{
      width:34px; height:34px; border-radius:9px; flex-shrink:0;
      display:grid; place-items:center;
      background:linear-gradient(135deg,var(--brand),#8f7bff);
      color:#fff; font-size:1.05rem;
    }

    .sidebar-scroll{ flex:1 1 auto; overflow-y:auto; padding:.5rem .75rem 1.25rem; }
    .sidebar-scroll::-webkit-scrollbar{ width:6px; }
    .sidebar-scroll::-webkit-scrollbar-thumb{ background:rgba(255,255,255,.12); border-radius:3px; }

    .nav-section{
      padding:1.1rem .75rem .4rem;
      font-size:.68rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
      color:var(--sidebar-section);
      white-space:nowrap;
    }
    .sidebar .nav-link{
      display:flex; align-items:center; gap:.85rem;
      padding:.62rem .75rem; margin:.12rem 0;
      border-radius:9px;
      color:var(--sidebar-fg);
      font-size:.9rem; font-weight:500;
      white-space:nowrap;
      transition:background .15s, color .15s;
    }
    .sidebar .nav-link i{ font-size:1.12rem; flex-shrink:0; width:1.3rem; text-align:center; }
    .sidebar .nav-link:hover{ background:var(--sidebar-hover); color:var(--sidebar-fg-strong); }
    .sidebar .nav-link.active{ background:var(--brand); color:#fff; box-shadow:0 6px 16px -6px var(--brand); }
    .sidebar .nav-link .badge{ margin-left:auto; }
    .sidebar .nav-link .caret{ margin-left:auto; transition:transform .2s; font-size:.85rem; }
    .sidebar .nav-link[aria-expanded="true"] .caret{ transform:rotate(90deg); }

    .sidebar .submenu{ list-style:none; margin:.15rem 0 .3rem; padding:0 0 0 2.15rem; }
    .sidebar .submenu .nav-link{ padding:.45rem .7rem; font-size:.85rem; }

    /* collapsed (icon-only) state — desktop */
    @media (min-width:992px){
      .app.is-collapsed .sidebar-brand span,
      .app.is-collapsed .nav-section,
      .app.is-collapsed .nav-link .nav-text,
      .app.is-collapsed .nav-link .caret,
      .app.is-collapsed .nav-link .badge{ display:none; }
      .app.is-collapsed .sidebar .nav-link{ justify-content:center; }
      .app.is-collapsed .sidebar .submenu{ display:none !important; }
      .app.is-collapsed .sidebar-brand{ justify-content:center; padding:0; }
    }

    /* ---- topbar ------------------------------------------------------ */
    .topbar{
      height:var(--topbar-h);
      position:sticky; top:0; z-index:1030;
      background:var(--surface);
      border-bottom:1px solid var(--border);
      display:flex; align-items:center; gap:.75rem;
      padding:0 1.25rem;
    }
    .topbar .icon-btn{
      width:40px; height:40px; border-radius:10px; border:0;
      background:transparent; color:var(--muted);
      display:grid; place-items:center; font-size:1.2rem;
      position:relative;
    }
    .topbar .icon-btn:hover{ background:var(--app-bg); color:var(--text); }
    .topbar .search{ max-width:340px; flex:1 1 auto; }
    .topbar .search .form-control{
      background:var(--app-bg); border-color:transparent; border-radius:10px;
    }
    .topbar .search .form-control:focus{ box-shadow:var(--ring); border-color:var(--brand); }
    .dot-badge{
      position:absolute; top:7px; right:8px;
      width:8px; height:8px; border-radius:50%;
      background:#f43f5e; border:2px solid var(--surface);
    }

    .avatar{
      width:38px; height:38px; border-radius:50%;
      display:grid; place-items:center; font-weight:700; font-size:.85rem;
      background:var(--brand-soft); color:var(--brand);
    }

    /* ---- cards / helpers --------------------------------------------- */
    .card{ border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); }
    .card-soft{ box-shadow:0 1px 2px rgba(16,24,40,.04); }
    .stat-icon{
      width:46px; height:46px; border-radius:11px;
      display:grid; place-items:center; font-size:1.35rem;
    }
    .page-title{ font-weight:800; letter-spacing:-.02em; margin:0; }

    .app-footer{
      border-top:1px solid var(--border);
      padding:1rem 1.5rem;
      color:var(--muted); font-size:.85rem;
      display:flex; flex-wrap:wrap; gap:.5rem; justify-content:space-between;
      background:var(--surface);
    }

    /* ---- mobile off-canvas ------------------------------------------ */
    .sidebar-backdrop{
      position:fixed; inset:0; background:rgba(8,11,20,.5);
      z-index:1044; opacity:0; visibility:hidden; transition:opacity .2s;
    }
    @media (max-width:991.98px){
      .app-main{ margin-left:0 !important; }
      .sidebar{ transform:translateX(-100%); width:var(--sidebar-w) !important; }
      .app.is-mobile-open .sidebar{ transform:translateX(0); }
      .app.is-mobile-open .sidebar-backdrop{ opacity:1; visibility:visible; }
    }

    @media (prefers-reduced-motion:reduce){
      *{ transition:none !important; }
    }

    body{ font-family:'Inter',system-ui,sans-serif; background:var(--page); color:var(--text); margin:0; }
    .brand-font{ font-family:'Plus Jakarta Sans','Inter',sans-serif; }

    .auth{ min-height:100vh; display:grid; place-items:center; padding:1.5rem; }
    @media (max-width:991.98px){ .auth{ grid-template-columns:1fr; } }

    /* left brand panel */
    .auth-brand{
      position:relative; overflow:hidden; color:#fff;
      padding:3rem; display:flex; flex-direction:column; justify-content:space-between;
      background:radial-gradient(120% 120% at 0% 0%, #7b6cff 0%, #635bff 42%, #3f37b8 100%);
    }
    @media (max-width:991.98px){ .auth-brand{ display:none; } }
    .auth-brand::after{
      content:""; position:absolute; right:-120px; bottom:-120px;
      width:420px; height:420px; border-radius:50%;
      background:rgba(255,255,255,.08);
    }
    .auth-logo{ display:flex; align-items:center; gap:.7rem; font-weight:800; font-size:1.25rem; }
    .auth-logo .mark{ width:40px; height:40px; border-radius:11px; display:grid; place-items:center;
      background:rgba(255,255,255,.16); font-size:1.2rem; }
    .auth-brand h1{ font-weight:800; font-size:2.15rem; line-height:1.12; letter-spacing:-.02em; max-width:15ch; }
    .auth-brand .lede{ color:rgba(255,255,255,.82); max-width:34ch; }
    .auth-brand ul{ list-style:none; padding:0; margin:0; display:grid; gap:.65rem; }
    .auth-brand li{ display:flex; align-items:center; gap:.6rem; color:rgba(255,255,255,.92); }
    .auth-brand li i{ color:#fff; }
    .auth-brand .foot{ color:rgba(255,255,255,.7); font-size:.85rem; position:relative; z-index:1; }

    /* right form panel */
    .auth-form{ display:grid; place-items:center; padding:2rem 1.25rem; }
    .auth-card{ width:100%; max-width:410px; }
    .auth-card .head h2{ font-weight:800; letter-spacing:-.02em; margin:0 0 .35rem; }
    .auth-card .head p{ color:var(--muted); margin:0 0 1.5rem; }

    .form-label{ font-weight:600; font-size:.85rem; }
    .input-icon{ position:relative; }
    .input-icon > i{ position:absolute; top:50%; left:.9rem; transform:translateY(-50%); color:var(--muted); }
    .input-icon .form-control{ padding-left:2.5rem; }
    .form-control{ background:var(--surface); border-color:var(--border); border-radius:10px; padding-top:.6rem; padding-bottom:.6rem; }
    .form-control:focus{ border-color:var(--brand); box-shadow:0 0 0 .2rem var(--brand-soft); }
    .btn-brand{ background:var(--brand); border:0; color:#fff; border-radius:10px; padding:.65rem; font-weight:600; }
    .btn-brand:hover{ background:var(--brand-600); color:#fff; }
    .toggle-pw{ position:absolute; top:50%; right:.35rem; transform:translateY(-50%);
      border:0; background:transparent; color:var(--muted); padding:.4rem .6rem; }