/* KOL Hub — layout: sidebar kiri + area kerja, tabel padat untuk operasional KOL Specialist */
:root{
  --bg:#F2F3F6; --surface:#FFFFFF; --surface-2:#F7F8FA; --line:#E2E4EA; --line-2:#CDD1DA;
  --ink:#15171C; --ink-2:#4A4F5C; --ink-3:#7C8190;
  --accent:#4F3CC9; --accent-soft:#ECE9FB; --accent-ink:#FFFFFF;
  --good:#17845A; --good-soft:#E3F4EC; --warn:#A86A00; --warn-soft:#FBF0D9; --bad:#C23B3B; --bad-soft:#FBE6E6;
  --ig:#C13584; --tt:#111111; --yt:#D62424;
  --f-display:"Bricolage Grotesque", "Plus Jakarta Sans", system-ui, sans-serif;
  --f-body:"Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --f-mono:"JetBrains Mono", ui-monospace, Menlo, monospace;
  --r:10px; --r-sm:7px;
  --shadow:0 1px 2px rgba(20,22,30,.05), 0 4px 18px rgba(20,22,30,.06);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#101116; --surface:#181A21; --surface-2:#1E2029; --line:#2A2D38; --line-2:#3A3E4B;
    --ink:#ECEDF2; --ink-2:#B4B8C5; --ink-3:#848A99;
    --accent:#9585FF; --accent-soft:#2A2550; --accent-ink:#0F0C24;
    --good:#4CC98F; --good-soft:#163527; --warn:#E3A93A; --warn-soft:#3A2D12; --bad:#F07474; --bad-soft:#3D1C1C;
    --ig:#E86BB6; --tt:#E8E8E8; --yt:#FF6B6B;
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 6px 20px rgba(0,0,0,.25);
    color-scheme:dark;
  }
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--ink);font:14px/1.5 var(--f-body);-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
h1,h2,h3{font-family:var(--f-display);letter-spacing:-.01em;text-wrap:balance;margin:0}
h1{font-size:24px;font-weight:700}
h2{font-size:17px;font-weight:650}
h3{font-size:14px;font-weight:650}
.num,td.n,.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-size:12.5px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- shell ---------- */
.app{display:grid;grid-template-columns:232px 1fr;min-height:100%}
.side{background:var(--surface);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:10px;padding:4px 10px 16px}
.brand .logo{width:30px;height:30px;border-radius:8px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font:800 13px var(--f-display)}
.brand b{font:700 16px var(--f-display)}
.brand small{display:block;color:var(--ink-3);font-size:11px;margin-top:-2px}
.nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--ink-2);text-decoration:none;font-weight:550}
.nav a svg{width:17px;height:17px;flex:none}
.nav a:hover{background:var(--surface-2);color:var(--ink)}
.nav a.on{background:var(--accent-soft);color:var(--accent)}
.nav .badge{margin-left:auto}
.side .foot{margin-top:auto;display:flex;flex-direction:column;gap:6px;padding:10px}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:20px 28px 6px}
.top .grow{flex:1}
.top p{margin:2px 0 0;color:var(--ink-3)}
.page{padding:14px 28px 48px;display:flex;flex-direction:column;gap:18px}
.demo-bar{background:var(--warn-soft);color:var(--warn);padding:8px 28px;font-size:13px;border-bottom:1px solid var(--line)}
.demo-bar a{color:inherit;font-weight:650}

@media (max-width:860px){
  .app{grid-template-columns:1fr}
  .side{position:sticky;top:0;z-index:20;height:auto;flex-direction:row;align-items:center;padding:8px 10px;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line)}
  .brand{padding:0 8px 0 2px}.brand small{display:none}
  .nav{display:flex;gap:2px}
  .nav a{white-space:nowrap;padding:7px 9px}
  .nav a span.lbl{display:none}
  .nav a.on span.lbl{display:inline}
  .side .foot{display:none}
  .top,.page{padding-left:16px;padding-right:16px}
  .demo-bar{padding:8px 16px}
}

