/* =========================================================================
   SAKTI BPR — Design System
   Identitas: perbankan korporat (navy), aksen biru, permukaan bersih.
   ========================================================================= */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');

:root{
  --primary:#0d6efd;
  --primary-dark:#0a58ca;
  --primary-soft:#e8f1ff;
  --navy:#0a2558;
  --navy-deep:#061633;
  --navy-soft:#12386f;
  --canvas:#f4f7fb;
  --surface:#ffffff;
  --border:#e2e8f0;
  --border-strong:#cbd5e1;
  --text:#0f172a;
  --text-mid:#334155;
  --muted:#64748b;
  --muted-2:#94a3b8;
  --success:#16a34a;
  --success-soft:#dcfce7;
  --warning:#d97706;
  --warning-soft:#fef3c7;
  --danger:#dc2626;
  --danger-soft:#fee2e2;
  --info:#0284c7;
  --info-soft:#e0f2fe;
  --violet:#7c3aed;
  --radius:14px;
  --radius-sm:10px;
  --radius-xs:8px;
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --shadow:0 4px 16px rgba(15,23,42,.06);
  --shadow-lg:0 18px 45px rgba(15,23,42,.16);
  --sidebar-w:268px;
  --topbar-h:70px;
  --font:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--font);
  background:var(--canvas);
  color:var(--text);
  font-size:14px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:var(--primary);text-decoration:none}