/* ---------- building blocks ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.card>.hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 16px;border-bottom:1px solid var(--line)}
.card>.hd .grow{flex:1}
.card>.bd{padding:16px}
.card>.bd.flush{padding:0}
.grid{display:grid;gap:18px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g-side{grid-template-columns:minmax(0,1fr) 340px}
@media (max-width:1100px){.g-side{grid-template-columns:1fr}}
@media (max-width:760px){.g2,.g3{grid-template-columns:1fr}}

.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.tile .k{color:var(--ink-3);font-size:12px;font-weight:600}
.tile .v{font:700 24px var(--f-display);margin-top:4px;font-variant-numeric:tabular-nums}
.tile .s{color:var(--ink-3);font-size:12px}

.btn{appearance:none;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);border-radius:8px;padding:7px 12px;font:600 13px var(--f-body);cursor:pointer;display:inline-flex;align-items:center;gap:6px;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:var(--ink-3)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.pri:hover{filter:brightness(1.07)}
.btn.ghost{border-color:transparent;background:transparent;color:var(--ink-2)}
.btn.ghost:hover{background:var(--surface-2)}
.btn.danger{color:var(--bad)}
.btn.sm{padding:4px 8px;font-size:12px;border-radius:6px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn svg{width:15px;height:15px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.row.end{justify-content:flex-end}
.muted{color:var(--ink-3)}
.small{font-size:12px}
.hr{height:1px;background:var(--line);margin:4px 0}

.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;font-size:11.5px;font-weight:650;background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line);white-space:nowrap}
.pill.good{background:var(--good-soft);color:var(--good);border-color:transparent}
.pill.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.pill.bad{background:var(--bad-soft);color:var(--bad);border-color:transparent}
.pill.acc{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.pill.ex{border-style:dashed}
.badge{background:var(--bad);color:#fff;border-radius:99px;font-size:11px;font-weight:700;padding:0 6px;line-height:18px;min-width:18px;text-align:center}
.plat{display:inline-flex;align-items:center;gap:4px;font-weight:650;font-size:12px}
.plat i{width:8px;height:8px;border-radius:2px;display:inline-block}
.plat.Instagram i{background:var(--ig)} .plat.TikTok i{background:var(--tt)} .plat.YouTube i{background:var(--yt)}

/* ---------- table ---------- */
.tbl-wrap{overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-size:11.5px;font-weight:650;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;padding:9px 10px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap;position:sticky;top:0}
.tbl td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tr:hover td{background:var(--surface-2)}
.tbl td.n,.tbl th.n{text-align:right;white-space:nowrap}
.tbl .who b{display:block;font-weight:650}
.tbl .who span{color:var(--ink-3);font-size:12px}
.tbl input.cell,.tbl select.cell{width:100%;min-width:70px;padding:4px 6px;border:1px solid transparent;background:transparent;border-radius:5px;font:inherit;color:inherit}
.tbl input.cell.n{text-align:right;font-family:var(--f-mono);font-size:12.5px}
.tbl input.cell:hover,.tbl select.cell:hover{border-color:var(--line-2)}
.tbl input.cell:focus,.tbl select.cell:focus{border-color:var(--accent);background:var(--surface);outline:0}
.empty{padding:40px 16px;text-align:center;color:var(--ink-3)}
.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}

/* ---------- forms ---------- */
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field label{font-size:12.5px;font-weight:650;color:var(--ink-2)}
.field label .req{color:var(--bad)}
.field .hint{font-size:11.5px;color:var(--ink-3)}
.inp,select.inp,textarea.inp{width:100%;padding:8px 10px;border:1px solid var(--line-2);border-radius:8px;background:var(--surface);color:var(--ink);font:14px var(--f-body)}
textarea.inp{min-height:76px;resize:vertical}
.inp:focus{border-color:var(--accent);outline:0;box-shadow:0 0 0 3px var(--accent-soft)}
.inp.invalid{border-color:var(--bad)}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px 14px}
.fgrid .full{grid-column:1/-1}
.fsec{display:flex;flex-direction:column;gap:12px;padding:16px 0;border-top:1px solid var(--line)}
.fsec:first-child{border-top:0;padding-top:0}
.fsec>h3 .muted{font-weight:500;font-size:12px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{position:relative}
.chip input{position:absolute;opacity:0;inset:0;cursor:pointer}
.chip span{display:inline-block;padding:5px 10px;border-radius:99px;border:1px solid var(--line-2);font-size:12.5px;font-weight:550;color:var(--ink-2);background:var(--surface)}
.chip input:checked+span{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.toolbar .inp{width:auto;padding:6px 10px;font-size:13px}
.toolbar .search{min-width:220px;flex:1;max-width:340px}
.check{display:flex;gap:8px;align-items:flex-start;font-size:13px}
.check input{margin-top:3px}

/* ---------- metrics ---------- */
.bar{height:8px;background:var(--surface-2);border-radius:99px;overflow:hidden;border:1px solid var(--line)}
.bar>i{display:block;height:100%;background:var(--accent);border-radius:99px}
.bar.good>i{background:var(--good)} .bar.warn>i{background:var(--warn)} .bar.bad>i{background:var(--bad)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px}
.kv dt{color:var(--ink-3)} .kv dd{margin:0;font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.verdict{border-radius:var(--r);padding:16px;display:flex;gap:14px;align-items:center}
.verdict.good{background:var(--good-soft);color:var(--good)}
.verdict.warn{background:var(--warn-soft);color:var(--warn)}
.verdict.bad{background:var(--bad-soft);color:var(--bad)}
.verdict.muted{background:var(--surface-2);color:var(--ink-3)}
.verdict .big{font:800 26px var(--f-display)}
.verdict .score{margin-left:auto;text-align:right}
.verdict .score b{font:800 28px var(--f-display);display:block;line-height:1}
.flags{margin:0;padding-left:18px;color:var(--ink-2);font-size:13px;display:flex;flex-direction:column;gap:4px}
.hbars{display:flex;flex-direction:column;gap:8px}
.hbars .r{display:grid;grid-template-columns:130px 1fr 44px;gap:10px;align-items:center;font-size:12.5px}
.hbars .r span:last-child{text-align:right;font-family:var(--f-mono)}
.list{display:flex;flex-direction:column}
.list .it{display:flex;gap:10px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line)}
.list .it:last-child{border-bottom:0}
.list .it .grow{flex:1;min-width:0}
.list .it .grow b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.camp-list a{display:block;padding:12px 14px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.camp-list a:hover{background:var(--surface-2)}
.camp-list a.on{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}
.camp-list a b{display:block}

/* ---------- modal / toast ---------- */
.ovl{position:fixed;inset:0;background:rgba(10,12,18,.5);display:flex;align-items:flex-start;justify-content:center;padding:4vh 14px;z-index:100;overflow-y:auto}
.modal{background:var(--surface);border-radius:14px;width:min(560px,100%);box-shadow:0 20px 60px rgba(0,0,0,.3);display:flex;flex-direction:column;max-height:none}
.modal.wide{width:min(920px,100%)}
.modal .mh{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line)}
.modal .mh h2{flex:1}
.modal .mb{padding:18px}
.modal .mf{display:flex;gap:8px;justify-content:flex-end;padding:14px 18px;border-top:1px solid var(--line);background:var(--surface-2);border-radius:0 0 14px 14px;flex-wrap:wrap}
.toasts{position:fixed;bottom:18px;right:18px;display:flex;flex-direction:column;gap:8px;z-index:200}
.toast{background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:9px;font-size:13px;font-weight:550;box-shadow:var(--shadow);max-width:360px}
.toast.bad{background:var(--bad);color:#fff}
.toast.good{background:var(--good);color:#fff}
.loading{padding:40px;text-align:center;color:var(--ink-3)}
.spin{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:sp .7s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
.note{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:12.5px;color:var(--ink-2)}
.note.acc{background:var(--accent-soft);border-color:transparent;color:var(--ink)}

/* ---------- public (KOL) pages ---------- */
.pub{max-width:820px;margin:0 auto;padding:28px 16px 60px;display:flex;flex-direction:column;gap:18px}
.pub-head{display:flex;align-items:center;gap:12px}
.pub-hero{padding:22px;border-radius:14px;background:var(--accent);color:var(--accent-ink)}
.pub-hero h1{font-size:28px}
.pub-hero p{margin:6px 0 0;opacity:.9;max-width:60ch}
.camp-opt{display:flex;gap:12px;padding:12px;border:1px solid var(--line);border-radius:10px;align-items:flex-start;cursor:pointer}
.camp-opt:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.camp-opt b{display:block}
.codebox{font:700 22px var(--f-mono);letter-spacing:.12em;background:var(--surface-2);border:1px dashed var(--line-2);border-radius:8px;padding:10px 14px;text-align:center}

/* ---------- report chart ---------- */
.chart svg{width:100%;height:auto;display:block}
.chart text{fill:var(--ink-3);font:11px var(--f-body)}
.chart .lbl{fill:var(--ink-2)}
@media print{
  .side,.top .row,.demo-bar,.no-print{display:none!important}
  .app{display:block} body{background:#fff}
  .card{box-shadow:none;break-inside:avoid}
}
.camp-tab{display:flex;flex-direction:column;gap:2px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;text-decoration:none;color:var(--ink);min-width:200px;max-width:280px;background:var(--surface)}
.camp-tab span{color:var(--ink-3)}
.camp-tab b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.camp-tab:hover{border-color:var(--line-2)}
.camp-tab.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 -3px 0 var(--accent)}
.side{align-self:start}
@media (max-width:560px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.tile .v{font-size:19px}}
.acc-card{border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--surface-2)}
.acc-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}
.price-tag{font:800 30px var(--f-display)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px}
.tabs button{appearance:none;border:0;background:none;padding:10px 12px;font:600 14px var(--f-body);color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs button.on{color:var(--accent);border-color:var(--accent)}
.opt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.opt{position:relative;border:1px solid var(--line-2);border-radius:10px;padding:10px 12px;cursor:pointer;background:var(--surface)}
.opt input{position:absolute;opacity:0}
.opt:has(input:checked){border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.opt b{display:block}
.opt:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.pay-box{border:1px dashed var(--line-2);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--surface-2)}
.qris{max-width:240px;border-radius:8px;background:#fff;padding:8px}
@media (max-width:860px){.side .foot{display:none}}
/* ---------- landing ---------- */
.land-wrap{max-width:1120px;margin:0 auto;padding:0 20px}
.land-nav{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:12px 0}
.land-nav .brand{padding:0}
.land-hero{padding:56px 0 24px}
.land-hero .land-wrap{display:flex;flex-direction:column;gap:16px;align-items:flex-start}
.land-hero h1{font-size:clamp(30px,5vw,50px);line-height:1.08;max-width:18ch;font-weight:800}
.land-hero p{font-size:17px;color:var(--ink-2);max-width:60ch;margin:0}
.btn.lg{padding:11px 18px;font-size:15px;border-radius:10px}
.land-shot{width:100%;margin-top:18px;border-radius:14px;border:1px solid var(--line);box-shadow:0 30px 60px -30px rgba(20,22,40,.35)}
.land-sec{padding:56px 0}
.land-sec.alt{background:var(--surface)}
.land-sec h2{font-size:28px;margin-bottom:22px}
.land-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.land-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:6px}
.land-card h3{font-size:16px}
.land-card p{margin:0;color:var(--ink-2);font-size:14px}
.land-price{display:flex;flex-direction:column;gap:10px;height:100%}
.land-price p{margin:0}
.land-price .flags{flex:1}
.land-price .btn{align-self:flex-start}
.land-faq{display:flex;flex-direction:column;gap:8px;max-width:760px}
.land-faq details{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 16px}
.land-faq summary{font-weight:650;cursor:pointer}
.land-faq p{color:var(--ink-2);margin:8px 0 0}
.land-foot{padding:24px 0;border-top:1px solid var(--line)}
[hidden]{display:none!important}
@media (max-width:760px){.masuk-pitch{order:2}}
/* cetak/PDF dari halaman aplikasi hanya lewat export berbayar */
@media print{
  body:not(.print-ok) .app{display:none!important}
  body:not(.print-ok)::before{content:"Cetak / PDF tersedia lewat menu Export (berbayar) di aplikasi.";display:block;padding:48px 24px;font:16px Arial,sans-serif;color:#000}
  body.print-ok .side,body.print-ok #topBanner,body.print-ok .toasts{display:none!important}
}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:1000px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:600px){.g4{grid-template-columns:1fr}}

/* ---------- dokumen cetak report (A4) ---------- */
#printRoot{display:none}
@media print{
  @page{size:A4 portrait;margin:12mm}
  body.print-ok > *:not(#printRoot){display:none!important}
  body.print-ok #printRoot{display:block}
  body.print-ok{background:#fff!important;color:#111827}
  body.print-ok::before{content:none}
}
.pr{font:10pt/1.45 "Plus Jakarta Sans",Arial,sans-serif;color:#111827;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.pr h1{font:700 19pt/1.2 "Bricolage Grotesque",Arial,sans-serif;margin:2px 0 4px;letter-spacing:-.01em}
.pr h2{font:700 11pt "Bricolage Grotesque",Arial,sans-serif;margin:0 0 8px;color:#111827}
.pr h2 small{font:400 8.5pt Arial,sans-serif;color:#6B7280;margin-left:6px}
.pr section{break-inside:avoid;margin-bottom:12px}
.pr-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:2px solid #4F3CC9;padding-bottom:10px;margin-bottom:12px}
.pr-head p{margin:0;color:#4B5563}
.pr-brand{font-size:8.5pt;font-weight:700;color:#4F3CC9;text-transform:uppercase;letter-spacing:.06em}
.pr-date{text-align:right;font-size:8.5pt;color:#6B7280;white-space:nowrap}
.pr-status{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:10px 14px}
.pr-status span{display:block;font-size:8.5pt;font-weight:600}
.pr-status b{font:800 16pt "Bricolage Grotesque",Arial,sans-serif}
.pr-status .r{text-align:right}
.pr-status.good{background:#DCF3E7;color:#17845A}.pr-status.warn{background:#FBEFD5;color:#A86A00}.pr-status.bad{background:#FBE3E3;color:#C23B3B}
.pr-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.pr-kpi{border:1px solid #E5E7EB;border-radius:6px;padding:7px 9px}
.pr-kpi span{display:block;font-size:8pt;color:#6B7280;font-weight:600}
.pr-kpi b{display:block;font:700 12.5pt "Bricolage Grotesque",Arial,sans-serif;font-variant-numeric:tabular-nums}
.pr-kpi em{display:block;font-style:normal;font-size:7.5pt;color:#6B7280}
.pr-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.pr-bar{margin-bottom:8px}
.pr-bar-t{display:flex;justify-content:space-between;font-size:9pt;margin-bottom:3px}
.pr-track{height:7px;background:#F3F4F6;border-radius:9px;overflow:hidden}
.pr-track i{display:block;height:100%;border-radius:9px;background:#4F3CC9}
.pr-track i.good{background:#17845A}.pr-track i.warn{background:#D9930A}.pr-track i.bad{background:#C23B3B}
.pr ol{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:4px;font-size:9pt}
.pr-tbl{width:100%;border-collapse:collapse;font-size:8.5pt}
.pr-tbl th{background:#4F3CC9;color:#fff;font-weight:700;text-align:left;padding:5px 6px}
.pr-tbl td{padding:5px 6px;border-bottom:1px solid #E5E7EB;font-variant-numeric:tabular-nums}
.pr-tbl .n{text-align:right;white-space:nowrap;font-family:inherit;font-size:inherit;font-variant-numeric:tabular-nums}
.pr-tbl tr{break-inside:avoid}
.pr-tbl tr.tot td{background:#F3F4F6;font-weight:700;border-bottom:0}
.pr .tag{font-size:7pt;font-weight:700;padding:1px 5px;border-radius:9px;white-space:nowrap}
.pr .tag.good{background:#DCF3E7;color:#17845A}.pr .tag.bad{background:#FBE3E3;color:#C23B3B}
.pr-chart svg{max-height:200px}
.pr-chart text{fill:#6B7280;font-size:11px}
.pr-foot{margin-top:6px;padding-top:8px;border-top:1px solid #E5E7EB;font-size:7.5pt;color:#6B7280}
/* ===== operasional campaign ===== */
.note.good{background:var(--good-soft);border-color:transparent;color:var(--good)}
.note.bad{background:var(--bad-soft);border-color:transparent;color:var(--bad)}
.rtabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:4px 0 16px;overflow-x:auto}
.rtabs button{appearance:none;border:0;background:none;padding:9px 12px;font:600 13px var(--f-body);color:var(--ink-3);border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap}
.rtabs button.on{color:var(--accent);border-bottom-color:var(--accent)}
.xhead{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.tplgrid{display:flex;flex-wrap:wrap;gap:6px}
.chipbtn{appearance:none;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:99px;padding:6px 12px;font:600 12.5px var(--f-body);cursor:pointer}
.chipbtn:hover{border-color:var(--line-2)}.chipbtn.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.paybox .kv{margin:0}.proofimg{width:88px;height:88px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}
.tbl.mini th,.tbl.mini td{padding:6px 8px;font-size:12.5px}
details.fsec>summary{cursor:pointer;list-style:none;padding:2px 0}details.fsec>summary::-webkit-details-marker{display:none}
details.fsec>summary h3::before{content:"▸ ";color:var(--ink-3)}details.fsec[open]>summary h3::before{content:"▾ "}
details.fsec[open]>summary{margin-bottom:10px}
.autofill{background:var(--accent-soft);border-radius:10px;padding:12px 14px;margin-bottom:14px;display:flex;flex-direction:column;gap:2px}
.autofill .inp{background:var(--surface)}
.menu{position:relative}.menu>summary{list-style:none}.menu>summary::-webkit-details-marker{display:none}
.menu-pop{position:absolute;right:0;top:calc(100% + 4px);z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:6px;min-width:210px;display:flex;flex-direction:column}
.menu-pop button,.menu-pop a{appearance:none;border:0;background:none;text-align:left;padding:8px 10px;border-radius:7px;font:500 13px var(--f-body);color:var(--ink);cursor:pointer;text-decoration:none}
.menu-pop button:hover,.menu-pop a:hover{background:var(--surface-2)}
.pipe{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line)}
.pipe.static{padding:0;border:0}
.pchip{appearance:none;border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:4px 10px;font:500 12.5px var(--f-body);color:var(--ink-2);cursor:pointer}
.pchip b{font-weight:700;color:var(--ink);margin-left:2px}.pchip.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}.pchip.on b{color:var(--surface)}
.pchip.new{border-color:var(--accent);color:var(--accent)}
.etbl td{vertical-align:middle}.etbl tr.off td{opacity:.5}
.etbl .who a{color:inherit;text-decoration:none}.etbl .who a:hover b{text-decoration:underline}
.flags-row{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}.flags-row .pill{font-size:10.5px;padding:1px 7px}
.dot{display:inline-block;width:8px;height:8px;border-radius:9px;background:var(--accent);margin-right:6px;vertical-align:1px}
.dl span{display:block;white-space:nowrap}.dl .late{color:var(--bad);font-weight:700}.dl .due{color:var(--warn);font-weight:700}
.agenda{display:flex;flex-direction:column}
.ag{display:flex;gap:12px;align-items:center;padding:10px 16px;border-top:1px solid var(--line)}
.ag:first-child{border-top:0}.ag-i{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:var(--surface-2);flex:none}
.ag.bad .ag-i{background:var(--bad-soft)}.ag.warn .ag-i{background:var(--warn-soft)}.ag.acc .ag-i{background:var(--accent-soft)}
.ag b{display:block;font-weight:600}.ag.bad b{color:var(--bad)}
.imp-drop{border:2px dashed var(--line-2);border-radius:12px;padding:20px;text-align:center;display:flex;flex-direction:column;gap:4px;background:var(--surface-2)}
.imp-drop.on{border-color:var(--accent);background:var(--accent-soft)}
.imp-map{margin:12px 0;font-size:13px}.imp-map summary{cursor:pointer;font-weight:600}.imp-map .fgrid{margin-top:10px}
.tbl tr.off td{opacity:.5}
.inp.sm{padding:5px 8px;font-size:12.5px}
.step>summary{cursor:pointer;list-style:none}.step>summary::-webkit-details-marker{display:none}
.stepn{width:28px;height:28px;border-radius:99px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:700;flex:none}
.step.done .stepn{background:var(--good-soft);color:var(--good)}
.pub.wide{max-width:1040px}
.kgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.kcard2{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--surface)}
.kstats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px}.kstats div{background:var(--surface-2);border-radius:8px;padding:6px 8px}
.kstats b{display:block;font-size:14px}.kstats span{font-size:11px;color:var(--ink-3)}
/* tabel campaign jadi kartu di HP */
@media (max-width:760px){
  .etbl thead{display:none}
  .etbl,.etbl tbody,.etbl tr{display:block;width:100%}
  .etbl tr{border-bottom:8px solid var(--bg);padding:10px 12px;display:grid;grid-template-columns:1fr 1fr;gap:6px 10px}
  .etbl td{display:flex;flex-direction:column;gap:2px;border:0;padding:0;text-align:left!important}
  .etbl td[data-l]::before{content:attr(data-l);font-size:10.5px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em}
  .etbl td.who{grid-column:1/-1}.etbl td.who::before{display:none}
  .etbl td[data-l="Link"]{grid-column:1/-1}
  .etbl td.acts{grid-column:1/-1;flex-direction:row;flex-wrap:wrap;gap:4px}
  .etbl .cell{width:100%!important;min-width:0!important}
  .ag{padding:10px 12px}
}
.verdict.acc{background:var(--accent-soft);color:var(--accent)}
.ag .grow{flex:1;min-width:0}.nowrap{white-space:nowrap}.etbl .acts .btn{padding:4px 7px}

.tscroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.etbl .dl-in{display:none}
@media (max-width:1400px) and (min-width:761px){.etbl .c-dl{display:none}.etbl .dl-in{display:flex;gap:6px;margin-top:3px}.etbl .dl-in:empty{display:none}}
@media (max-width:760px){.etbl .dl-in{display:none!important}.tscroll{overflow:visible}}

/* ---- v7: dokumen, kalender, onboarding, agensi ---- */
@media (min-width:561px){.tiles{grid-template-columns:repeat(auto-fit,minmax(134px,1fr))}}
.docframe{width:100%;height:min(68vh,760px);border:1px solid var(--line);border-radius:10px;background:#fff}
.brief h3{font-size:13px;margin:14px 0 4px;color:var(--ink-2)}.brief h3:first-child{margin-top:0}.brief ul{margin:4px 0 0;padding-left:20px}.brief p{margin:4px 0 0}
.spkbox{white-space:pre-wrap;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:14px 16px;max-height:340px;overflow:auto;font-size:13.5px;line-height:1.6}
.kmeta{display:flex;flex-wrap:wrap;gap:4px 8px;margin-top:2px}.kmeta i{font-style:normal;font-size:11px;color:var(--ink-3)}.kmeta i.star{color:#B7791F;font-weight:700}.kmeta i.bad{color:var(--bad)}.kmeta i.warn{color:var(--warn)}
.cal-h,.cal-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-h span{padding:8px;font-size:11px;font-weight:700;color:var(--ink-3);text-transform:uppercase;text-align:center;border-bottom:1px solid var(--line)}
.cal-d{min-height:104px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px;display:flex;flex-direction:column;gap:3px;min-width:0}.cal-g .cal-d:nth-child(7n){border-right:0}
.cal-d.off{background:var(--surface-2)}.cal-d.today{background:var(--accent-soft)}.cal-n{font-size:12px;font-weight:700;color:var(--ink-2)}.cal-d.today .cal-n{color:var(--accent)}
.cal-e{display:block;width:100%;text-align:left;border:0;border-left:3px solid var(--ink-3);background:var(--surface-2);border-radius:4px;padding:2px 6px;font:inherit;font-size:11.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.cal-e.acc{border-color:var(--accent)}.cal-e.good{border-color:var(--good)}.cal-e.warn{border-color:var(--warn)}.cal-e.bad{border-color:var(--bad)}.cal-e.late{background:var(--bad-soft,#fde8e8);color:var(--bad)}.cal-e.plan{opacity:.65;border-style:dashed}
.legend .cal-e{width:auto;margin:2px 4px 2px 0;cursor:default}
@media (max-width:760px){.cal-d{min-height:64px;padding:3px}.cal-e{font-size:0;height:6px;padding:0;border-left-width:0}.cal-h span{padding:6px 0}}
.onb .bar{height:6px}.onb-l{list-style:none;margin:0;padding:8px 18px 14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px}
.onb-l li{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:10px 12px}.onb-l li .grow{display:flex;flex-direction:column}.onb-l li.ok{opacity:.6}.onb-l .stepn{flex:none}
.land-flow{list-style:none;padding:0;margin:18px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;counter-reset:f}
.land-flow li{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--surface);display:flex;flex-direction:column;gap:4px;position:relative}
.land-flow li span{font-size:12px;color:var(--accent);font-weight:700}.land-flow li small{color:var(--ink-3)}
tr.cli td.who span{line-height:1.9}
@media (max-width:860px){.side{scrollbar-width:none}.side::-webkit-scrollbar{display:none}.brand b{white-space:nowrap}.brand .logo{flex:none}}
.legal article h2{font-size:16px;margin:22px 0 6px}.legal article p,.legal article li{line-height:1.65}.legal article ul{padding-left:20px}

/* ---- v8: AI, riwayat, WA massal ---- */
.aimd h3{font-size:14.5px;margin:14px 0 6px}.aimd h3:first-child{margin-top:0}.aimd p{margin:6px 0;line-height:1.6}.aimd ul,.aimd ol{margin:4px 0 8px;padding-left:20px;line-height:1.6}
.btn.ai{background:linear-gradient(135deg,var(--accent-soft),#FCE7F3);border-color:transparent}
.aib{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:var(--surface)}.aib.q{background:var(--accent-soft);border-color:transparent;margin-left:15%}
.hist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.hist li{border-left:3px solid var(--line-2);padding:2px 0 2px 12px}.hc{font-size:13px;margin-top:2px}.hc span{color:var(--ink-3);min-width:120px;display:inline-block}.hc s{color:var(--ink-3)}
.aicard summary{list-style:none;cursor:pointer}.aicard summary::-webkit-details-marker{display:none}