button{font-family:inherit}
input,select,textarea{font-family:inherit}
::selection{background:#bfdbfe;color:#082f49}
.hidden{display:none !important}
.muted{color:var(--muted)}
.small{font-size:12px}
.center{text-align:center}
.right{text-align:right}
.nowrap{white-space:nowrap}
.mono{font-variant-numeric:tabular-nums}

/* ---------------- AUTH ---------------- */
.auth-wrap{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;background:#fff}
.auth-hero{
  position:relative;overflow:hidden;padding:46px 52px;
  background:linear-gradient(155deg,#04122b 0%,#071f45 45%,#0b3a78 100%);
  color:#fff;display:flex;flex-direction:column;justify-content:space-between;gap:34px;
}
.auth-hero::before{
  content:'';position:absolute;width:620px;height:620px;border-radius:50%;
  background:radial-gradient(circle,rgba(56,189,248,.28) 0%,rgba(56,189,248,0) 68%);
  top:-190px;right:-190px;
}
.auth-hero::after{
  content:'';position:absolute;width:520px;height:520px;border-radius:50%;
  background:radial-gradient(circle,rgba(13,110,253,.32) 0%,rgba(13,110,253,0) 70%);
  bottom:-220px;left:-140px;
}
.auth-hero>*{position:relative;z-index:2}
.auth-brand{display:flex;align-items:center;gap:13px}
.auth-mark{
  width:46px;height:46px;border-radius:13px;background:#fff;color:var(--primary);
  display:grid;place-items:center;font-size:21px;box-shadow:0 10px 24px rgba(2,12,32,.35);flex-shrink:0;
}
.auth-brand h1{font-size:19px;font-weight:800;letter-spacing:-.3px;line-height:1.15}
.auth-brand span{font-size:10.5px;letter-spacing:.6px;text-transform:uppercase;color:#9dc0ee;font-weight:700}
.auth-hero-mid{max-width:540px;margin:8px 0 auto}
.auth-pill{
  display:inline-flex;align-items:center;gap:8px;padding:6px 13px;border-radius:30px;
  background:rgba(56,189,248,.14);border:1px solid rgba(56,189,248,.42);
  color:#93ddff;font-size:11px;font-weight:800;letter-spacing:.4px;margin-bottom:16px;
}
.auth-hero h2{font-size:35px;line-height:1.16;font-weight:800;letter-spacing:-1px;margin-bottom:13px}
.auth-hero h2 em{font-style:normal;color:#7dd3fc}
.auth-hero p.lead{color:#c7d7ee;font-size:14px;line-height:1.7;max-width:500px}
.auth-features{display:grid;gap:10px;margin-top:26px}
.auth-feature{
  display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:11px;
  background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.1);
}
.auth-feature i{color:#38bdf8;font-size:15px;margin-top:2px}
.auth-feature strong{display:block;font-size:12.5px;font-weight:700;color:#f1f5f9}
.auth-feature span{font-size:11.5px;color:#a9bdd8;line-height:1.45}
.auth-foot{font-size:11.5px;color:#8fa9c9;line-height:1.6}
.auth-panel{display:flex;align-items:center;justify-content:center;padding:44px 40px;background:#fff;overflow-y:auto}
.auth-form{width:100%;max-width:430px}
.auth-form-head{margin-bottom:24px}
.auth-form-head h2{font-size:24px;font-weight:800;letter-spacing:-.5px;color:#0b1a33}
.auth-form-head p{color:var(--muted);font-size:13px;margin-top:5px}
.auth-tabs{display:flex;background:#f1f5f9;padding:4px;border-radius:10px;margin-bottom:22px}
.auth-tab{
  flex:1;border:0;background:transparent;border-radius:8px;padding:9px 8px;cursor:pointer;
  font-size:12.5px;font-weight:700;color:var(--muted);transition:.18s;
}
.auth-tab.active{background:#fff;color:var(--navy);box-shadow:0 2px 6px rgba(15,23,42,.08)}
.field{margin-bottom:14px}
.field label{display:block;font-size:12px;font-weight:700;color:#3b4a63;margin-bottom:6px}
.input-icon{position:relative}
.input-icon>i{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted-2);font-size:13px}
.input-icon .input-icon-btn{
  position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:none;
  color:var(--muted-2);cursor:pointer;padding:6px;border-radius:6px;
}
.input-icon .input-icon-btn:hover{background:#eef2f7;color:var(--text-mid)}
.control{
  width:100%;padding:10px 12px;border:1px solid var(--border-strong);border-radius:9px;
  font-size:13px;color:var(--text);background:#fff;outline:none;transition:.16s;
}
.input-icon .control{padding-left:38px}
.control:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,110,253,.13)}
.control::placeholder{color:#a3aebf}
.control:disabled{background:#f1f5f9;color:var(--muted)}
textarea.control{resize:vertical;line-height:1.55;min-height:72px}
select.control{appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;
  border-radius:9px;padding:9px 15px;font-size:12.5px;font-weight:700;cursor:pointer;
  transition:transform .12s,box-shadow .16s,background .16s;white-space:nowrap;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:linear-gradient(180deg,#1a78ff,var(--primary));color:#fff;box-shadow:0 4px 12px rgba(13,110,253,.28)}
.btn-primary:hover{background:linear-gradient(180deg,#0f6cf7,#0a58ca)}
.btn-navy{background:linear-gradient(180deg,#143d78,var(--navy));color:#fff;box-shadow:0 4px 12px rgba(10,37,88,.28)}
.btn-navy:hover{background:var(--navy-deep)}
.btn-success{background:linear-gradient(180deg,#1eb457,#16a34a);color:#fff;box-shadow:0 4px 12px rgba(22,163,74,.24)}
.btn-danger{background:#fff;color:var(--danger);border-color:#fecaca}
.btn-danger:hover{background:#fef2f2}
.btn-ghost{background:#fff;color:var(--text-mid);border-color:var(--border-strong)}
.btn-ghost:hover{background:#f8fafc;border-color:#b6c2d2}
.btn-soft{background:var(--primary-soft);color:var(--primary-dark);border-color:#cfe2ff}
.btn-soft:hover{background:#dbeafe}
.btn-block{width:100%}
.btn-sm{padding:6px 10px;font-size:11.5px;border-radius:7px}
.btn-lg{padding:12px 18px;font-size:13.5px;border-radius:10px}
.auth-submit{width:100%;padding:12px;border-radius:10px;font-size:13.5px;margin-top:4px}
.auth-note{font-size:11.5px;color:var(--muted);line-height:1.55;background:#f7f9fc;border:1px solid var(--border);border-radius:9px;padding:10px 12px;margin-top:14px}
.auth-demo{margin-top:18px;border-top:1px dashed var(--border-strong);padding-top:14px}
.auth-demo h4{font-size:10.5px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);font-weight:800;margin-bottom:8px}
.demo-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.demo-btn{
  text-align:left;border:1px solid var(--border);background:#fff;border-radius:9px;padding:8px 10px;cursor:pointer;transition:.16s;
}
.demo-btn:hover{border-color:var(--primary);background:#f5f9ff}
.demo-btn strong{display:block;font-size:11.5px;color:var(--text);font-weight:800}
.demo-btn span{display:block;font-size:10px;color:var(--muted);margin-top:1px}
.auth-alert{
  display:none;gap:9px;align-items:flex-start;background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;
  border-radius:9px;padding:10px 12px;font-size:12px;margin-bottom:14px;line-height:1.5;
}
.auth-alert.show{display:flex}
.auth-alert.success{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pw-meter{height:4px;border-radius:4px;background:#e2e8f0;margin-top:6px;overflow:hidden}
.pw-meter i{display:block;height:100%;width:0;background:var(--danger);transition:.25s}

/* ---------------- APP SHELL ---------------- */
.app{display:flex;min-height:100vh}
.sidebar{
  position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);height:100dvh;
  background:linear-gradient(180deg,#081f45 0%,#061633 100%);
  color:#fff;display:flex;flex-direction:column;z-index:120;
  box-shadow:4px 0 24px rgba(3,12,28,.16);transition:transform .26s ease;
}
.sb-head{padding:18px 18px 16px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(255,255,255,.08)}
.sb-mark{
  width:42px;height:42px;border-radius:11px;background:#fff;color:var(--primary);
  display:grid;place-items:center;font-size:19px;flex-shrink:0;box-shadow:0 6px 16px rgba(0,0,0,.25);
}
.sb-head h1{font-size:17px;font-weight:800;letter-spacing:-.3px;line-height:1.1}
.sb-head p{font-size:9.5px;color:#8fa8c9;letter-spacing:.5px;text-transform:uppercase;font-weight:700;margin-top:3px}
.sb-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:12px 11px 18px;scrollbar-width:thin;scrollbar-color:#27476f transparent}
.sb-scroll::-webkit-scrollbar{width:7px}
.sb-scroll::-webkit-scrollbar-thumb{background:#27476f;border-radius:8px}
.sb-group{font-size:9.5px;letter-spacing:.9px;text-transform:uppercase;color:#6e88a8;font-weight:800;margin:15px 10px 6px}
.nav-item{
  display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;color:#c3d3e8;
  font-size:12.7px;font-weight:600;cursor:pointer;margin-bottom:2px;transition:.15s;position:relative;
}
.nav-item i{width:17px;text-align:center;font-size:13.5px;color:#8fb0d6;transition:.15s}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item:hover i{color:#fff}
.nav-item.active{background:linear-gradient(90deg,#1554c4,#0d6efd);color:#fff;box-shadow:0 6px 16px rgba(13,110,253,.34)}
.nav-item.active i{color:#fff}
.nav-item .nav-count{
  margin-left:auto;background:rgba(255,255,255,.16);color:#e8f1ff;padding:1px 7px;
  border-radius:20px;font-size:10px;font-weight:800;min-width:22px;text-align:center;
}
.nav-item.active .nav-count{background:rgba(255,255,255,.26)}
.nav-item .nav-count.accent{background:#0ea5e9;color:#fff}
.nav-item.special{background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.32);color:#fde68a}
.nav-item.special i{color:#fbbf24}
.nav-item.special:hover{background:rgba(245,158,11,.2)}
.nav-item.special.active{background:linear-gradient(90deg,#b45309,#f59e0b);border-color:transparent;color:#fff}
.sb-foot{padding:12px 15px;border-top:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.16);display:flex;align-items:center;gap:10px}
.sb-foot .dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.18)}
.sb-foot strong{display:block;font-size:11px;color:#e5edf8;font-weight:800}
.sb-foot span{display:block;font-size:9.5px;color:#8fa8c9}
.sb-foot .ver{margin-left:auto;font-size:9.5px;color:#7d95b4;font-weight:700}

.main{margin-left:var(--sidebar-w);flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{
  position:sticky;top:0;z-index:100;height:var(--topbar-h);background:rgba(255,255,255,.94);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 24px;
}
.tb-left{display:flex;align-items:center;gap:14px;min-width:0}
.icon-btn{
  width:36px;height:36px;border-radius:9px;border:1px solid var(--border);background:#fff;color:var(--text-mid);
  display:grid;place-items:center;cursor:pointer;font-size:14px;transition:.15s;flex-shrink:0;
}
.icon-btn:hover{background:#f1f5f9;color:var(--primary);border-color:#bfdbfe}
.tb-brand{display:flex;align-items:center;gap:11px;min-width:0}
.tb-logo{
  width:42px;height:42px;border-radius:10px;background:var(--primary-soft);color:var(--primary);
  display:grid;place-items:center;font-size:19px;flex-shrink:0;overflow:hidden;border:1px solid #d6e6ff;
}
.tb-logo img{width:100%;height:100%;object-fit:contain;background:#fff}
.tb-brand h2{font-size:15.5px;font-weight:800;color:#0b1a33;line-height:1.2;letter-spacing:-.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:46vw}
.tb-brand p{font-size:10.5px;color:var(--muted);font-weight:600;margin-top:1px}
.tb-brand p b{color:var(--danger);font-weight:800}
.tb-right{display:flex;align-items:center;gap:10px;flex-shrink:0}
.pill{
  display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:20px;
  font-size:10.5px;font-weight:800;border:1px solid transparent;white-space:nowrap;
}
.pill.navy{background:#eaf1fb;color:#12386f;border-color:#d3e2f5}
.pill.green{background:var(--success-soft);color:#15803d;border-color:#bbf7d0}
.pill.amber{background:var(--warning-soft);color:#92400e;border-color:#fde68a}
.pill.red{background:var(--danger-soft);color:#b91c1c;border-color:#fecaca}
.pill.blue{background:var(--info-soft);color:#0369a1;border-color:#bae6fd}
.pill.gray{background:#f1f5f9;color:#475569;border-color:#e2e8f0}
.notif-btn{position:relative}
.notif-btn .dot{
  position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;border-radius:20px;background:#ef4444;
  color:#fff;font-size:9.5px;font-weight:800;display:grid;place-items:center;border:2px solid #fff;padding:0 3px;
}
.user-chip{display:flex;align-items:center;gap:9px;padding:5px 9px 5px 6px;border:1px solid var(--border);background:#f8fafc;border-radius:10px}
.avatar{
  width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#1e40af,#0d6efd);color:#fff;
  display:grid;place-items:center;font-size:13px;font-weight:800;flex-shrink:0;
}
.user-chip .u-name{font-size:12px;font-weight:800;color:#0b1a33;line-height:1.2;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-chip .u-role{font-size:9.5px;font-weight:700;color:var(--muted);letter-spacing:.2px}
.user-chip .u-meta{display:flex;flex-direction:column;gap:1px;cursor:pointer}
.icon-btn.logout:hover{color:var(--danger);border-color:#fecaca;background:#fef2f2}

.content{padding:22px 24px 40px;flex:1;min-width:0}
.content-inner{max-width:1560px;margin:0 auto}
.view{display:none;animation:fadeUp .22s ease-out}
.view.active{display:block}
@keyframes fadeUp{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}

/* admin-mode strip */
.admin-strip{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:linear-gradient(100deg,#3b1d02,#92400e 60%,#b45309);color:#fff;border-radius:12px;
  padding:11px 16px;margin-bottom:16px;font-size:12px;box-shadow:0 6px 18px rgba(146,64,14,.22);
}
.admin-strip strong{font-weight:800}
.admin-strip .btn{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.35);color:#fff}
.admin-strip .btn:hover{background:rgba(255,255,255,.26)}

/* ---------------- CARDS & SECTIONS ---------------- */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:18px;overflow:hidden}
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:16px 18px;border-bottom:1px solid var(--border);flex-wrap:wrap;background:#fff}
.card-head h3{font-size:14.5px;font-weight:800;color:#0b1a33;display:flex;align-items:center;gap:9px;letter-spacing:-.2px}
.card-head h3 i{color:var(--primary)}
.card-head p{font-size:11.8px;color:var(--muted);margin-top:4px;line-height:1.55;max-width:900px}
.card-body{padding:18px}
.card-body.tight{padding:14px}
.card-tools{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.section-grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.split{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.stack{display:grid;gap:16px}

/* HERO */
.hero{
  position:relative;overflow:hidden;border-radius:16px;padding:24px 26px;margin-bottom:18px;color:#fff;
  background:linear-gradient(120deg,#061633 0%,#0a2f66 52%,#0d6efd 130%);
  box-shadow:0 14px 34px rgba(6,22,51,.22);display:flex;justify-content:space-between;gap:22px;flex-wrap:wrap;align-items:center;
}
.hero::after{
  content:'';position:absolute;right:-100px;top:-120px;width:340px;height:340px;border-radius:50%;
  background:radial-gradient(circle,rgba(56,189,248,.3),transparent 68%);pointer-events:none;
}
.hero-left{max-width:720px;position:relative;z-index:2}
.hero-badge{
  display:inline-flex;align-items:center;gap:7px;background:rgba(56,189,248,.16);border:1px solid rgba(56,189,248,.4);
  color:#9be3ff;padding:5px 12px;border-radius:30px;font-size:10.5px;font-weight:800;letter-spacing:.45px;margin-bottom:11px;
}
.hero h2{font-size:23px;font-weight:800;letter-spacing:-.5px;line-height:1.25;margin-bottom:7px}
.hero h2 em{font-style:normal;color:#7dd3fc}
.hero p{font-size:12.5px;color:#c5d7ee;line-height:1.65;max-width:690px}
.hero-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:15px}
.hero-actions .btn-ghost{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.28)}
.hero-actions .btn-ghost:hover{background:rgba(255,255,255,.2)}
.hero-score{
  position:relative;z-index:2;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);
  border-radius:14px;padding:16px 20px;min-width:210px;backdrop-filter:blur(6px);text-align:center;
}
.hero-score .lbl{font-size:10px;letter-spacing:.7px;text-transform:uppercase;color:#9fbedd;font-weight:800}
.hero-score .val{font-size:38px;font-weight:800;line-height:1.1;letter-spacing:-1.5px;margin-top:2px}
.hero-score .sub{font-size:11px;color:#c5d7ee;margin-top:2px}
.hero-score .bar{height:6px;border-radius:6px;background:rgba(255,255,255,.2);margin-top:10px;overflow:hidden}
.hero-score .bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#7dd3fc,#22c55e);transition:width .6s}
.period-select{display:flex;align-items:center;gap:8px;margin-top:10px;justify-content:center}
.period-select select{
  background:rgba(9,26,52,.55);border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:8px;
  padding:6px 10px;font-size:11.5px;font-weight:700;outline:none;cursor:pointer;
}
.period-select select option{background:#0a2558;color:#fff}

/* KPI */
.kpi-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;margin-bottom:18px}
.kpi{
  background:#fff;border:1px solid var(--border);border-radius:12px;padding:13px 13px 12px;
  cursor:pointer;transition:.18s;position:relative;overflow:hidden;
}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#c7d7ea}
.kpi-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;font-size:13px;margin-bottom:9px}
.kpi h4{font-size:11px;color:#475569;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px}
.kpi .val{font-size:21px;font-weight:800;letter-spacing:-.7px;color:#0b1a33;line-height:1.15}
.kpi .sub{font-size:9.5px;font-weight:700;margin-top:3px;color:var(--muted)}
.kpi .sub.ok{color:var(--success)}
.kpi .sub.warn{color:var(--warning)}
.kpi .sub.bad{color:var(--danger)}
.kpi .bar{height:4px;border-radius:4px;background:#eef2f7;margin-top:8px;overflow:hidden}
.kpi .bar i{display:block;height:100%;border-radius:4px}
.kpi .mini-val{position:absolute;right:12px;top:12px;font-size:9.5px;font-weight:800;color:var(--muted-2)}
.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}
.stat{background:#fff;border:1px solid var(--border);border-radius:12px;padding:15px 16px;display:flex;gap:13px;align-items:center}
.stat .ic{width:44px;height:44px;border-radius:11px;display:grid;place-items:center;font-size:17px;flex-shrink:0}
.stat .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:800}
.stat .num{font-size:22px;font-weight:800;color:#0b1a33;letter-spacing:-.6px;line-height:1.2}
.stat .cap{font-size:10.5px;color:var(--muted);margin-top:1px}

/* charts */
.chart-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;margin-bottom:18px}
.chart-card h3{font-size:13.5px;font-weight:800;color:#0b1a33;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.chart-card h3 span{font-size:10.5px;color:var(--muted);font-weight:600}
.chart-wrap{position:relative;height:260px}
.chart-wrap.sm{height:200px}
.chart-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:16px;margin-bottom:18px}

/* tables */
.table-wrap{overflow-x:auto;border-radius:0}
table.tbl{width:100%;border-collapse:collapse;text-align:left;font-size:12.2px}
table.tbl th{
  background:#f7f9fc;color:#475569;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;
  padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;z-index:1;
}
table.tbl td{padding:10px 12px;border-bottom:1px solid #edf1f7;vertical-align:top;color:var(--text-mid);line-height:1.55}
table.tbl tbody tr:hover{background:#f9fbfe}
table.tbl tbody tr:last-child td{border-bottom:0}
table.tbl td strong{color:#0b1a33;font-weight:700}
.cell-title{font-weight:700;color:#0b1a33;display:block;line-height:1.45}
.cell-sub{font-size:10.5px;color:var(--muted);margin-top:2px;display:block}
.cell-clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;max-width:560px}
.empty{padding:34px 18px;text-align:center;color:var(--muted)}
.empty i{font-size:26px;color:#c7d2e0;display:block;margin-bottom:9px}
.empty strong{display:block;color:#334155;font-size:12.5px;margin-bottom:3px}
.empty span{font-size:11.5px}
.row-actions{display:flex;gap:5px;justify-content:center}
.mini-btn{
  width:28px;height:28px;border-radius:7px;border:1px solid var(--border);background:#fff;color:var(--muted);
  display:grid;place-items:center;font-size:11px;cursor:pointer;transition:.15s;
}
.mini-btn:hover{color:var(--primary);border-color:#bfdbfe;background:#eff6ff}
.mini-btn.del:hover{color:var(--danger);border-color:#fecaca;background:#fef2f2}
.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.search-box{position:relative}
.search-box i{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:11.5px;color:var(--muted-2)}
.search-box input{padding:8px 11px 8px 31px;border:1px solid var(--border-strong);border-radius:8px;font-size:12px;outline:none;width:220px;background:#fff;transition:.2s}
.search-box input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,110,253,.12);width:250px}
.chip-tabs{display:flex;gap:6px;flex-wrap:wrap;background:#f1f5f9;padding:4px;border-radius:10px}
.chip-tabs button{
  border:0;background:transparent;border-radius:7px;padding:7px 12px;font-size:11.8px;font-weight:700;color:var(--muted);cursor:pointer;transition:.15s;
}
.chip-tabs button.active{background:#fff;color:var(--navy);box-shadow:0 1px 4px rgba(15,23,42,.1)}

/* AI bar */
.ai-bar{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  background:linear-gradient(115deg,#071f45 0%,#0e3a74 55%,#0d6efd 135%);
  border-radius:12px;padding:14px 17px;margin-bottom:16px;color:#fff;box-shadow:0 8px 22px rgba(13,110,253,.15);
}
.ai-bar-left{display:flex;gap:12px;align-items:flex-start;min-width:260px;flex:1}
.ai-ic{
  width:38px;height:38px;border-radius:10px;background:rgba(56,189,248,.18);border:1px solid rgba(56,189,248,.42);
  color:#7dd3fc;display:grid;place-items:center;font-size:15px;flex-shrink:0;
}
.ai-bar h5{font-size:12.5px;font-weight:800;color:#f0f7ff;margin-bottom:2px;line-height:1.35}
.ai-bar p{font-size:11px;color:#b9cfe8;line-height:1.5;max-width:660px}
.ai-controls{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.ai-select{
  background:rgba(6,20,42,.55);border:1px solid rgba(255,255,255,.24);color:#fff;border-radius:8px;
  padding:8px 10px;font-size:11.5px;font-weight:600;outline:none;max-width:280px;cursor:pointer;
}
.ai-select option{background:#0a2558;color:#fff}
.btn-ai{
  background:linear-gradient(135deg,#38bdf8,#2563eb);color:#fff;border:0;border-radius:8px;padding:9px 14px;
  font-size:11.5px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;gap:6px;
  box-shadow:0 4px 14px rgba(56,189,248,.32);transition:.16s;
}
.btn-ai:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(56,189,248,.42)}
.btn-ai.ghost{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);box-shadow:none}
.btn-ai.ghost:hover{background:rgba(255,255,255,.2)}

/* forms */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 15px}
.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.form-grid .full{grid-column:1/-1}
.fgroup{display:flex;flex-direction:column;gap:5px;min-width:0}
.fgroup label{font-size:11.5px;font-weight:700;color:#3b4a63}
.fgroup label .req{color:var(--danger)}
.fgroup .hint{font-size:10.5px;color:var(--muted);line-height:1.45}
.form-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:13px;border-top:1px solid var(--border)}
.inline-form{background:#f8fafc;border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:16px}
.inline-form h4{font-size:12.5px;font-weight:800;color:#0b1a33;margin-bottom:12px;display:flex;align-items:center;gap:7px}
.inline-form h4 i{color:var(--primary)}
.tpl-box{background:#f0f7ff;border:1px dashed #a9cdf5;border-radius:9px;padding:10px 12px;margin-bottom:12px}
.tpl-box label{display:flex;align-items:center;gap:6px;font-size:10.5px;font-weight:800;color:#0369a1;text-transform:uppercase;letter-spacing:.3px;margin-bottom:6px}
.tpl-box select{width:100%;border:1px solid var(--border-strong);border-radius:7px;padding:7px 9px;font-size:11.5px;background:#fff;color:var(--text);outline:none}

/* notice */
.notice{display:flex;gap:10px;align-items:flex-start;border-radius:10px;padding:11px 13px;font-size:11.8px;line-height:1.6;margin-bottom:14px}
.notice i{margin-top:2px}
.notice.blue{background:#f0f7ff;border:1px solid #cfe2ff;color:#1e40af}
.notice.amber{background:#fffbeb;border:1px solid #fde68a;color:#92400e}
.notice.green{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}
.notice.gray{background:#f8fafc;border:1px solid var(--border);color:#475569}

/* paper / document */
.paper-wrap{display:flex;justify-content:center;padding-bottom:30px}
.paper{
  background:#fff;width:100%;max-width:980px;border:1px solid #cbd5e1;border-radius:6px;
  box-shadow:0 14px 38px rgba(15,23,42,.1);padding:44px 50px;color:#111827;font-size:12.5px;line-height:1.7;
}
.paper-head{display:flex;align-items:center;gap:16px;border-bottom:3px double #0f172a;padding-bottom:16px;margin-bottom:22px}
.paper-logo{width:62px;height:62px;border-radius:11px;background:var(--navy);color:#fff;display:grid;place-items:center;font-size:27px;flex-shrink:0;overflow:hidden}
.paper-logo img{width:100%;height:100%;object-fit:contain;background:#fff;padding:4px}
.paper-head h1{font-size:19px;font-weight:800;color:#0a2558;line-height:1.2;letter-spacing:-.3px}
.paper-head .tag{font-size:10.5px;color:var(--danger);font-weight:800;font-style:italic;margin-top:2px}
.paper-head .addr{font-size:10.5px;color:#475569;margin-top:3px;line-height:1.5}
.paper-head .lic{font-size:10px;color:#0369a1;font-weight:800;margin-top:2px}
.doc-title{text-align:center;margin:6px 0 20px;padding:13px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px}
.doc-title h2{font-size:15.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#0a2558;line-height:1.45}
.doc-title p{font-size:10.5px;color:var(--muted);margin-top:4px}
.doc-meta{display:flex;justify-content:center;gap:22px;flex-wrap:wrap;margin-top:8px;font-size:10.5px;color:#475569}
.doc-h{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.35px;color:#0a2558;background:#eff6ff;border-left:4px solid var(--primary);padding:8px 11px;margin:20px 0 10px}
.doc-p{font-size:12px;text-align:justify;margin-bottom:10px;color:#1e293b}
.paper table{width:100%;border-collapse:collapse;margin:10px 0 16px}
.paper table th{background:#eff6ff;color:#0a2558;border:1px solid #cbd5e1;padding:7px 8px;font-size:10.5px;text-align:left;font-weight:800}
.paper table td{border:1px solid #cbd5e1;padding:7px 8px;font-size:10.8px;vertical-align:top;line-height:1.5}
.paper table tr.total-row td{background:#f8fafc;font-weight:800;color:#0a2558}
.paper ol,.paper ul{margin:6px 0 12px 20px}
.paper li{margin:4px 0;font-size:12px;text-align:justify}
.doc-sign{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:28px;padding-top:16px;border-top:1px solid #e2e8f0;text-align:center}
.sign-box{border:1px solid #eef2f7;border-radius:8px;padding:12px;background:#fafbfd;min-height:150px;display:flex;flex-direction:column;justify-content:space-between}
.sign-box .role{font-size:10.5px;font-weight:700;color:#334155;line-height:1.45}
.sign-box .space{height:52px}
.sign-box .name{font-size:11px;font-weight:800;color:#0b1a33;border-top:1px solid #94a3b8;padding-top:5px;margin-top:4px}
.sign-box .note{font-size:9.5px;color:var(--muted)}
.editable:focus{outline:2px dashed #93c5fd;outline-offset:4px;background:#fff}
.paper-toolbar{
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  background:#fff;border:1px solid var(--border);border-radius:12px;padding:10px 14px;margin-bottom:14px;
  position:sticky;top:calc(var(--topbar-h) + 8px);z-index:70;box-shadow:var(--shadow-sm);
}
.paper-toolbar .group{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.editor-tool{
  border:1px solid var(--border);background:#f8fafc;color:#334155;border-radius:7px;padding:6px 10px;
  font-size:11px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:5px;
}
.editor-tool:hover{border-color:var(--primary);color:var(--primary);background:#eff6ff}
.editor-tool.on{background:#fef3c7;border-color:#f59e0b;color:#b45309}

/* signature */
.sig-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:22px}
.sig{border:1px solid #e2e8f0;border-radius:9px;padding:14px;background:#fafbfd;text-align:center;min-height:170px;display:flex;flex-direction:column;justify-content:space-between}
.sig .r{font-size:10.5px;font-weight:800;color:#334155;text-transform:uppercase;letter-spacing:.3px}
.sig .d{font-size:9.5px;color:var(--muted);margin-top:2px}
.sig .sp{height:54px}
.sig .n{font-size:11px;font-weight:800;color:#0b1a33;border-top:1px solid #94a3b8;padding-top:5px}
.sig .c{font-size:9.5px;color:var(--muted);margin-top:2px}

/* org chart */
.org-chart{background:#f8fafc;border:1px solid var(--border);border-radius:12px;padding:20px 14px;overflow-x:auto;margin-bottom:16px}
.org-level{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;margin-bottom:8px}
.org-node{
  background:#fff;border:1px solid #cbd5e1;border-top:4px solid var(--primary);border-radius:10px;
  padding:11px 14px;min-width:186px;max-width:240px;text-align:center;box-shadow:0 3px 8px rgba(15,23,42,.05);
}
.org-node.l1{border-top-color:var(--danger);background:linear-gradient(180deg,#fff5f5,#fff)}
.org-node.l2{border-top-color:#0284c7;background:linear-gradient(180deg,#f0f9ff,#fff)}
.org-node strong{display:block;font-size:11.5px;color:#0b1a33;font-weight:800;line-height:1.35}
.org-node span{display:block;font-size:10.5px;color:var(--muted);margin-top:2px}
.org-node em{display:block;font-size:9.5px;color:#0369a1;font-style:normal;font-weight:700;margin-top:3px}
.org-line{width:2px;height:16px;background:#94a3b8;margin:0 auto 6px}

/* modules: readiness list */
.req-list{display:grid;gap:9px}
.req-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--border);border-radius:9px;background:#fff}
.req-item .tick{width:20px;height:20px;border-radius:6px;display:grid;place-items:center;font-size:10px;flex-shrink:0;margin-top:1px}
.req-item.done .tick{background:var(--success-soft);color:var(--success)}
.req-item.todo .tick{background:#f1f5f9;color:#94a3b8}
.req-item strong{font-size:11.8px;color:#0b1a33;display:block;font-weight:700}
.req-item span{font-size:10.5px;color:var(--muted)}
.mini-stat{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px dashed var(--border);font-size:11.8px}
.mini-stat:last-child{border-bottom:0}
.mini-stat span{color:var(--muted)}
.mini-stat strong{color:#0b1a33}
.example-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.example-item{border:1px solid var(--border);border-radius:10px;padding:13px 15px;background:#fff}
.example-item h4{font-size:12.5px;color:#0a2558;margin-bottom:6px;font-weight:800}
.example-item p{font-size:11.3px;color:#475569;line-height:1.55;margin-bottom:5px}
.example-item .kv{font-size:10.5px;color:var(--muted);margin-bottom:8px}
.example-item .kv b{color:#334155}
.help-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.help-card{border:1px solid var(--border);border-radius:11px;padding:15px 16px;background:#fff}
.help-card h4{font-size:12.5px;font-weight:800;color:#0a2558;margin-bottom:7px;display:flex;gap:7px;align-items:center}
.help-card ul{margin-left:17px}
.help-card li{font-size:11.5px;color:#475569;line-height:1.65;margin:3px 0}
.kv-table{display:grid;grid-template-columns:170px 1fr;gap:8px 14px;font-size:12px;align-items:start}
.kv-table dt{color:var(--muted);font-weight:700;font-size:11.5px}
.kv-table dd{color:#1e293b}

/* modal */
.modal{position:fixed;inset:0;background:rgba(9,18,35,.55);backdrop-filter:blur(3px);display:none;align-items:flex-start;justify-content:center;z-index:3000;padding:28px 16px;overflow-y:auto}
.modal.open{display:flex}
.modal-card{background:#fff;border-radius:14px;width:660px;max-width:100%;box-shadow:0 24px 60px rgba(2,10,25,.35);animation:pop .18s ease-out;margin:auto 0}
.modal-card.wide{width:880px}
.modal-card.narrow{width:520px}
@keyframes pop{from{opacity:0;transform:translateY(-10px) scale(.99)}to{opacity:1;transform:none}}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:15px 18px;border-bottom:1px solid var(--border);background:#f8fafc;border-radius:14px 14px 0 0}
.modal-head h3{font-size:14px;font-weight:800;color:#0b1a33;display:flex;align-items:center;gap:8px}
.modal-head p{font-size:11px;color:var(--muted);margin-top:3px}
.modal-head .x{border:0;background:none;color:var(--muted-2);font-size:17px;cursor:pointer;padding:4px;border-radius:6px}
.modal-head .x:hover{background:#eef2f7;color:var(--danger)}
.modal-body{padding:18px;max-height:calc(100vh - 210px);overflow-y:auto}
.modal-foot{padding:12px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;background:#f8fafc;border-radius:0 0 14px 14px;flex-wrap:wrap}

/* toast */
.toast-wrap{position:fixed;bottom:20px;right:20px;z-index:4000;display:flex;flex-direction:column;gap:8px;max-width:360px}
.toast{
  display:flex;gap:9px;align-items:flex-start;background:#0f172a;color:#fff;border-radius:10px;padding:11px 14px;
  font-size:12px;line-height:1.5;box-shadow:0 12px 30px rgba(2,10,25,.3);animation:slideIn .2s ease-out;
}
.toast.ok{background:#065f46}
.toast.err{background:#991b1b}
.toast.info{background:#1e3a8a}
@keyframes slideIn{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}
.spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-veil{position:fixed;inset:0;background:rgba(255,255,255,.62);backdrop-filter:blur(2px);z-index:2500;display:none;place-items:center}
.loading-veil.show{display:grid}
.loading-veil .box{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px 22px;box-shadow:var(--shadow);display:flex;gap:11px;align-items:center;font-size:12.5px;font-weight:700;color:#0b1a33}
.loading-veil .spinner{border-color:#cbd5e1;border-top-color:var(--primary)}

/* checklist doc fields */
.doc-field{margin-bottom:10px}
.doc-field label{display:block;font-size:10.5px;font-weight:800;color:#475569;margin-bottom:4px}
.doc-field textarea,.doc-field input,.doc-field select{
  width:100%;border:1px solid #d7e0eb;border-radius:7px;padding:7px 9px;font-size:11.5px;color:#1e293b;background:#fff;outline:none;
}
.doc-field textarea{min-height:54px;resize:vertical;line-height:1.5}
.doc-field textarea:focus,.doc-field input:focus,.doc-field select:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,110,253,.1)}
.criteria-card{border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:12px;background:#fff}
.criteria-head{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;background:#f8fafc;border-bottom:1px solid var(--border)}
.criteria-num{width:28px;height:28px;border-radius:8px;background:var(--navy);color:#fff;display:grid;place-items:center;font-size:10.5px;font-weight:800;flex-shrink:0}
.criteria-head strong{font-size:11.8px;color:#0b1a33;line-height:1.5;display:block}
.criteria-body{padding:12px 13px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}
.criteria-body .full{grid-column:1/-1}
.save-row{display:flex;justify-content:flex-end;gap:7px;margin-top:8px}
.saved-tag{font-size:9.5px;color:var(--success);font-weight:800;display:inline-flex;align-items:center;gap:4px}

/* template chips */
.tpl-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.tpl-chip{
  border:1px solid var(--border);background:#fff;border-radius:20px;padding:5px 11px;font-size:10.8px;
  font-weight:700;color:#334155;cursor:pointer;transition:.15s;
}
.tpl-chip:hover{border-color:var(--primary);color:var(--primary);background:#f5f9ff}
.progress-line{height:5px;border-radius:5px;background:#eef2f7;overflow:hidden;margin-top:6px}
.progress-line i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#0d6efd,#22c55e)}
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:10px;font-weight:800;white-space:nowrap}
.badge.ok{background:var(--success-soft);color:#15803d}
.badge.warn{background:var(--warning-soft);color:#92400e}
.badge.bad{background:var(--danger-soft);color:#b91c1c}
.badge.info{background:var(--info-soft);color:#0369a1}
.badge.gray{background:#f1f5f9;color:#475569}
.badge.purple{background:#f3e8ff;color:#7e22ce}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:10.5px;color:var(--muted);margin-top:10px}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{width:9px;height:9px;border-radius:3px;display:inline-block}

/* responsive */
@media (max-width:1500px){
  .kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:1180px){
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .chart-grid{grid-template-columns:1fr}
  .split{grid-template-columns:1fr}
  .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:1024px){
  .auth-wrap{grid-template-columns:1fr}
  .auth-hero{padding:32px 26px;gap:24px}
  .auth-hero-mid{margin:0}
  .auth-hero h2{font-size:27px}
  .auth-features{display:none}
  .auth-panel{padding:30px 22px}
}
@media (max-width:960px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:none}
  .main{margin-left:0}
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g3,.g2{grid-template-columns:1fr}
  .form-grid,.form-grid.three{grid-template-columns:1fr}
  .form-grid .full{grid-column:auto}
  .doc-sign,.sig-grid{grid-template-columns:1fr}
  .paper{padding:22px 18px}
  .example-list,.help-grid{grid-template-columns:1fr}
  .content{padding:16px 14px 34px}
  .tb-brand h2{max-width:38vw;font-size:13.5px}
  .user-chip .u-meta{display:none}
  .topbar{padding:0 12px;gap:8px}
  .kv-table{grid-template-columns:1fr}
  .criteria-body{grid-template-columns:1fr}
  .criteria-body .full{grid-column:auto}
}
@media (max-width:560px){
  .kpi-grid{grid-template-columns:1fr 1fr}
  .stat-grid{grid-template-columns:1fr}
  .hero{padding:18px}
  .hero h2{font-size:19px}
  .hero-score{width:100%}
  .card-body{padding:13px}
  .card-head{padding:13px}
  .toolbar{width:100%}
  .search-box input,.search-box input:focus{width:100%}
  .modal{padding:10px}
  .modal-body{max-height:calc(100vh - 190px)}
}

/* ---------------- PRINT ---------------- */
@media print{
  @page{size:A4 portrait;margin:12mm 13mm 15mm}
  html,body{background:#fff !important;font-size:10pt}
  .sidebar,.topbar,.no-print,.toast-wrap,.modal,.loading-veil,.ai-bar,.paper-toolbar,.admin-strip,
  .card-head .card-tools,.row-actions,.chip-tabs,.search-box,.inline-form,.tpl-box{display:none !important}
  .main{margin:0 !important}
  .content{padding:0 !important}
  .view{display:none !important}
  .view.active{display:block !important}
  .card{border:0 !important;box-shadow:none !important;margin:0 !important}
  .card-head{border:0 !important;padding:0 0 10px !important;background:#fff !important}
  .paper{box-shadow:none !important;border:0 !important;padding:0 !important;max-width:100% !important;width:100% !important;font-size:10pt}
  .paper-head{border-bottom:2.5px double #0f172a !important}
  .editable:focus{outline:none !important}
  .paper table th{background:#e8f0fb !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .paper table,.paper tr{break-inside:auto}
  .paper tr{break-inside:avoid;page-break-inside:avoid}
  .doc-h{break-after:avoid;page-break-after:avoid}
  .criteria-card,.criteria-body{break-inside:avoid}
  .doc-field textarea,.doc-field input,.doc-field select{
    border:0 !important;box-shadow:none !important;padding:1px 0 !important;background:transparent !important;
    font-size:10pt !important;color:#111827 !important;resize:none !important;min-height:0 !important;
    appearance:none;width:100% !important;
  }
  .criteria-body{display:block !important}
  .doc-field{margin-bottom:5px}
  .doc-field label{font-size:8.5pt;color:#475569}
  .saved-tag,.save-row,.tpl-chips{display:none !important}
  table,tr,td,th{page-break-inside:avoid}
  a{color:inherit !important;text-decoration:none !important}
}

/* =========================================================================
   Tambahan: tata letak tab dokumen, backup, dan perilaku cetak dokumen
   ========================================================================= */
.doc-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.doc-tab{
  border:1px solid var(--border-strong);background:#fff;border-radius:10px;padding:11px 13px;
  text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:3px;transition:.16s;min-width:0;
}
.doc-tab:hover{border-color:var(--primary);background:#f7fbff}
.doc-tab.active{background:linear-gradient(180deg,#1554c4,#0d6efd);border-color:#0d6efd;box-shadow:0 6px 16px rgba(13,110,253,.26)}
.doc-tab.active span,.doc-tab.active small{color:#fff}
.doc-tab span{font-size:11.5px;font-weight:800;color:#0b1a33;line-height:1.3}
.doc-tab small{font-size:10px;font-weight:600;color:#64748b;line-height:1.4}
.doc-tabs.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.backup-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:1024px){
  .doc-tabs,.doc-tabs.three{grid-template-columns:repeat(2,minmax(0,1fr))}
  .backup-grid{grid-template-columns:1fr}
}
@media (max-width:520px){
  .doc-tabs,.doc-tabs.three{grid-template-columns:1fr}
  .chip-tabs{width:100%}
  .chip-tabs button{flex:1 1 auto;font-size:11px;padding:7px 8px}
}
/* Cetak dokumen: hanya kertas dokumen yang tercetak */
@media print{
  .print-doc #viewRoot > *:not(.paper-wrap){display:none !important}
  .print-doc .paper-wrap{padding:0 !important;display:block !important}
  .print-doc .paper{max-width:100% !important;width:100% !important;border:0 !important;box-shadow:none !important;padding:0 !important}
  .print-doc .sidebar,.print-doc .topbar{display:none !important}
}

/* Dokumen resmi pada layar kecil: gulir horizontal di dalam kertas,
   agar tabel lebar tidak memperbesar viewport perangkat. */
@media (max-width:900px){
  .paper{overflow-x:auto;max-width:100%}
  .paper table{min-width:540px}
  .paper .criteria-body{grid-template-columns:1fr}
  .paper .doc-field.full{grid-column:auto}
  .paper .doc-sign{grid-template-columns:1fr}
}

/* =========================================================================
   Dokumen resmi: pemilih sampul, tombol dokumen, dan tampilan cetak
   ========================================================================= */
.doc-btn-row{
  display:flex;align-items:center;gap:7px;flex-wrap:wrap;background:#fff;border:1px solid var(--border);
  border-radius:11px;padding:9px 12px;margin-bottom:16px;box-shadow:var(--shadow-sm);
}
.doc-btn-label{font-size:11.5px;font-weight:800;color:#0b1a33;margin-right:auto;display:inline-flex;align-items:center;gap:6px}
.doc-btn-label i{color:var(--primary)}
.cover-picker{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.cover-opt{
  position:relative;border:1.5px solid var(--border-strong);border-radius:11px;background:#fff;cursor:pointer;
  padding:9px;display:flex;flex-direction:column;gap:7px;align-items:center;transition:.16s;min-width:0;
}
.cover-opt:hover{border-color:#93c5fd;box-shadow:0 4px 14px rgba(13,110,253,.12)}
.cover-opt.active{border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,110,253,.14)}
.cv-thumb{
  width:100%;height:56px;border-radius:7px;display:grid;place-items:center;font-size:16px;color:#fff;
}
.cv-v1{background:linear-gradient(150deg,#04122b,#0a2558 55%,#123a76)}
.cv-v2{background:linear-gradient(120deg,#0d6efd,#1e40af 60%,#0b1a33)}
.cv-v3{background:linear-gradient(150deg,#06251d,#0f766e)}
.cv-v4{background:linear-gradient(120deg,#7f1d1d,#b91c1c)}
.cv-v5{background:linear-gradient(150deg,#0f172a,#475569);color:#fff}
.cv-name{font-size:10.5px;font-weight:800;color:#334155;text-align:center;line-height:1.3}
.cv-check{position:absolute;top:6px;right:6px;width:18px;height:18px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-size:9px}
.print-body{display:flex;justify-content:center;padding-bottom:30px}
.print-body .sakti-doc{background:#fff;width:100%;max-width:940px;border:1px solid #cbd5e1;border-radius:6px;box-shadow:0 14px 38px rgba(15,23,42,.1);overflow:hidden}
.print-body .cover{border-radius:0}
.print-body .page2{padding:14mm 13mm 16mm}
@media (max-width:1100px){ .cover-picker{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (max-width:640px){
  .cover-picker{grid-template-columns:repeat(2,minmax(0,1fr))}
  .print-body .page2{padding:8mm 6mm}
  .doc-btn-row .btn{flex:1 1 auto}
}
@media print{
  .print-doc #viewRoot > *:not(.print-body){display:none !important}
  .print-doc .print-body{display:block !important;padding:0 !important}
  .print-doc .print-body .sakti-doc{max-width:none !important;width:100% !important;border:0 !important;box-shadow:none !important;border-radius:0 !important}
  .print-doc .print-body .page2{padding:0 !important}
  .print-doc .cover{min-height:auto !important;height:auto !important;page-break-after:always;break-after:page}
  .print-doc .cover-inner{min-height:250mm}
  .sakti-doc .sec{break-after:avoid;page-break-after:avoid}
  .sakti-doc .doc-sign-table{break-inside:avoid;page-break-inside:avoid}
  .sakti-doc .kpi-row{break-inside:avoid}
}

/* SOP lengkap */
.sop-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.sop-card{border:1px solid var(--border);border-radius:12px;padding:15px 16px;background:#fff;display:flex;flex-direction:column;gap:8px;transition:.16s}
.sop-card:hover{border-color:#93c5fd;box-shadow:0 6px 18px rgba(13,110,253,.1)}
.sop-card h4{font-size:13px;font-weight:800;color:#0b1a33;line-height:1.4}
.sop-card .code{font-size:10.5px;font-weight:800;color:#12386f;background:#eaf1fb;border-radius:5px;padding:2px 7px;display:inline-block}
.sop-card p{font-size:11.3px;color:#475569;line-height:1.55}
.sop-card .meta{display:flex;gap:10px;flex-wrap:wrap;font-size:10.3px;color:var(--muted)}
.sop-card .acts{display:flex;gap:6px;margin-top:auto;padding-top:8px}
@media (max-width:900px){ .sop-grid{grid-template-columns:1fr} }

/* Maturitas */
.mat-domain{border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-bottom:14px;background:#fff}
.mat-head{display:flex;align-items:center;gap:12px;padding:12px 15px;background:linear-gradient(100deg,#f1f7ff,#f8fbff);border-bottom:1px solid var(--border);flex-wrap:wrap}
.mat-head h4{font-size:12.8px;font-weight:800;color:#0a2558}
.mat-head p{font-size:10.8px;color:var(--muted);margin-top:2px}
.mat-score{margin-left:auto;text-align:right}
.mat-score b{font-size:19px;color:#0a2558;line-height:1}
.mat-score span{display:block;font-size:9.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.mat-item{padding:12px 15px;border-bottom:1px solid #eef2f7;display:grid;grid-template-columns:minmax(0,1.5fr) 120px minmax(0,1.2fr);gap:12px;align-items:start}
.mat-item:last-child{border-bottom:0}
.mat-item .t{font-size:11.8px;color:#1e293b;line-height:1.55}
.mat-item .t b{color:#0a2558;display:block;font-size:10.5px;margin-bottom:2px}
.mat-item label{display:block;font-size:10px;font-weight:800;color:#475569;text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px}
.mat-item select,.mat-item input,.mat-item textarea{border:1px solid #d7e0eb;border-radius:7px;padding:7px 9px;font-size:11.5px;width:100%;font-family:inherit;color:#1e293b}
.mat-item textarea{min-height:52px;resize:vertical}
.mat-level{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:800;padding:3px 9px;border-radius:20px}
@media (max-width:900px){ .mat-item{grid-template-columns:1fr} }

/* Lampiran SPTI */
.att-list{display:grid;gap:8px}
.att-row{display:flex;gap:10px;align-items:center;padding:9px 11px;border:1px solid var(--border);border-radius:9px;background:#fff;font-size:11.5px;flex-wrap:wrap}
.att-row .ic{width:30px;height:30px;border-radius:8px;background:#eef4ff;color:#0d47a1;display:grid;place-items:center;font-size:13px;flex-shrink:0}
.att-row a{color:#1d4ed8;font-weight:700;word-break:break-all}
.att-row .meta{font-size:10px;color:var(--muted)}
.att-row .acts{margin-left:auto;display:flex;gap:5px}
.att-upload{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:12px;margin-bottom:12px}
.att-upload .fgroup{flex:1 1 180px}
.att-upload .fgroup input,.att-upload .fgroup select{width:100%}

/* OJK TXT */
.txt-box{
  background:#0b1220;color:#a7f3d0;border-radius:10px;padding:14px 16px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:11px;line-height:1.7;overflow-x:auto;white-space:pre;max-height:320px;border:1px solid #1e293b;
}
.ojk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (max-width:900px){ .ojk-grid{grid-template-columns:1fr} }
.form-section{border:1px solid var(--border);border-radius:11px;margin-bottom:14px;overflow:hidden;background:#fff}
.form-section>h4{background:linear-gradient(100deg,#f1f7ff,#f8fbff);border-bottom:1px solid var(--border);padding:9px 13px;font-size:11.5px;font-weight:800;color:#0a2558;display:flex;align-items:center;gap:7px}
.form-section>div{padding:13px}
.col-chip{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:#64748b;background:#f1f5f9;border-radius:20px;padding:2px 8px;margin:0 4px 4px 0}
.example-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.example-tab{border:1px solid var(--border-strong);background:#fff;border-radius:9px;padding:8px 12px;cursor:pointer;font-size:11.5px;font-weight:800;color:#334155;display:inline-flex;align-items:center;gap:6px;transition:.15s}
.example-tab.active{background:var(--navy);border-color:var(--navy);color:#fff}
.example-tab span.count{font-size:9.5px;background:rgba(0,0,0,.08);border-radius:20px;padding:1px 6px}
.example-tab.active span.count{background:rgba(255,255,255,.2)}

/* =========================================================================
   Chat online
   ========================================================================= */
.chat-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:16px;align-items:stretch}
.chat-threads{background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;max-height:640px}
.chat-threads-head{padding:12px 14px;border-bottom:1px solid var(--border);font-size:11.5px;font-weight:800;color:#0b1a33;background:#f8fafc;display:flex;align-items:center;gap:7px}
.chat-threads-head i{color:var(--primary)}
.chat-thread-list{overflow-y:auto;flex:1}
.chat-thread{display:flex;gap:9px;align-items:center;width:100%;border:0;background:#fff;padding:10px 12px;border-bottom:1px solid #f1f5f9;cursor:pointer;text-align:left;transition:.14s}
.chat-thread:hover{background:#f7fbff}
.chat-thread.active{background:#eef6ff;box-shadow:inset 3px 0 0 var(--primary)}
.ct-ava{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#1e40af,#0d6efd);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:800;flex-shrink:0}
.ct-ava.lg{width:40px;height:40px;font-size:13px}
.ct-body{flex:1;min-width:0}
.ct-body strong{display:block;font-size:11.8px;color:#0b1a33;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ct-body small{display:block;font-size:10px;color:#94a3b8}
.ct-badge{background:#ef4444;color:#fff;font-size:9.5px;font-weight:800;border-radius:20px;padding:1px 6px;min-width:18px;text-align:center}
.chat-panel{background:#fff;border:1px solid var(--border);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;min-height:520px;max-height:640px}
.chat-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;border-bottom:1px solid var(--border);background:linear-gradient(100deg,#f8fbff,#fff)}
.chat-peer{display:flex;gap:10px;align-items:center;min-width:0}
.chat-peer strong{display:block;font-size:12.8px;color:#0b1a33}
.chat-peer small{display:block;font-size:10.5px;color:#64748b}
.chat-head-tools{display:flex;gap:6px}
.chat-scroll{flex:1;overflow-y:auto;padding:16px;background:linear-gradient(180deg,#f8fafc,#f1f5f9);display:flex;flex-direction:column;gap:4px}
.chat-empty{display:grid;place-items:center;text-align:center;color:#94a3b8;gap:4px;padding:40px 10px}
.chat-empty i{font-size:26px;margin-bottom:4px}
.chat-empty strong{color:#475569;font-size:12.5px}
.chat-empty span{font-size:11.5px}
.chat-day{align-self:center;font-size:9.8px;font-weight:800;color:#64748b;background:#e2e8f0;border-radius:20px;padding:2px 10px;margin:8px 0}
.chat-msg{display:flex;flex-direction:column;max-width:78%;margin:3px 0}
.chat-msg .bubble{padding:9px 13px;border-radius:14px;font-size:12.3px;line-height:1.55;box-shadow:0 1px 2px rgba(15,23,42,.06);word-break:break-word}
.chat-msg .meta{font-size:9.5px;color:#94a3b8;margin-top:3px}
.chat-msg.theirs{align-self:flex-start}
.chat-msg.theirs .bubble{background:#fff;border:1px solid #e2e8f0;color:#1e293b;border-bottom-left-radius:5px}
.chat-msg.mine{align-self:flex-end;align-items:flex-end}
.chat-msg.mine .bubble{background:linear-gradient(135deg,#1a78ff,#0d6efd);color:#fff;border-bottom-right-radius:5px}
.chat-msg.mine .meta{text-align:right}
.chat-compose{display:flex;gap:8px;padding:11px 13px;border-top:1px solid var(--border);background:#fff;align-items:flex-end}
.chat-compose textarea{flex:1;border:1px solid var(--border-strong);border-radius:10px;padding:9px 12px;font-size:12.5px;font-family:inherit;resize:none;outline:none;max-height:120px;line-height:1.5}
.chat-compose textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,110,253,.12)}
@media (max-width:980px){
  .chat-layout{grid-template-columns:1fr}
  .chat-threads{max-height:220px}
  .chat-panel{min-height:460px}
}

/* =========================================================================
   Penyempurnaan tampilan (login, hero, kartu, animasi halus)
   ========================================================================= */
.auth-hero{background:linear-gradient(155deg,#04122b 0%,#071f45 42%,#0b3a78 100%)}
.auth-hero::before{animation:floatGlow 14s ease-in-out infinite alternate}
.auth-hero::after{animation:floatGlow 18s ease-in-out infinite alternate-reverse}
@keyframes floatGlow{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(-24px,18px,0) scale(1.08)}}
.auth-foot-brand{
  display:inline-flex;align-items:center;gap:6px;margin-bottom:8px;padding:5px 12px;border-radius:20px;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);color:#dbeafe;font-size:11px;font-weight:700;
}
.auth-foot-brand strong{color:#fff}
.auth-mark{background:linear-gradient(135deg,#ffffff,#dbeafe)}
.auth-pill{backdrop-filter:blur(6px)}
.auth-form-head h2{background:linear-gradient(120deg,#0b1a33,#1e40af 70%);-webkit-background-clip:text;background-clip:text;color:transparent}
.auth-tab.active{position:relative}
.auth-tab.active::after{content:"";position:absolute;left:22%;right:22%;bottom:-4px;height:2px;border-radius:2px;background:linear-gradient(90deg,#0d6efd,#38bdf8)}
.auth-panel{background:radial-gradient(120% 80% at 100% 0%,#f5f9ff 0%,#ffffff 45%)}

/* hero aplikasi lebih hidup */
.hero{
  background:
    radial-gradient(90% 120% at 100% 0%,rgba(56,189,248,.22) 0%,rgba(56,189,248,0) 55%),
    linear-gradient(120deg,#061633 0%,#0a2f66 52%,#0d6efd 130%);
}
.hero::before{
  content:"";position:absolute;left:-80px;bottom:-120px;width:300px;height:300px;border-radius:50%;
  background:radial-gradient(circle,rgba(59,130,246,.28),transparent 70%);pointer-events:none;
}
.hero-badge{box-shadow:0 4px 18px rgba(56,189,248,.18)}
.hero-score{background:rgba(255,255,255,.12);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 12px 30px rgba(2,10,25,.22)}

/* kartu KPI: garis aksen & hover lebih halus */
.kpi{position:relative;overflow:hidden}
.kpi::after{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(180deg,#0d6efd,#38bdf8);opacity:0;transition:.2s}
.kpi:hover::after{opacity:1}
.kpi:hover{transform:translateY(-3px)}
.kpi-icon{transition:transform .2s}
.kpi:hover .kpi-icon{transform:scale(1.08) rotate(-3deg)}

/* tabel & tombol lebih modern */
table.tbl thead th{background:linear-gradient(180deg,#f8fafc,#f1f5f9)}
.btn{border-radius:10px}
.btn-primary{position:relative;overflow:hidden}
.btn-primary::after{
  content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.22),transparent 70%);
  transform:translateX(-120%);transition:.5s;
}
.btn-primary:hover::after{transform:translateX(120%)}
.card{transition:box-shadow .2s,border-color .2s}
.card:hover{box-shadow:0 8px 24px rgba(15,23,42,.07)}
.nav-item{transition:transform .14s,background .16s,color .16s}
.nav-item:hover{transform:translateX(2px)}
.nav-item.active{position:relative}
.nav-item.active::before{content:"";position:absolute;left:-11px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:#7dd3fc}
.stat{border-radius:13px;transition:.18s}
.stat:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(15,23,42,.07)}
.pill{letter-spacing:.2px}
.badge{letter-spacing:.15px}
.avatar{box-shadow:0 3px 10px rgba(13,110,253,.28)}
.topbar{box-shadow:0 1px 0 rgba(15,23,42,.04),0 4px 18px rgba(15,23,42,.03)}
.notif-btn .dot{animation:pulseDot 2.2s ease-in-out infinite}
@keyframes pulseDot{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
.example-item,.sop-card,.help-card,.mat-domain{transition:.18s}
.example-item:hover,.sop-card:hover{transform:translateY(-2px)}
.cover-opt{transition:transform .16s,box-shadow .16s,border-color .16s}
.cover-opt:hover{transform:translateY(-2px)}
.view.active{animation:fadeUp .26s cubic-bezier(.2,.7,.3,1)}
@media (prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important}
}

/* tanda vendor pada panel login */
.auth-sign{
  margin-top:18px;padding-top:14px;border-top:1px dashed #e2e8f0;display:flex;gap:8px;flex-wrap:wrap;
  align-items:center;justify-content:center;font-size:11px;color:#94a3b8;font-weight:600;
}
.auth-sign strong{color:#0b1a33;font-weight:800}
.auth-sign .dot-sep{color:#cbd5e1}

/* =========================================================================
   Kertas kerja SPTI
   ========================================================================= */
.spti-item{border-bottom:1px solid #eef2f7;padding:13px 16px;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:14px}
.spti-item:last-child{border-bottom:0}
.spti-item:hover{background:#fbfdff}
.spti-q{display:flex;gap:9px;align-items:flex-start;min-width:0}
.spti-code{flex-shrink:0;background:#0a2558;color:#fff;font-size:9.5px;font-weight:800;padding:2px 6px;border-radius:5px;margin-top:1px}
.spti-label{font-size:11.8px;line-height:1.55;color:#1e293b}
.spti-letter{margin-left:auto;font-size:9.5px;color:#64748b;text-align:right;flex-shrink:0;max-width:130px}
.spti-a{display:flex;flex-direction:column;gap:6px}
.spti-choices{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.spti-choice{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border-strong);border-radius:20px;padding:4px 10px;font-size:10.5px;font-weight:700;color:#475569;cursor:pointer;background:#fff;transition:.14s}
.spti-choice input{display:none}
.spti-choice.sel{background:#dcfce7;border-color:#86efac;color:#15803d}
.spti-choice:hover{border-color:#93c5fd}
.spti-clear{border:0;background:#f1f5f9;color:#94a3b8;border-radius:50%;width:22px;height:22px;cursor:pointer;font-size:10px}
.spti-clear:hover{background:#fee2e2;color:#dc2626}
.control.sm{padding:6px 9px;font-size:11.2px}
.spti-files{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding-top:4px}
.spti-file{display:inline-flex;align-items:center;gap:6px;background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:4px 8px;font-size:10.3px;max-width:100%}
.spti-file i{color:#0d47a1}
.spti-file a{color:#1d4ed8;font-weight:700;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.spti-file .meta{color:#94a3b8;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.spti-file .mini-btn{width:22px;height:22px;font-size:9px}
@media (max-width:980px){
  .spti-item{grid-template-columns:1fr}
  .spti-letter{margin-left:0;text-align:left;max-width:none}
}

/* =========================================================================
   Tema warna (dapat diubah pengguna)
   ========================================================================= */
html[data-theme="ocean"]{--primary:#0284c7;--primary-dark:#0369a1;--primary-soft:#e0f2fe;--navy:#0c4a6e;--navy-deep:#082f49;--navy-soft:#075985}
html[data-theme="emerald"]{--primary:#059669;--primary-dark:#047857;--primary-soft:#d1fae5;--navy:#064e3b;--navy-deep:#022c22;--navy-soft:#065f46}
html[data-theme="maroon"]{--primary:#b91c1c;--primary-dark:#991b1b;--primary-soft:#fee2e2;--navy:#4c0519;--navy-deep:#2c0410;--navy-soft:#7f1d1d}
html[data-theme="midnight"]{--primary:#6366f1;--primary-dark:#4f46e5;--primary-soft:#e0e7ff;--navy:#111827;--navy-deep:#030712;--navy-soft:#1f2937}
html[data-theme="sunset"]{--primary:#ea580c;--primary-dark:#c2410c;--primary-soft:#ffedd5;--navy:#431407;--navy-deep:#26100a;--navy-soft:#7c2d12}

.theme-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.theme-opt{border:1.5px solid var(--border-strong);border-radius:11px;background:#fff;padding:9px;cursor:pointer;display:flex;flex-direction:column;gap:7px;align-items:center;transition:.16s}
.theme-opt:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(15,23,42,.08)}
.theme-opt.active{border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,110,253,.14)}
.theme-swatch{width:100%;height:44px;border-radius:7px;display:flex;overflow:hidden}
.theme-swatch i{flex:1;height:100%}
.theme-name{font-size:10.8px;font-weight:800;color:#334155}
@media (max-width:700px){ .theme-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* status online/offline */
.dot-online{width:8px;height:8px;border-radius:50%;background:#22c55e;display:inline-block;box-shadow:0 0 0 3px rgba(34,197,94,.16)}
.dot-offline{width:8px;height:8px;border-radius:50%;background:#cbd5e1;display:inline-block}
.contact-chip{display:flex;align-items:center;gap:7px;border:1px solid var(--border);border-radius:20px;padding:5px 11px;font-size:11px;font-weight:700;color:#334155;background:#fff;cursor:pointer;transition:.14s}
.contact-chip:hover{border-color:#93c5fd;background:#f5f9ff}
.contact-chip.active{background:#0a2558;border-color:#0a2558;color:#fff}
.contact-chip .badge{margin-left:2px}

/* emoji picker */
.emoji-pop{position:absolute;bottom:64px;right:14px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 34px rgba(15,23,42,.18);padding:10px;display:none;grid-template-columns:repeat(8,1fr);gap:3px;width:296px;z-index:50}
.emoji-pop.open{display:grid}
.emoji-pop button{border:0;background:transparent;font-size:18px;cursor:pointer;border-radius:7px;padding:3px;line-height:1}
.emoji-pop button:hover{background:#eef6ff}
.chat-compose{position:relative}

/* Chat lebih lebar untuk semua peran */
.chat-layout{grid-template-columns:300px minmax(0,1fr)}
.chat-layout.wide{grid-template-columns:minmax(0,1fr)}
.chat-panel{min-height:600px;max-height:calc(100dvh - 220px)}
.chat-contacts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:9px 13px;border-bottom:1px solid var(--border);background:#fbfdff}
.chat-contacts .cc-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#64748b;margin-right:2px}
.chat-compose{padding-left:10px}
.emoji-btn{border:1px solid var(--border-strong);background:#fff;border-radius:10px;width:38px;height:38px;display:grid;place-items:center;cursor:pointer;color:#64748b;font-size:15px;flex-shrink:0}
.emoji-btn:hover{color:var(--primary);border-color:#93c5fd;background:#f5f9ff}
@media (max-width:1200px){ .chat-layout{grid-template-columns:260px minmax(0,1fr)} }
@media (max-width:980px){
  .chat-layout,.chat-layout.wide{grid-template-columns:1fr}
  .chat-panel{min-height:520px;max-height:none}
  .emoji-pop{grid-template-columns:repeat(6,1fr);width:240px;right:8px}
}

/* radio SPTI tetap dapat diklik langsung */
.spti-choice input{display:inline-block;width:12px;height:12px;margin:0;accent-color:var(--primary);opacity:.85}
.spti-choice.sel input{opacity:1}

/* =========================================================================
   Galeri lampiran SPTI (kartu + pratinjau PDF)
   ========================================================================= */
.apx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:14px}
.apx-card{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#fff;display:flex;flex-direction:column;transition:.18s}
.apx-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(15,23,42,.09);border-color:#c7d7ea}
.apx-thumb{position:relative;height:158px;background:linear-gradient(160deg,#eef4fb,#f7fafc);display:grid;place-items:center;cursor:pointer;overflow:hidden;border-bottom:1px solid var(--border)}
.apx-thumb img{width:100%;height:100%;object-fit:cover;object-position:top center;transition:.25s}
.apx-card:hover .apx-thumb img{transform:scale(1.03)}
.apx-thumb.empty i{font-size:34px;color:#94a3b8}
.apx-letter{position:absolute;top:8px;left:8px;background:#0a2558;color:#fff;font-size:10px;font-weight:800;padding:3px 8px;border-radius:20px;letter-spacing:.3px}
.apx-zoom{position:absolute;inset:auto 8px 8px auto;background:rgba(10,37,88,.82);color:#fff;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:11px;opacity:0;transition:.2s}
.apx-card:hover .apx-zoom{opacity:1}
.apx-body{padding:11px 12px 12px;display:flex;flex-direction:column;gap:5px;flex:1}
.apx-body strong{font-size:11.8px;color:#0b1a33;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.apx-file{font-size:10.2px;color:#94a3b8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.apx-meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:10px}
.apx-note{font-size:10.4px;color:#475569;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.apx-acts{display:flex;gap:5px;flex-wrap:wrap;margin-top:auto;padding-top:8px;border-top:1px dashed #e2e8f0}
.apx-acts .btn{padding:5px 9px;font-size:10.5px;border-radius:7px}
.apx-viewer{width:100%;height:min(68vh,720px);border:1px solid #cbd5e1;border-radius:10px;overflow:hidden;background:#f1f5f9}
.apx-viewer iframe{width:100%;height:100%;border:0;display:block}
@media (max-width:640px){
  .apx-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
  .apx-thumb{height:124px}
  .apx-acts .btn span{display:none}
}

/* perbaikan: gambar thumbnail PDF/gambar dipaksa mengisi kotak pratinjau */
.apx-thumb{position:relative}
.apx-thumb img{position:absolute;inset:0;width:100%!important;height:100%!important;object-fit:cover!important;object-position:top center;display:block}
.apx-thumb.empty i{position:relative;z-index:2}

/* =========================================================================
   Identitas merek: logo SAKTI (aplikasi) & Mandiri Consulting (vendor)
   ========================================================================= */
.auth-logo{
  width:64px;height:64px;border-radius:15px;flex-shrink:0;
  box-shadow:0 10px 26px rgba(2,12,32,.42),0 0 0 1px rgba(255,255,255,.16);
  background:#fff;
}
.auth-brand h1{font-size:23px;letter-spacing:.6px}
.auth-brand span{font-size:10px;letter-spacing:.75px}
.auth-vendor{display:flex;align-items:center;gap:11px;margin-bottom:10px}
.auth-vendor img{
  width:46px;height:46px;border-radius:50%;flex-shrink:0;
  background:#fff;padding:2px;box-shadow:0 6px 18px rgba(2,12,32,.35),0 0 0 1px rgba(255,255,255,.18);
}
.auth-vendor .av-label{display:block;font-size:9px;letter-spacing:1.1px;text-transform:uppercase;color:#93b4dc;font-weight:800}
.auth-vendor strong{display:block;font-size:13.5px;color:#fff;font-weight:800;letter-spacing:.2px;line-height:1.3}
.auth-vendor .av-copy{display:block;font-size:9.5px;color:#8fa9c9}
.auth-legal{font-size:10.5px;color:#7d95b4;line-height:1.55}

.client-logo-img{
  width:46px;height:46px;border-radius:12px;flex-shrink:0;background:#fff;
  box-shadow:0 6px 16px rgba(13,110,253,.20),0 0 0 1px #e2e8f0;padding:2px;
}
.client-managed{color:#0d6efd!important;font-weight:700;font-style:normal!important}

.auth-sign img{width:26px;height:26px;border-radius:50%;background:#fff;padding:1px;box-shadow:0 2px 6px rgba(15,23,42,.12)}

/* Sidebar aplikasi */
.sb-logo{
  width:44px;height:44px;border-radius:11px;flex-shrink:0;background:#fff;
  box-shadow:0 6px 16px rgba(0,0,0,.32),0 0 0 1px rgba(255,255,255,.12);padding:1px;
}
.sb-head h1{font-size:18px;letter-spacing:.9px}
.sb-head p{font-size:9px;letter-spacing:.8px}
.sb-foot img{background:#fff;padding:1px;box-shadow:0 3px 10px rgba(0,0,0,.3)}
.sb-foot strong{font-size:10.5px;letter-spacing:.1px}
.sb-foot span{font-size:9px}
.sb-active{
  display:flex;align-items:center;gap:7px;padding:7px 15px 9px;background:rgba(0,0,0,.16);
  border-top:1px solid rgba(255,255,255,.06);font-size:9.5px;color:#8fa8c9;
}
.sb-active .dot{width:6px;height:6px;border-radius:50%;background:#22c55e;flex-shrink:0;box-shadow:0 0 0 2px rgba(34,197,94,.2)}
.sb-active span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;color:#c5d7ee}

/* Topbar: nama aplikasi di samping nama BPR */
.tb-app-tag{
  display:inline-flex;align-items:center;gap:5px;font-size:9.5px;font-weight:800;letter-spacing:.6px;
  color:#0d47a1;background:#e8f1ff;border:1px solid #cfe2ff;border-radius:20px;padding:1px 7px;text-transform:uppercase;
}
@media (max-width:640px){
  .auth-logo{width:52px;height:52px;border-radius:13px}
  .auth-brand h1{font-size:19px}
  .auth-vendor img{width:40px;height:40px}
}

/* tag aplikasi pada topbar */
.tb-app-tag{
  display:inline-flex;align-items:center;gap:5px;font-size:9.5px;font-weight:800;letter-spacing:.7px;
  color:#0d47a1;background:linear-gradient(180deg,#eef6ff,#e2edff);border:1px solid #cfe2ff;
  border-radius:20px;padding:4px 9px;text-transform:uppercase;white-space:nowrap;
}
.tb-app-tag i{font-size:9px;color:#0d6efd;margin:0}
@media (max-width:900px){ .tb-app-tag{display:none} }

/* Header merek pada panel form login */
.auth-form-brand{
  display:flex;align-items:center;gap:11px;padding-bottom:16px;margin-bottom:18px;
  border-bottom:1px solid #eef2f7;flex-wrap:nowrap;
}
.auth-form-logo{
  width:54px;height:54px;border-radius:13px;flex-shrink:0;background:#fff;
  box-shadow:0 8px 20px rgba(13,110,253,.18),0 0 0 1px #e6eef8;padding:1px;
}
.afb-text{min-width:0;flex:1}
.afb-text strong{display:block;font-size:17px;font-weight:800;letter-spacing:1.1px;color:#0b1a33;line-height:1.15}
.afb-text span{display:block;font-size:9.8px;font-weight:700;letter-spacing:.3px;color:#64748b;text-transform:uppercase;margin-top:2px;line-height:1.3}
.afb-vendor{
  display:inline-flex;align-items:center;gap:5px;flex-shrink:0;padding:3px 8px 3px 3px;border-radius:20px;
  background:#f6f9ff;border:1px solid #e2ecfb;
}
.afb-vendor img{width:26px;height:26px;border-radius:50%;background:#fff}
.afb-vendor span{font-size:9px;font-weight:800;letter-spacing:.2px;color:#12386f;line-height:1.15;max-width:62px}
@media (max-width:520px){
  .auth-form-brand{gap:9px}
  .auth-form-logo{width:46px;height:46px;border-radius:11px}
  .afb-text strong{font-size:15px}
  .afb-vendor span{display:none}
}


/* =========================================================================
   Perbaikan formulir: hilangkan tombol naik/turun (spinner) pada input angka
   ========================================================================= */
input[type="number"]{-moz-appearance:textfield;appearance:textfield}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
input[type="number"]::-webkit-inner-spin-button{display:none}
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="datetime-local"]::-webkit-calendar-picker-indicator{opacity:.55;cursor:pointer}
/* hilangkan juga spinner pada kolom nilai cepat di halaman domain */
#qa_form input[type="number"]{-moz-appearance:textfield}


/* =========================================================================
   Lembar pengesahan: paksa tata letak KIRI → KANAN juga saat dicetak
   (sebelumnya media query max-width:960px membuatnya menumpuk vertikal
   ketika dicetak karena lebar kertas A4 < 960px)
   ========================================================================= */
@media print{
  .doc-sign{display:grid !important;grid-template-columns:repeat(var(--signer-cols,3),minmax(0,1fr)) !important;gap:10px !important;page-break-inside:avoid;break-inside:avoid}
  .sig-grid{display:grid !important;grid-template-columns:repeat(auto-fit,minmax(150px,1fr)) !important;gap:10px !important}
  .sign-box{min-height:0 !important;padding:8px !important;page-break-inside:avoid}
  .sign-box .space{height:44px !important}
  .sign-box .name{font-size:9.5pt !important}
  .sign-box .role{font-size:8.5pt !important}
}

/* =========================================================================
   Bagan struktur organisasi — tampilan & cetak
   ========================================================================= */
.org-level{margin-bottom:14px;text-align:center}
.org-level-label{
  display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;
  color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:20px;padding:3px 12px;margin-bottom:10px;
}
table.org-row{width:100%;border-collapse:separate;border-spacing:10px 0;table-layout:fixed}
table.org-row>tbody>tr>td{vertical-align:top;padding:0}
table.org-tbl{width:100%;border-collapse:collapse}
.org-box{
  border:1px solid #cbd5e1;border-top:3px solid var(--primary);border-radius:9px;background:#fff;
  padding:9px 8px;text-align:center;box-shadow:0 2px 6px rgba(15,23,42,.05);
}
.org-box.l1{border-top-color:#b91c1c;background:linear-gradient(180deg,#fff5f5,#fff)}
.org-box.l2{border-top-color:#0284c7;background:linear-gradient(180deg,#f0f9ff,#fff)}
.org-box .ob-title{font-size:10.5px;font-weight:800;color:#0b1a33;line-height:1.3}
.org-box .ob-name{font-size:10px;color:#334155;margin-top:3px;font-weight:600}
.org-box .ob-rep{font-size:8.6px;color:#94a3b8;margin-top:2px;font-style:italic}
.org-connector{height:12px;border-left:2px solid #cbd5e1;margin:0 auto;width:0}
@media print{
  .org-level{break-inside:avoid;page-break-inside:avoid}
  .org-box{break-inside:avoid;box-shadow:none}
  table.org-row{border-spacing:8px 0}
}

/* link lupa kata sandi */
.auth-forgot{display:flex;justify-content:flex-end;margin:-6px 0 10px}
.auth-forgot button{
  border:0;background:transparent;color:#0d6efd;font-size:11.5px;font-weight:800;cursor:pointer;
  display:inline-flex;align-items:center;gap:5px;padding:4px 2px;border-radius:6px;
}
.auth-forgot button:hover{text-decoration:underline}

/* =========================================================================
   Lampiran dokumen Word: pratinjau & penyuntingan isi
   ========================================================================= */
.app-doc-preview{
  max-height:min(66vh,700px);overflow:auto;background:#fff;border:1px solid #cbd5e1;border-radius:10px;padding:16px 18px;
}
.app-doc-body{font-family:"Times New Roman",Georgia,serif;font-size:12.4px;line-height:1.62;color:#111827}
.app-doc-body .dx-p{margin:0 0 8px;text-align:justify}
.app-doc-body .dx-h{font-family:var(--font);font-size:12.8px;font-weight:800;color:#0a2558;margin:14px 0 6px}
.app-doc-body .dx-empty{margin:0;height:8px}
.app-doc-body .dx-ul{margin:0 0 8px 18px;padding:0}
.app-doc-body .dx-table{width:100%;border-collapse:collapse;margin:10px 0 14px;font-size:11px}
.app-doc-body .dx-table th,.app-doc-body .dx-table td{border:1px solid #94a3b8;padding:5px 7px;vertical-align:top}
.app-doc-body .dx-table th{background:#e8f0fb;color:#0a2558;text-align:left;font-weight:800}
.dx-editor{
  border:1px solid #cbd5e1;border-radius:10px;background:#fff;padding:16px 18px;min-height:320px;max-height:60vh;overflow:auto;
  font-family:"Times New Roman",Georgia,serif;font-size:12.4px;line-height:1.62;outline:none;
}
.dx-editor:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,110,253,.12)}
.dx-editor .dx-p{margin:0 0 8px;text-align:justify}
.dx-editor .dx-h{font-family:var(--font);font-size:12.8px;font-weight:800;color:#0a2558;margin:14px 0 6px}
.dx-editor .dx-table{width:100%;border-collapse:collapse;margin:10px 0 14px;font-size:11px}
.dx-editor .dx-table th,.dx-editor .dx-table td{border:1px solid #94a3b8;padding:5px 7px}
.dx-editor .dx-table th{background:#e8f0fb;text-align:left}
.dx-toolbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
.dx-toolbar .btn{padding:5px 9px}
@media print{ .app-doc-preview{max-height:none;overflow:visible;border:0;padding:0} }

/* bar pratinjau sebelum cetak */
.review-bar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:linear-gradient(100deg,#0a2558,#0d47a1);
  color:#e8f1ff;border-radius:11px;padding:10px 14px;margin:0 0 14px;box-shadow:0 6px 18px rgba(10,37,88,.18);
}
.review-bar .rb-label{font-size:11.5px;font-weight:700;display:inline-flex;align-items:center;gap:7px}
.review-bar .rb-meta{margin-left:auto;font-size:11px;color:#9dc0ee;font-weight:700;max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.review-bar .btn-primary{background:#38bdf8;color:#0a2558;box-shadow:none}
.review-bar .btn-primary:hover{background:#7dd3fc}
@media (max-width:640px){ .review-bar .rb-meta{max-width:100%;margin-left:0} }

/* =========================================================================
   Hilangkan TOTAL tombol naik/turun (spinner) pada semua kolom angka
   ========================================================================= */
input[type="number"],
input.num-only,
.control[type="number"]{
  -webkit-appearance:none !important;
  -moz-appearance:textfield !important;
  appearance:textfield !important;
  background-image:none !important;
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button,
input.num-only::-webkit-outer-spin-button,
input.num-only::-webkit-inner-spin-button,
.control[type="number"]::-webkit-outer-spin-button,
.control[type="number"]::-webkit-inner-spin-button{
  -webkit-appearance:none !important;
  appearance:none !important;
  display:none !important;
  width:0 !important;
  height:0 !important;
  margin:0 !important;
  opacity:0 !important;
  pointer-events:none !important;
}
input[type="number"]::-webkit-textfield-decoration-container{display:none !important}
/* input baca-saja (kode otomatis) */
.control[readonly]{background:#f8fafc;color:#334155;font-weight:700;cursor:default}

/* =========================================================================
   Editor isi lampiran (online) — tata letak rapi
   ========================================================================= */
.apx-editor-block{margin-top:14px;border:1px solid var(--border);border-radius:11px;overflow:hidden;background:#fff}
.apx-editor-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding:9px 12px;background:#f8fafc;border-bottom:1px solid var(--border);
}
.apx-editor-head strong{font-size:11.5px;font-weight:800;color:#0b1a33;display:inline-flex;align-items:center;gap:7px}
.apx-editor-head strong i{color:var(--primary)}
.apx-editor-tools{display:flex;gap:5px;flex-wrap:wrap}
.apx-editor-tools .btn{padding:5px 8px;font-size:11px}
.apx-editor-block .dx-editor{border:0;border-radius:0;min-height:220px;max-height:44vh}
.dx-editor:empty:before{content:attr(data-placeholder);color:#a3aebf}

/* galeri lampiran: tata letak lebih rapi */
.apx-card{border-radius:12px}
.apx-body{padding:12px 13px 13px}
.apx-acts{gap:4px}
.apx-acts .btn{white-space:nowrap}
@media (max-width:700px){
  .apx-acts .btn{padding:6px 8px;font-size:10px}
}

/* menu cetak (jobdesk) */
.print-menu{display:grid;gap:9px}
.pm-item{
  display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;
  border:1px solid var(--border);border-radius:11px;background:#fff;padding:12px 14px;transition:.16s;
}
.pm-item:hover{border-color:var(--primary);background:#f7fbff;transform:translateY(-1px);box-shadow:0 6px 16px rgba(13,110,253,.10)}
.pm-ic{
  width:38px;height:38px;border-radius:10px;background:var(--primary-soft);color:var(--primary-dark);
  display:grid;place-items:center;font-size:15px;flex-shrink:0;
}
.pm-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.pm-body strong{font-size:12.5px;font-weight:800;color:#0b1a33}
.pm-body span{font-size:11px;color:#64748b;line-height:1.45}
.pm-arrow{color:#cbd5e1;font-size:11px;flex-shrink:0}
.org-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:7.6pt;color:#64748b;margin-top:2mm;padding-top:1.5mm;border-top:.2mm dashed #cbd5e1}
.org-legend .lg-line{display:inline-block;width:14px;height:2px;background:#94a3b8;vertical-align:middle;margin-right:4px}

/* =========================================================================
   AI bar: chip topik (menggantikan dropdown yang terjepit)
   ========================================================================= */
.ai-bar{align-items:flex-start}
.ai-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.ai-chip{
  border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#dbeafe;
  border-radius:20px;padding:5px 11px;font-size:10.6px;font-weight:700;cursor:pointer;
  transition:.15s;line-height:1.3;text-align:left;max-width:260px;
}
.ai-chip:hover{background:rgba(56,189,248,.22);border-color:#38bdf8;color:#fff}
.ai-chip.active{background:linear-gradient(135deg,#38bdf8,#2563eb);border-color:#7dd3fc;color:#fff;box-shadow:0 4px 12px rgba(56,189,248,.35)}
.ai-controls{flex:0 0 auto;align-self:center}
/* select AI lain (pengawasan, SOP, jobdesk) tetap tampil penuh, tidak terjepit */
.ai-select{min-width:210px;flex:0 1 280px;width:auto}
@media (max-width:900px){
  .ai-select{min-width:0;flex:1 1 100%}
  .ai-bar .ai-controls{width:100%}
  .ai-bar .ai-controls .btn-ai{flex:1 1 auto;justify-content:center}
}

/* =========================================================================
   Chat berwarna + kesan 3D
   ========================================================================= */
.chat-panel-head{
  background:linear-gradient(120deg,#f8fbff,#eef6ff 60%,#fff) !important;
  box-shadow:inset 0 -1px 0 #e2e8f0, 0 2px 8px rgba(15,23,42,.04);
}
.chat-panel-head .chat-peer strong{color:var(--peer,#0b1a33)}
.chat-msg.theirs .bubble{
  background:var(--bubble-bg,#fff) !important;
  color:var(--bubble-fg,#1e293b) !important;
  border:1px solid rgba(15,23,42,.06);
  box-shadow:0 2px 6px rgba(15,23,42,.07), inset 0 1px 0 rgba(255,255,255,.7);
}
.chat-msg.mine .bubble{
  background:linear-gradient(135deg,#3b82f6,#1d4ed8 70%,#1e40af) !important;
  box-shadow:0 6px 16px rgba(29,78,216,.32), inset 0 1px 0 rgba(255,255,255,.25);
}
.chat-msg .bubble{border-radius:16px}
.chat-msg.theirs .bubble{border-bottom-left-radius:5px}
.chat-msg.mine .bubble{border-bottom-right-radius:5px}
.chat-scroll{background:
  radial-gradient(600px 300px at 20% 0%, #eef6ff 0%, transparent 70%),
  radial-gradient(500px 260px at 90% 100%, #eafaf3 0%, transparent 70%),
  linear-gradient(180deg,#f8fafc,#eef2f8)}
.contact-chip{align-items:center;gap:6px;background:#fff;box-shadow:0 1px 2px rgba(15,23,42,.05)}
.contact-chip .cc-ava{
  width:20px;height:20px;border-radius:50%;color:#fff;display:grid;place-items:center;
  font-size:8.5px;font-weight:800;flex-shrink:0;box-shadow:0 2px 5px rgba(15,23,42,.18);
}
.contact-chip.active{background:linear-gradient(135deg,#0a2558,#0d47a1);border-color:#0a2558;color:#fff;box-shadow:0 6px 14px rgba(10,37,88,.28)}
.chat-thread .ct-ava{box-shadow:0 3px 8px rgba(15,23,42,.22), inset 0 1px 0 rgba(255,255,255,.35)}
.chat-day{background:linear-gradient(180deg,#fff,#eef2f8);box-shadow:0 1px 3px rgba(15,23,42,.08)}

/* =========================================================================
   Kesan 3D & tampilan lebih profesional (khusus layar, tidak memengaruhi cetak)
   ========================================================================= */
@media screen{
  body{background:
    radial-gradient(1200px 600px at 10% -10%, #eaf1ff 0%, transparent 60%),
    radial-gradient(1000px 500px at 100% 0%, #f3ecff 0%, transparent 55%),
    var(--canvas);
  }
  .card,.chart-card,.stat,.kpi,.panel,.example-item,.sop-card,.help-card,.mat-domain{
    box-shadow:0 1px 2px rgba(15,23,42,.05), 0 8px 20px -12px rgba(15,23,42,.28), inset 0 1px 0 rgba(255,255,255,.9);
    border-color:#e4eaf2;
  }
  .card:hover,.stat:hover,.kpi:hover{
    box-shadow:0 2px 4px rgba(15,23,42,.06), 0 18px 34px -18px rgba(15,23,42,.35), inset 0 1px 0 rgba(255,255,255,.95);
  }
  .stat,.kpi{background:linear-gradient(180deg,#ffffff,#fbfdff)}
  .kpi .val,.stat .num{text-shadow:0 1px 0 rgba(255,255,255,.9)}
  .topbar{
    box-shadow:0 1px 0 rgba(15,23,42,.05), 0 8px 24px -18px rgba(15,23,42,.4);
    background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(250,252,255,.94));
  }
  .sidebar{box-shadow:6px 0 26px -12px rgba(3,12,28,.45), inset -1px 0 0 rgba(255,255,255,.06)}
  .nav-item.active{box-shadow:0 8px 18px -8px rgba(13,110,253,.65), inset 0 1px 0 rgba(255,255,255,.22)}
  .btn-primary,.btn-navy,.btn-success,.btn-ai{
    box-shadow:0 1px 0 rgba(255,255,255,.35) inset, 0 6px 14px -6px rgba(13,110,253,.55), 0 2px 3px rgba(15,23,42,.12);
  }
  .btn-primary:hover,.btn-navy:hover,.btn-success:hover,.btn-ai:hover{
    box-shadow:0 1px 0 rgba(255,255,255,.45) inset, 0 12px 22px -8px rgba(13,110,253,.62), 0 3px 5px rgba(15,23,42,.14);
  }
  .btn-ghost,.btn-soft{box-shadow:0 1px 2px rgba(15,23,42,.06), inset 0 1px 0 #fff}
  .hero{
    box-shadow:0 18px 40px -22px rgba(6,22,51,.85), inset 0 1px 0 rgba(255,255,255,.12);
  }
  .hero-score{
    background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.07));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.35), 0 16px 34px -18px rgba(2,10,25,.7);
  }
  .table-container,.table-wrap{border-radius:12px}
  table.tbl thead th{box-shadow:inset 0 -1px 0 #e2e8f0}
  .pill,.badge{box-shadow:inset 0 1px 0 rgba(255,255,255,.55), 0 1px 2px rgba(15,23,42,.06)}
  .avatar{box-shadow:0 4px 10px -3px rgba(13,110,253,.55), inset 0 1px 0 rgba(255,255,255,.35)}
  .modal-card{box-shadow:0 30px 70px -24px rgba(2,10,25,.6), 0 2px 0 rgba(255,255,255,.6) inset}
  .paper{box-shadow:0 24px 60px -30px rgba(15,23,42,.55), 0 1px 0 #fff inset}
  .auth-panel{box-shadow:inset 12px 0 30px -22px rgba(15,23,42,.35)}
  .auth-form-logo,.auth-logo,.sb-logo,.client-logo-img{
    box-shadow:0 10px 22px -10px rgba(13,110,253,.65), 0 0 0 1px #e6eef8, inset 0 1px 0 #fff;
  }
  .doc-btn-row,.paper-toolbar{
    box-shadow:0 1px 2px rgba(15,23,42,.05), 0 10px 24px -18px rgba(15,23,42,.4), inset 0 1px 0 #fff;
  }
  .apx-card{box-shadow:0 1px 2px rgba(15,23,42,.05), 0 12px 26px -18px rgba(15,23,42,.4)}
  .apx-thumb{background:linear-gradient(180deg,#eef4fb,#f8fbfe)}
  .chip-tabs,.doc-tab{box-shadow:inset 0 1px 0 #fff}
}

/* =========================================================================
   Sub-menu sidebar & Master Lampiran
   ========================================================================= */
.nav-item.sub{
  padding-left:26px;font-size:12.2px;position:relative;color:#b6c8de;
}
.nav-item.sub::before{
  content:"";position:absolute;left:14px;top:50%;width:7px;height:7px;margin-top:-3.5px;
  border-radius:2px;border:1.5px solid #5f7fa4;
}
.nav-item.sub.active::before{background:#7dd3fc;border-color:#7dd3fc}
.nav-item.sub .nav-count{font-size:9px;padding:1px 6px}
.nav-item.sub:hover{transform:none}
.master-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:13px}
.master-card{
  border:1px solid var(--border);border-radius:12px;background:#fff;overflow:hidden;
  display:flex;flex-direction:column;transition:.16s;
}
.master-card:hover{box-shadow:0 10px 24px -14px rgba(15,23,42,.4);transform:translateY(-2px)}
.master-card.filled{border-color:#bbf7d0;background:linear-gradient(180deg,#f7fff9,#fff)}
.master-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid #eef2f7;background:#f8fafc}
.master-no{
  width:24px;height:24px;border-radius:7px;background:#0a2558;color:#fff;display:grid;place-items:center;
  font-size:10px;font-weight:800;flex-shrink:0;
}
.master-letter{font-size:9.5px;font-weight:800;color:#12386f;background:#eaf1fb;border-radius:5px;padding:2px 6px;flex-shrink:0}
.master-status{margin-left:auto;font-size:9px;font-weight:800;padding:2px 7px;border-radius:20px}
.master-status.ok{background:#dcfce7;color:#15803d}
.master-status.no{background:#f1f5f9;color:#64748b}
.master-body{padding:11px 12px 12px;display:flex;flex-direction:column;gap:6px;flex:1}
.master-title{font-size:12px;font-weight:800;color:#0b1a33;line-height:1.4}
.master-file{font-size:10.2px;color:#64748b;word-break:break-all;line-height:1.4}
.master-meta{font-size:9.6px;color:#94a3b8;display:flex;gap:8px;flex-wrap:wrap}
.master-acts{display:flex;gap:5px;flex-wrap:wrap;margin-top:auto;padding-top:9px;border-top:1px dashed #e2e8f0}
.master-acts .btn{padding:5px 9px;font-size:10.3px;border-radius:7px}
.master-thumb{height:92px;border-radius:8px;border:1px solid #e2e8f0;overflow:hidden;background:#f8fafc;display:grid;place-items:center;margin-bottom:2px}
.master-thumb img{width:100%;height:100%;object-fit:cover;object-position:top center}
.master-thumb i{font-size:26px;color:#94a3b8}
@media (max-width:640px){ .master-grid{grid-template-columns:1fr} }

/* =========================================================================
   Pagination tabel
   ========================================================================= */
.pager{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:11px 14px;border-top:1px solid var(--border);background:linear-gradient(180deg,#fff,#f8fafc);
}
.pager-info{font-size:11.5px;color:#64748b}
.pager-info strong{color:#0b1a33}
.pager-mid{display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.pg-btn{
  min-width:30px;height:30px;padding:0 8px;border:1px solid var(--border-strong);background:#fff;border-radius:7px;
  font-size:11.5px;font-weight:700;color:#334155;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  transition:.14s;
}
.pg-btn:hover:not(:disabled):not(.active){border-color:var(--primary);color:var(--primary);background:#f5f9ff}
.pg-btn.active{background:linear-gradient(180deg,#1a78ff,#0d6efd);border-color:#0d6efd;color:#fff;box-shadow:0 4px 10px -4px rgba(13,110,253,.6)}
.pg-btn:disabled{opacity:.4;cursor:not-allowed}
.pager-size{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#64748b}
.pager-size select{
  border:1px solid var(--border-strong);border-radius:7px;padding:4px 8px;font-size:11.5px;font-weight:700;
  color:#0b1a33;background:#fff;cursor:pointer;outline:none;
}
@media (max-width:640px){
  .pager{flex-direction:column;align-items:flex-start;gap:8px}
  .pager-mid,.pager-size{width:100%}
}
