/* ==========================================================================
   ULik.me — app stylesheet (mobile-first)
   Brand: ULik.me — modern, clean, creator-focused, Indonesian SaaS
   ========================================================================== */
:root{
  --ink:var(--ulik-slate-main); --ink-2:#334155; --mut:var(--ulik-slate-muted); --mut-2:#94A3B8;
  --bg:var(--ulik-bg); --bg-2:#F0F9FF;
  --ind:var(--ulik-sky-main); --vio:var(--ulik-sky-light); --pink:var(--ulik-sky-light); --sky:#0EA5E9; --teal:#0D9488;
  --grad:linear-gradient(120deg,var(--ulik-sky-main) 0%,var(--ulik-sky-light) 55%,#7DD3FC 100%);
  --grad-soft:linear-gradient(120deg,var(--ulik-sky-main),var(--ulik-sky-light));
  --ok:#059669; --warn:#D97706; --err:#DC2626; --info:#0284C7;
  --line:rgba(15,23,42,.09);
  --glass:rgba(255,255,255,.66);
  --radius:16px; --radius-lg:22px; --radius-sm:10px;
  --shadow:0 10px 34px -12px rgba(14,165,233,.22);
  --shadow-lg:0 22px 60px -18px rgba(14,165,233,.30);
  --font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
}

/* ==========================================================================
   DESIGN TOKENS BAKU — ULik.me Dashboard Redesign (Fase 0)
   --------------------------------------------------------------------------
   STATUS: PENDAFTARAN TOKEN SAJA. Lapisan ini belum dipakai oleh satu pun aturan/
   komponen UI — nilai di bawah adalah SUMBER BAKU untuk tahap redesign berikutnya.

   Konvensi penamaan mengikuti nama token yang diminta (gaya Tailwind), dan padanannya
   bila kelak dipakai bersama utility class:
     ulik-bg          →  bg-ulik-bg              (canvas utama)
     ulik-sky-main    →  bg-/text-/border-ulik-sky-main
     ulik-sky-light   →  bg-/text-ulik-sky-light
     ulik-sky-tint    →  bg-ulik-sky-tint        (latar biru lembut)
     ulik-sky-border  →  border-ulik-sky-border
     ulik-slate-main  →  text-ulik-slate-main    (heading/teks utama)
     ulik-slate-muted →  text-ulik-slate-muted   (teks sekunder/subtitle)
     rounded-bento    →  radius kartu utama 18px
     rounded-button   →  radius tombol baku 10px

   ATURAN PENTING (jangan diubah tanpa membaca AGENTS.md):
   Token ini SENGAJA TIDAK menimpa variabel brand yang sudah berjalan (--bg, --ind,
   --sky, --radius, --radius-sm, dst) dan tidak direferensikan aturan mana pun. Menyalin
   nilai token ini ke variabel lama = mengubah tampilan yang sudah rilis, dan itu BUKAN
   cakupan fase pendaftaran ini.
   ========================================================================== */
:root{
  /* Colors */
  --ulik-bg:#F4F7FB;           /* Background canvas utama */
  --ulik-sky-main:#0EA5E9;     /* Sky blue deep */
  --ulik-sky-light:#38BDF8;    /* Sky blue bright/master */
  --ulik-sky-tint:#E0F2FE;     /* Soft blue background */
  --ulik-sky-border:#BAE6FD;   /* Border tipis aksen */
  --ulik-slate-main:#0F172A;   /* Warna teks utama / heading */
  --ulik-slate-muted:#64748B;  /* Warna teks sekunder / subtitle */
  /* Border radius */
  --radius-bento:18px;         /* Radius kartu utama */
  --radius-button:10px;        /* Radius tombol baku */
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);
  background-image:radial-gradient(900px 520px at 12% -8%,rgba(56,189,248,.16),transparent 60%),
                   radial-gradient(800px 480px at 105% 8%,rgba(56,189,248,.13),transparent 55%),
                   radial-gradient(700px 500px at 50% 115%,rgba(14,165,233,.10),transparent 60%);
  background-attachment:fixed;line-height:1.55;min-height:100vh}
img{max-width:100%;vertical-align:middle}
a{color:var(--ind);text-decoration:none}
a:hover{opacity:.85}
h1,h2,h3,h4{line-height:1.2;margin:0 0 .4em;letter-spacing:-.02em;font-weight:800}
h1{font-size:clamp(1.7rem,4.5vw,2.6rem)}
h2{font-size:clamp(1.35rem,3vw,1.8rem)}
h3{font-size:1.1rem}
p{margin:.35em 0}
.muted{color:var(--mut)}
small{color:var(--mut)}
code{background:var(--ulik-sky-tint);border-radius:6px;padding:.1em .4em;font-size:.92em;word-break:break-all}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

.wrap{max-width:1140px;margin:0 auto;padding:0 20px}
.checkout-wrap,.err-wrap{max-width:640px;margin:0 auto;padding:28px 16px 60px}
.ic{display:inline-flex;vertical-align:-4px}

/* ------------------------------------------------------------------ logo --- */
.ulik-logo{font-size:1.4rem;font-weight:900;letter-spacing:-.03em;color:var(--ink);display:inline-flex;align-items:center}
.ulik-logo span{background:var(--grad-soft);-webkit-background-clip:text;background-clip:text;color:transparent}
.logo-light{color:#fff}

/* ------------------------------------------------------------------ flash --- */
.flash-stack{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:900;width:min(92vw,560px);display:flex;flex-direction:column;gap:8px}
.flash{border-radius:14px;padding:12px 42px 12px 16px;position:relative;font-size:.93rem;box-shadow:var(--shadow);backdrop-filter:blur(14px)}
.flash-ok{background:rgba(236,253,245,.96);border:1px solid #a7f3d0;color:#065f46}
.flash-err{background:rgba(254,242,242,.97);border:1px solid #fecaca;color:#991b1b}
.flash-info{background:rgba(224,242,254,.97);border:1px solid #bae6fd;color:#075985}
.flash-warn{background:rgba(255,247,237,.97);border:1px solid #fed7aa;color:#92400e}
.flash-close{position:absolute;right:8px;top:6px;border:0;background:none;font-size:1.2rem;cursor:pointer;color:inherit;opacity:.6}
.flash a,.flash code{color:inherit}
code.flash-code{display:inline-block;margin-top:6px;max-width:100%;overflow-wrap:break-word}

/* ------------------------------------------------------------- buttons ----- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;font-family:var(--font);
  border-radius:999px;padding:12px 22px;border:1px solid transparent;cursor:pointer;font-size:.95rem;
  transition:transform .12s ease,box-shadow .12s ease,background .15s;line-height:1.2;text-decoration:none}
.btn:active{transform:scale(.97)}
.btn-sm{padding:8px 15px;font-size:.85rem}
.btn-lg{padding:15px 30px;font-size:1.05rem}
.btn-block{width:100%}
.btn-primary{background:var(--grad-soft);color:#fff;box-shadow:0 10px 24px -10px rgba(14,165,233,.65)}
.btn-primary:hover{box-shadow:0 14px 30px -8px rgba(14,165,233,.8);opacity:1}
.btn-ghost{background:rgba(255,255,255,.7);color:var(--ink);border-color:var(--line)}
.btn-danger{background:linear-gradient(120deg,#ef4444,#dc2626);color:#fff}
.btn-soft{background:var(--ulik-sky-tint);color:var(--ind)}
.btn-outline{background:transparent;border-color:rgba(14,165,233,.4);color:var(--ind)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.icon-btn{border:0;background:none;cursor:pointer;padding:6px;border-radius:9px;color:var(--mut);display:inline-flex}
.icon-btn:hover{background:var(--ulik-sky-tint);color:var(--ind)}
.icon-btn.danger:hover{background:#FEE2E2;color:var(--err)}

/* --------------------------------------------------------------- top bar --- */
.site-top{position:relative;z-index:20}
.site-top-in{display:flex;align-items:center;gap:18px;padding:16px 20px;max-width:1140px;margin:0 auto}
.site-nav{display:flex;gap:4px;margin-left:auto}
.snk{padding:8px 13px;border-radius:999px;color:var(--ink-2);font-weight:600;font-size:.92rem}
.snk:hover{background:rgba(255,255,255,.75);opacity:1}
.snk.active{background:rgba(255,255,255,.8);color:var(--ind);box-shadow:0 2px 10px rgba(14,165,233,.12)}
.site-cta{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
@media(max-width:560px){
  .site-top-in{flex-wrap:wrap;gap:10px;padding:12px 16px}
  .site-nav{order:3;width:100%;margin-left:0;justify-content:center}
  .site-cta{margin-left:auto;gap:8px}
  .site-cta .btn{padding:8px 13px;font-size:.82rem}
}

/* -------------------------------------------------------------- footer ----- */
.site-foot{margin-top:70px;border-top:1px solid var(--line);background:rgba(255,255,255,.45);backdrop-filter:blur(10px)}
.foot-in{display:flex;flex-wrap:wrap;gap:26px;justify-content:space-between;padding:36px 20px 20px;max-width:1140px;margin:0 auto}
.foot-brand{max-width:340px}
.foot-links{display:grid;grid-template-columns:repeat(2,auto);gap:8px 26px;align-content:start}
.foot-links a{color:var(--mut);font-size:.93rem}
.foot-copy{color:var(--mut-2);font-size:.83rem;padding:14px 20px 26px;text-align:center}
.heart{color:var(--pink)}

/* ------------------------------------------------------------- hero/landing */
.hero{text-align:center;padding:64px 20px 40px;position:relative}
.hero-badge{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.72);border:1px solid var(--line);
  color:var(--ind);font-weight:700;font-size:.8rem;border-radius:999px;padding:7px 15px;margin-bottom:22px;backdrop-filter:blur(8px)}
.hero h1{font-size:clamp(2.1rem,6vw,3.6rem);font-weight:900;max-width:860px;margin:0 auto .5rem}
.hero h1 .grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero .lead{color:var(--mut);font-size:clamp(1rem,2.4vw,1.22rem);max-width:640px;margin:0 auto 34px}
.hero-cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.hero-note{color:var(--mut-2);font-size:.85rem;margin-top:18px}
.hero-stats{display:flex;gap:28px;justify-content:center;flex-wrap:wrap;margin-top:34px;color:var(--mut);font-size:.9rem}
.hero-stats b{color:var(--ink);font-size:1.15rem;display:block}

/* mock device preview */
.preview{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,280px));gap:22px;justify-content:center;padding:26px 16px 10px;max-width:1000px;margin:0 auto}
.mock-card{background:var(--glass);border:1px solid rgba(255,255,255,.8);border-radius:var(--radius-lg);
  padding:22px;box-shadow:var(--shadow);backdrop-filter:blur(18px) saturate(180%)}
.mock-top{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.mock-dot{width:44px;height:44px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800}
.mock-bar{height:12px;border-radius:8px;background:#E2E8F0;margin:8px 0}
.mock-bar.w70{width:70%}.mock-bar.w100{width:100%}.mock-bar.w85{width:85%}
.mock-link{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.85);border:1px solid var(--line);border-radius:14px;padding:11px 13px;margin-top:10px;box-shadow:0 2px 8px rgba(15,23,42,.04)}
.mock-link .ml-ic{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;flex:none}
.mock-link .ml-t{font-size:.82rem;font-weight:600;color:var(--ink-2);flex:1}
.mock-link .ml-p{font-size:.72rem;color:var(--ind);font-weight:800}

/* section scaffolding */
.sec{padding:58px 20px}
.sec-head{text-align:center;max-width:660px;margin:0 auto 42px}
.sec-head .kicker{color:var(--ind);font-weight:800;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}
.sec-head p{color:var(--mut)}
.grid{display:grid;gap:20px}
.grid-3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.grid-4{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.feat{background:var(--glass);border:1px solid rgba(255,255,255,.75);border-radius:var(--radius-lg);
  padding:26px;backdrop-filter:blur(18px) saturate(180%);box-shadow:var(--shadow);transition:transform .18s ease}
.feat:hover{transform:translateY(-4px)}
.feat-ic{width:52px;height:52px;border-radius:16px;background:var(--grad-soft);color:#fff;display:flex;align-items:center;justify-content:center;margin-bottom:16px;box-shadow:0 10px 20px -8px rgba(14,165,233,.6)}
.feat h3{margin-bottom:6px}
.feat p{color:var(--mut);font-size:.93rem;margin:0}

/* how-it-works */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px;counter-reset:step}
.step{background:var(--glass);border:1px solid rgba(255,255,255,.75);border-radius:var(--radius-lg);padding:24px 20px;position:relative;backdrop-filter:blur(18px)}
.step b{display:block;margin-top:14px}
.step p{color:var(--mut);font-size:.88rem;margin:0}
.step .n{width:40px;height:40px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;box-shadow:0 8px 16px -6px rgba(14,165,233,.55)}
.step.demo-tag{background:linear-gradient(150deg,rgba(56,189,248,.10),rgba(56,189,248,.12));border-style:dashed;border-color:rgba(14,165,233,.4);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px}
.step.demo-tag b{margin-top:0}

/* cta band */
.cta-band{max-width:760px;margin:10px auto 0;background:var(--grad);border-radius:28px;color:#fff;text-align:center;padding:46px 24px;box-shadow:var(--shadow-lg);position:relative;overflow:hidden}
.cta-band:before{content:'';position:absolute;inset:0;background:radial-gradient(300px 160px at 15% 0%,rgba(255,255,255,.25),transparent 60%),radial-gradient(260px 160px at 90% 100%,rgba(255,255,255,.2),transparent 60%)}
.cta-band h2,.cta-band p{position:relative;color:#fff}
.cta-band .btn{background:#fff;color:var(--ind);position:relative}

/* ------------------------------------------------------------------ cards */
.card{background:var(--glass);border:1px solid rgba(255,255,255,.8);border-radius:var(--radius-lg);box-shadow:var(--shadow);backdrop-filter:blur(18px) saturate(180%)}
.pad-lg{padding:clamp(20px,4vw,36px)}
.prose{max-width:760px}
.prose h1{margin-bottom:14px}
.prose h2{margin-top:26px}

/* --------------------------------------------------------- auth pages ----- */
.label-hint{margin:2px 0 6px;padding:0;list-style:none;color:var(--mut-2);font-size:.75rem}
.input-prefix{display:flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.input-prefix:focus-within{outline:2px solid rgba(14,165,233,.3)}
.input-prefix span{color:var(--mut);padding:0 0 0 14px;font-weight:700}
.input-prefix input{border:0 !important;outline:none !important;flex:1}

/* ------------------------------------------------------------------ forms */
.form-stack{display:flex;flex-direction:column;gap:15px}
label{display:block;font-weight:600;font-size:.86rem;color:var(--ink-2)}
input[type=text],input[type=email],input[type=password],input[type=url],input[type=number],input[type=tel],input[type=date],input[type=search],select,textarea{
  width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;font:inherit;color:var(--ink);
  background:#fff;margin-top:6px;transition:border .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.16)}
textarea{min-height:110px;resize:vertical}
input[type=checkbox],input[type=radio]{accent-color:var(--ind);width:17px;height:17px;margin:0 6px 0 0;vertical-align:-3px}
.form-errors{background:#FEF2F2;border:1px solid #fecaca;color:#991b1b;border-radius:12px;padding:12px 16px;font-size:.9rem;margin-bottom:14px}
.form-errors ul{margin:6px 0 0;padding-left:18px}
.check-line{display:flex;gap:10px;align-items:flex-start;font-weight:500;color:var(--ink-2);font-size:.86rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:6px}
@media(max-width:560px){.form-row{grid-template-columns:1fr}}

/* ------------------------------------------------------- creator page ----- */
/* Halaman creator: latarnya selalu dari tema pilihan kreator (inline), jadi
   di sini hanya transparan supaya tidak menimpa tema apa pun. */
.pg-creator{background:transparent}
.creator-shell{min-height:100vh}
.creator-head{text-align:center;padding:44px 20px 10px;max-width:620px;margin:0 auto}
.avatar-ring{width:118px;height:118px;margin:0 auto 14px;padding:4px;border-radius:50%;background:conic-gradient(from 210deg,var(--ulik-sky-main),var(--ulik-sky-light),var(--ulik-sky-light),var(--ulik-sky-main));box-shadow:0 12px 30px -8px rgba(56,189,248,.5)}
.avatar-ring .avatar{width:100%;height:100%;border-radius:50%;object-fit:cover;background:#fff}
.creator-head h1{margin:0;font-size:1.5rem}
.creator-handle{color:var(--mut);font-weight:600;font-size:.92rem}
.creator-bio{color:var(--ink-2);white-space:pre-line;margin-top:10px;font-size:.95rem}
.creator-loc{margin-top:8px;font-size:.85rem;color:var(--mut)}
.socials{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:20px auto 6px;max-width:620px;padding:0 16px}
.so-chip{width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.85);border:1px solid rgba(255,255,255,.9);display:flex;align-items:center;justify-content:center;color:var(--ind);box-shadow:0 6px 16px -6px rgba(15,23,42,.18);transition:transform .15s}
.so-chip:hover{transform:translateY(-3px) scale(1.05);opacity:1}
.so-chip svg{width:20px;height:20px}
.creator-body{max-width:620px;margin:0 auto;padding:14px 16px 70px}
.linkstack{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.btnlink{display:flex;align-items:center;gap:14px;background:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.95);
  border-radius:16px;padding:14px 16px;color:var(--ink);font-weight:700;box-shadow:0 8px 22px -10px rgba(14,165,233,.25);
  backdrop-filter:blur(10px);transition:transform .14s ease,box-shadow .14s}
.btnlink:hover{transform:translateY(-2px);box-shadow:0 14px 30px -10px rgba(14,165,233,.35);opacity:1}
.btnlink .bl-ic{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff;flex:none}
.btnlink svg{width:22px;height:22px}
.btnlink .bl-arrow{margin-left:auto;color:var(--mut-2);flex:none}
.bl-title{font-size:.98rem}
.bl-sub{font-size:.76rem;color:var(--mut);font-weight:500;overflow-wrap:anywhere}
/* v1.40: judul & keterangan kartu link SELALU bertumpuk (dulu menempel sebaris). */
.btnlink .bl-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.btnlink .bl-title,.btnlink .bl-sub{display:block}
.sec-div{display:flex;align-items:center;gap:14px;margin:30px 2px 14px;color:var(--ink-2);font-weight:800;font-size:.85rem;letter-spacing:.04em;text-transform:uppercase}
.sec-div:before,.sec-div:after{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(15,23,42,.15));}
.sec-div:after{background:linear-gradient(90deg,rgba(15,23,42,.15),transparent)}
.products{display:flex;flex-direction:column;gap:14px}
.pcard{display:flex;gap:14px;background:rgba(255,255,255,.94);border:1px solid rgba(255,255,255,.98);border-radius:18px;
  padding:14px;box-shadow:0 10px 28px -12px rgba(14,165,233,.28);align-items:center}
.pthumb{width:76px;height:76px;border-radius:14px;object-fit:cover;flex:none;background:var(--ulik-sky-tint)}
.pthumb-ph{display:flex;align-items:center;justify-content:center;color:#fff;background:var(--grad-soft);font-weight:800;font-size:.7rem;letter-spacing:.05em}
.pinfo{flex:1;min-width:0}
.pinfo h3{font-size:.98rem;margin:0 0 2px}
.pinfo .pdesc{color:var(--mut);font-size:.82rem;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pmeta{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}
.price{font-weight:900;color:var(--ink)}
.buy{background:var(--grad-soft);color:#fff;border:0;border-radius:999px;padding:9px 18px;font-weight:800;font-size:.84rem;cursor:pointer;box-shadow:0 8px 18px -7px rgba(14,165,233,.6);font-family:var(--font);text-decoration:none}
.ptype-tag{display:inline-flex;align-items:center;gap:6px;color:var(--mut);font-size:.72rem;font-weight:600;margin-bottom:4px}
.category-pills{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:22px}
.cat-pill{background:rgba(255,255,255,.8);border:1px solid var(--line);border-radius:999px;padding:6px 15px;font-size:.8rem;font-weight:700;color:var(--ink-2)}
.creator-foot{text-align:center;padding:26px;color:var(--mut-2);font-size:.83rem}
.empty-owner-note{background:var(--ulik-sky-tint);border:1px dashed rgba(14,165,233,.4);color:var(--ind);border-radius:14px;padding:14px;text-align:center;font-size:.9rem}

/* ------------------------------------------------------ product/checkout -- */
.store-head{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.checkout-card{max-width:640px;margin:0 auto}
.buyer-summary{display:flex;gap:14px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:18px}
.pay-channel{display:flex;align-items:center;gap:12px;background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:13px 15px;cursor:pointer;transition:border .12s,box-shadow .12s;margin-bottom:10px}
.pay-channel:hover{border-color:rgba(14,165,233,.5)}
.pay-channel input{margin:0;flex:none}
.pay-channel.selected{border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.pc-name{font-weight:700;font-size:.93rem;flex:1}
.pc-group{color:var(--mut);font-size:.76rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.pc-fee{font-size:.78rem;color:var(--mut)}
/* Kotak metode bayar berlogo (v1.39): grup "Bayar instan" / "Lainnya" / "Mode uji".
   Radio tetap ada (bisa dipilih keyboard) tetapi disembunyikan; kotak terpilih ditandai
   lewat :has(input:checked) dan kelas .selected sebagai cadangan. */
.pm-grp{padding:12px 0 4px;border-top:1px solid var(--ed-line,var(--line))}
.pm-grp:first-of-type{border-top:0;padding-top:4px}
.pm-grp-h{display:block;font-size:.8rem;font-weight:700;color:var(--ed-mut,var(--mut));margin-bottom:9px}
.pm-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pm-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:80px;padding:14px 8px 10px;background:#fff;border:1.5px solid var(--ed-line,var(--line));border-radius:14px;cursor:pointer;text-align:center;transition:border .12s,box-shadow .12s}
.pm-tile:hover{border-color:rgba(14,165,233,.5)}
.pm-tile input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.pm-tile:has(input:focus-visible){outline:2px solid var(--ind);outline-offset:2px}
.pm-tile.selected,.pm-tile:has(input:checked){border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.14);background:var(--ed-surface-2,#F5FAFF)}
.pm-tile.selected::after,.pm-tile:has(input:checked)::after{content:"✓";position:absolute;top:7px;right:8px;width:18px;height:18px;border-radius:50%;background:var(--ind);color:#fff;font-size:.68rem;font-weight:900;display:grid;place-items:center}
.pm-logo{height:30px;max-width:96px;object-fit:contain}
.pm-ph{width:34px;height:34px;border-radius:9px;background:var(--ulik-sky-tint,#E0F2FE);display:grid;place-items:center;color:var(--ind)}
.pm-name{font-weight:700;font-size:.84rem;color:var(--ed-ink,var(--ink));line-height:1.25}
.pm-note{font-size:.7rem;color:var(--ed-mut,var(--mut));line-height:1.3}
.pm-tile.wide{grid-column:1/-1;flex-direction:row;justify-content:flex-start;gap:14px;text-align:left;padding:16px 36px 12px 14px}
.pm-tile.wide .pm-logo{height:34px;max-width:80px;flex:none}
.pm-tile.wide .pm-txt{display:flex;flex-direction:column;gap:2px}
.pm-badge{position:absolute;top:-9px;left:12px;background:var(--ind);color:#fff;font-size:.62rem;font-weight:800;letter-spacing:.05em;padding:3px 8px;border-radius:999px}
.pm-tile.pm-sim{background:#FFFBEB;border-color:#FDE68A}
.pm-tile.pm-sim .pm-ph{background:#FEF3C7;color:#92400E}
@media(max-width:360px){.pm-tiles{grid-template-columns:1fr}}
/* Checkout SATU halaman (v1.39): kiri produk + data pembeli, kanan rincian + metode + bayar. */
.checkout-wrap.ck-wide,body.pg-checkout .checkout-wrap.ck-wide{max-width:980px}
.ck-back{display:inline-flex;align-items:center;gap:6px;color:var(--ed-mut,var(--mut));font-size:.88rem;margin-bottom:8px}
.ck-title{font-size:clamp(1.8rem,4vw,2.4rem);margin:0 0 16px}
.ck-flash{position:static;width:auto;transform:none;margin:0 0 14px}
.ck-grid{display:grid;gap:16px}
@media(min-width:880px){.ck-grid{grid-template-columns:1.1fr 1fr;align-items:start}.ck-side{position:sticky;top:20px}}
.ck-card{padding:20px}
.ck-main .ck-card + .ck-card{margin-top:16px}
.ck-h{font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ed-mut-2,var(--mut-2));margin:0 0 12px}
.ck-prod{display:flex;gap:14px;align-items:center}
.ck-thumb{width:64px;height:64px;border-radius:13px;object-fit:cover;flex:none}
.ck-prod-tx{flex:1;min-width:0}
.ck-prod-tx b{display:block;line-height:1.35}
.ck-prod .price{white-space:nowrap}
.ck-row{display:flex;justify-content:space-between;padding:7px 0;color:var(--ed-ink-2,var(--ink-2))}
.ck-free{color:var(--ok)}
.ck-total{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--ed-line,var(--line));margin:6px 0 4px;padding-top:12px;font-weight:800}
.ck-total .price{font-size:1.3rem}
.ck-side .form-errors,.ck-side .empty{margin-top:14px}
/* tombol ringkas metode terpilih (hanya bila JavaScript aktif) */
.ck-method{display:flex;align-items:center;gap:12px;width:100%;margin:14px 0 0;background:var(--ed-surface-2,#F5FAFF);border:1.5px solid var(--ed-acc-line,rgba(14,165,233,.2));border-radius:14px;padding:12px 14px;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:border .12s,box-shadow .12s}
.ck-method:hover,.ck-method:focus-visible{border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.ck-method .lg{width:64px;height:40px;border-radius:10px;background:#fff;border:1px solid var(--ed-line,var(--line));display:grid;place-items:center;flex:none;overflow:hidden}
.ck-method .lg .pm-logo{height:26px;max-width:56px}
.ck-method .tx{flex:1;min-width:0}
.ck-method .tx b{display:block}
.ck-method .tx span{font-size:.8rem;color:var(--ed-mut,var(--mut))}
.ck-method .chg{font-size:.82rem;font-weight:700;color:var(--ind);white-space:nowrap}
/* daftar metode: tanpa JS tampil biasa; dengan JS (.is-modal) jadi jendela / bottom sheet */
.ck-ov{margin-top:14px}
.ck-ov:not(.is-modal) .ck-mh,.ck-ov:not(.is-modal) .ck-confirm{display:none}
.ck-ov.is-modal{position:fixed;inset:0;margin:0;background:rgba(15,23,42,.45);z-index:200;display:none;align-items:center;justify-content:center;padding:16px}
.ck-ov.is-modal.open{display:flex}
.ck-ov.is-modal .ck-modal{background:var(--ed-surface,#fff);border-radius:20px;width:100%;max-width:460px;max-height:88vh;overflow:auto;box-shadow:0 30px 80px -20px rgba(15,23,42,.5);padding:20px}
@media(max-width:600px){.ck-ov.is-modal{align-items:flex-end;padding:0}.ck-ov.is-modal .ck-modal{max-width:none;border-radius:20px 20px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom))}}
.ck-mh{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.ck-mh h2,.skin-ed .ck-mh h2{font-family:var(--ed-serif,inherit);font-weight:600;font-size:1.35rem;line-height:1.2;margin:0}
.ck-x{border:0;background:var(--ed-surface-2,#F5FAFF);width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:1rem;color:var(--ed-mut,var(--mut))}
.ck-confirm{margin-top:14px}
.ck-secure{display:flex;gap:10px;align-items:center;margin-top:14px;padding:10px 12px;border-radius:12px;background:var(--ed-acc-soft,var(--ulik-sky-tint));font-size:.8rem;color:var(--ed-ink-2,var(--ink-2))}
.ck-secure .ic{color:var(--ind);flex:none}
.ck-agree{margin:14px 0}
/* Nomor HP wajib untuk e-wallet (v1.39.1) */
.ph-state{font-weight:500;color:var(--ed-mut,var(--mut))}
.ph-hint{display:block;margin-top:5px;font-size:.78rem;font-weight:600;line-height:1.4;color:var(--info,#0284C7)}
.pm-phone{margin-top:14px;padding:12px 14px;border-radius:14px;background:var(--ed-acc-soft,var(--ulik-sky-tint));border:1px solid var(--ed-acc-line,rgba(14,165,233,.2))}
.pm-phone label{display:block;font-weight:700;font-size:.9rem}
.pm-phone input{margin-top:6px}
.steps-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;margin-top:16px}
.steps-box ol{margin:10px 0 0;padding-left:22px}
.steps-box li{margin:7px 0;color:var(--ink-2);font-size:.92rem}
.paycode-big{background:var(--ulik-sky-tint);border:1.5px dashed rgba(14,165,233,.5);border-radius:14px;padding:14px;text-align:center;font-weight:900;font-size:1.4rem;letter-spacing:.12em;color:var(--ind);margin:12px 0}
.status-hero{text-align:center;padding:34px 18px}
.status-ic{width:86px;height:86px;border-radius:50%;margin:0 auto 16px;display:flex;align-items:center;justify-content:center}
.status-ic.paid{background:#D1FAE5;color:var(--ok)}
.status-ic.pending{background:#FEF3C7;color:var(--warn)}
.status-ic.failed,.status-ic.expired{background:#FEE2E2;color:var(--err)}
.status-ic svg{width:42px;height:42px}
.dl-row{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px}
.dl-row .dl-name{flex:1;font-weight:600;font-size:.93rem;word-break:break-all}
.dl-row .dl-size{color:var(--mut);font-size:.78rem}
.delivery-content{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;white-space:pre-wrap;font-size:.95rem;color:var(--ink-2);margin-bottom:16px}

/* ------------------------------------------------------------------ app --- */
.app-shell{display:flex;min-height:100vh}
.app-side{width:252px;flex:none;background:linear-gradient(175deg,#075985 0%,#0369A1 60%,#0C4A6E 100%);color:var(--ulik-sky-tint);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}
.side-head{padding:20px 20px 14px;border-bottom:1px solid rgba(255,255,255,.12)}
.side-tag{display:block;margin-top:2px;font-size:.7rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ulik-sky-border)}
.side-nav{flex:1;padding:14px 10px;display:flex;flex-direction:column;gap:2px}
.sn{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:12px;color:var(--ulik-sky-border);font-weight:600;font-size:.9rem}
.sn:hover{background:rgba(255,255,255,.09);color:#fff;opacity:1}
.sn.active{background:rgba(255,255,255,.16);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)}
.side-foot{border-top:1px solid rgba(255,255,255,.12);padding:12px 10px;display:flex;flex-direction:column;gap:2px}
.app-main{flex:1;min-width:0;display:flex;flex-direction:column}
.app-top{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:14px;padding:14px 22px;
  background:rgba(240,249,255,.82);backdrop-filter:blur(14px) saturate(180%);border-bottom:1px solid var(--line)}
.app-top-title{font-weight:800;letter-spacing:-.01em}
.app-top-user{margin-left:auto;display:flex;align-items:center;gap:10px}
.atu-name{font-weight:600;font-size:.9rem}
.drawer-btn{display:none;flex-direction:column;gap:4px;cursor:pointer;padding:6px}
.drawer-btn span{width:22px;height:2.4px;border-radius:3px;background:var(--ink)}
.app-content{padding:22px;max-width:1200px;width:100%;margin:0 auto}
.side-head{position:relative}
.side-close{display:none}
.drawer-backdrop{display:none}
@media(max-width:900px){
  .app-side{position:fixed;left:0;top:0;bottom:0;z-index:100;transform:translateX(-105%);transition:transform .22s ease;box-shadow:0 0 60px rgba(15,23,42,.3)}
  .drawer-toggle:checked ~ .app-side{transform:none}
  .drawer-btn{display:inline-flex}
  .app-side{width:280px}
  /* backdrop: tap area outside the sidebar to close the drawer */
  .drawer-backdrop{display:block;position:fixed;inset:0;background:rgba(15,10,40,.55);backdrop-filter:blur(2px);
    z-index:95;opacity:0;pointer-events:none;transition:opacity .18s ease;cursor:pointer}
  .drawer-toggle:checked ~ .drawer-backdrop{opacity:1;pointer-events:auto}
  /* close (x) button inside the drawer header */
  .side-close{display:inline-flex;position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:10px;
    align-items:center;justify-content:center;color:#E0F2FE;cursor:pointer;background:rgba(255,255,255,.08)}
  .side-close svg{width:16px;height:16px}
  .side-close:hover{background:rgba(255,255,255,.18);color:#fff}
}
@media(min-width:901px){
  .drawer-toggle{display:none !important}
  .side-close,.drawer-backdrop{display:none !important}
}

/* app content pieces */
.grid-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:22px}
.stat-card{background:var(--glass);border:1px solid rgba(255,255,255,.8);border-radius:18px;padding:18px;display:flex;gap:14px;align-items:center;box-shadow:0 8px 22px -14px rgba(14,165,233,.35);backdrop-filter:blur(16px)}
.stat-ic{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff;flex:none;background:var(--grad-soft)}
.stat-val{font-size:1.28rem;font-weight:900;letter-spacing:-.02em}
.stat-label{color:var(--mut);font-size:.8rem;font-weight:600}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:6px 0 16px;text-align:left;max-width:none}
.sec-title{font-size:1.15rem;margin:0}
.sec-sub{margin:2px 0 0;font-size:.85rem}
.panel{background:var(--glass);border:1px solid rgba(255,255,255,.8);border-radius:18px;padding:clamp(16px,3vw,22px);box-shadow:0 8px 26px -16px rgba(14,165,233,.4);margin-bottom:22px;backdrop-filter:blur(16px) saturate(180%);overflow:hidden}
.panel .tblwrap{margin:14px -22px -22px;overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:.89rem}
.tbl th{text-align:left;color:var(--mut);font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;padding:10px 16px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:12px 16px;border-bottom:1px solid rgba(15,23,42,.06);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tr:hover td{background:rgba(14,165,233,.03)}
.badge{display:inline-block;padding:3px 11px;border-radius:999px;font-size:.74rem;font-weight:800;white-space:nowrap}
.badge-ok{background:#D1FAE5;color:#065F46}
.badge-warn{background:#FEF3C7;color:#92400E}
.badge-err{background:#FEE2E2;color:#991B1B}
.badge-info{background:#E0F2FE;color:#075985}
.badge-muted{background:#F1F5F9;color:var(--ulik-slate-muted)}
.empty{text-align:center;color:var(--mut);padding:44px 16px}
.empty-ic{display:flex;justify-content:center;color:#94A3B8;margin-bottom:10px}
.quick-actions{display:flex;gap:10px;flex-wrap:wrap}
/* product grid in dash */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px}
.pgrid-card{background:var(--glass);border:1px solid rgba(255,255,255,.85);border-radius:18px;overflow:hidden;box-shadow:0 8px 22px -16px rgba(14,165,233,.45);display:flex;flex-direction:column}
.pgrid-thumb{height:118px;object-fit:cover;width:100%;background:var(--ulik-sky-tint)}
.pgrid-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;flex:1}
.pgrid-body h3{margin:0;font-size:.98rem}
.pgrid-actions{display:flex;gap:8px;margin-top:auto;flex-wrap:wrap}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.toolbar .spacer{flex:1}
.filter-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.ftab{padding:7px 15px;border-radius:999px;background:rgba(255,255,255,.6);color:var(--mut);font-size:.84rem;font-weight:700}
.ftab.active{background:var(--ink);color:#fff}
.mini-avatars{display:flex;gap:-8px}
.sort-ctrl{display:flex;gap:6px}
.sort-ctrl form{display:inline}
.cat-chip{font-size:.72rem;background:var(--ulik-sky-tint);color:var(--ind);border-radius:999px;padding:2px 10px;font-weight:700}

/* errors */
.err-wrap{display:flex;align-items:center;justify-content:center;min-height:72vh}
.err-card{text-align:center;background:var(--glass);border:1px solid rgba(255,255,255,.85);border-radius:24px;padding:48px 30px;max-width:460px;box-shadow:var(--shadow-lg)}
.err-code{font-size:4rem;font-weight:900;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* tables responsive on mobile */
@media(max-width:720px){
  .tbl thead{display:none}
  .tbl,.tbl tbody,.tbl tr,.tbl td{display:block;width:100%}
  .tbl tr{border-bottom:1px solid var(--line);padding:8px 4px}
  .tbl td{border:0;padding:5px 14px}
  .tbl td:before{content:attr(data-label);display:block;font-size:.68rem;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;font-weight:700}
  .card-td{display:none !important}
}
.mobile-hide{display:inline}
@media(max-width:720px){.mobile-hide{display:none}}

/* misc */
.flex{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.rowline{display:flex;align-items:center;gap:10px}
.divider{height:1px;background:var(--line);margin:18px 0}
.thumb-64{width:64px;height:64px;object-fit:cover;border-radius:12px;background:var(--ulik-sky-tint)}
.avatar{object-fit:cover;border-radius:50%;display:inline-block}
.avatar-ph{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:1.4rem;border-radius:50%}
.pos-rel{position:relative}
.copy-field{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 8px 8px 14px}
.copy-field input{border:0 !important;outline:none;margin:0;padding:4px 0;background:transparent}
.copy-field button{border:0;border-radius:8px;background:var(--ulik-sky-tint);color:var(--ind);font-weight:700;padding:8px 14px;cursor:pointer;font-family:var(--font)}
.mini-note{font-size:.78rem;color:var(--mut-2)}
.err-ic{color:var(--err)}
h1 .subtitle,.muted-lg{font-weight:500}
.hero-emoji{font-size:2rem}

/* ==========================================================================
   Creator page themes + link manager polish (ULik.me)
   ========================================================================== */
/* --- token tema creator ---------------------------------------------------
   Semua token ditulis INLINE di .creator-shell oleh Themes::shellStyle(), jadi
   halaman creator tidak lagi bergantung pada blok CSS per-tema di file ini.
   Yang tersisa di sini hanya NILAI CADANGAN (kalau JS/atribut style hilang) dan
   GAYA STRUKTURAL yang dipakai bersama semua tema. */
.creator-shell{
  --c-page:linear-gradient(180deg,#FAF8FF 0%,#F1EDFF 55%,#F7F5FF 100%);
  --c-card:rgba(255,255,255,.92); --c-card-border:rgba(255,255,255,.98);
  --c-ink:#1F1B3A; --c-ink2:#3A3560; --c-sub:#635F82;
  --c-line:rgba(31,27,58,.10);
  --c-acc:linear-gradient(120deg,#4F46E5 0%,#8B5CF6 100%); --c-acc-ink:#fff;
  --c-ring:conic-gradient(from 210deg,#4F46E5,#A855F7,#EC4899,#4F46E5);
  --c-pill-bg:rgba(255,255,255,.85); --c-pill-ink:#3A3560;
  --c-glow:rgba(79,70,229,.28);
  --c-rad:16px; --c-rad-sm:13px; --c-head-font:var(--font);
  color:var(--c-ink);min-height:100vh;
}
/* kartu link: radius & bentuk dari token tema */
.creator-shell .btnlink{border-radius:var(--c-btn-rad,var(--c-rad))}
.creator-shell .bl-ic{border-radius:var(--c-rad-sm)}
.creator-shell .pcard{border-radius:var(--c-btn-rad,calc(var(--c-rad) + 2px))}
/* bentuk "solid": kartu ber-border tegas + bayangan keras (neo brutal) */
.creator-shell[data-theme="neo"] .btnlink,
.creator-shell[data-theme="neo"] .pcard,
.creator-shell[data-theme="neo"] .pb-text{
  box-shadow:4px 4px 0 var(--c-ink);border-width:2px}
.creator-shell[data-theme="neo"] .btnlink:hover,
.creator-shell[data-theme="neo"] .pcard-link:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--c-ink)}
.creator-shell[data-theme="neo"] .avatar-ring{border:2px solid var(--c-ink);box-shadow:4px 4px 0 var(--c-ink);padding:4px}
.creator-shell[data-theme="neo"] .linkstack{border-width:2px;box-shadow:4px 4px 0 var(--c-ink)}
/* bentuk "outline": kartu rata, hanya garis tipis
   `.pb-text` IKUT di sini karena blok Text sekarang berkartu (lihat aturan dasarnya) —
   tanpa ini kelima tema rata akan memberi blok teks sebuah bayangan, padahal ciri
   khas tema-tema itu justru TANPA bayangan. */
.creator-shell[data-theme="mono"] .btnlink,
.creator-shell[data-theme="mono"] .pcard,
.creator-shell[data-theme="mono"] .pb-text,
.creator-shell[data-theme="snow"] .btnlink,
.creator-shell[data-theme="snow"] .pcard,
.creator-shell[data-theme="snow"] .pb-text,
.creator-shell[data-theme="ink"] .btnlink,
.creator-shell[data-theme="ink"] .pcard,
.creator-shell[data-theme="ink"] .pb-text,
.creator-shell[data-theme="vapor"] .btnlink,
.creator-shell[data-theme="vapor"] .pcard,
.creator-shell[data-theme="vapor"] .pb-text,
.creator-shell[data-theme="terminal"] .btnlink,
.creator-shell[data-theme="terminal"] .pcard,
.creator-shell[data-theme="terminal"] .pb-text{box-shadow:none}
/* nama creator mengikuti token font tema (serif/sans/mono) */
.creator-shell .creator-head h1{font-family:var(--c-head-font)}
.creator-shell .creator-foot,.creator-shell .creator-bio{font-family:var(--font)}

/* --- make the creator page components theme-aware ----------------------- */
.creator-shell .creator-handle,.creator-shell .creator-loc{color:var(--c-sub)}
.creator-shell .creator-bio{color:var(--c-ink2)}
.creator-shell .avatar-ring{background:var(--c-ring)}
.creator-shell .btnlink{background:var(--c-btn-bg,var(--c-card));
  border-width:var(--c-btn-bw,1px);border-style:solid;
  border-color:var(--c-btn-border,var(--c-card-border));color:var(--c-btn-ink,var(--c-ink));
  box-shadow:var(--c-btn-shadow,0 8px 22px -10px var(--c-glow))}
.creator-shell .btnlink:hover{box-shadow:var(--c-btn-shadow-h,0 14px 30px -10px var(--c-glow))}
.creator-shell .bl-sub{color:var(--c-sub)}
.creator-shell .bl-arrow{color:var(--c-sub)}
.creator-shell .pcard{background:var(--c-card);border:1px solid var(--c-card-border);box-shadow:0 10px 28px -12px var(--c-glow)}
.creator-shell .pinfo .pdesc{color:var(--c-sub)}
.creator-shell .price{color:var(--c-ink)}
.creator-shell .pthumb-ph,.creator-shell .buy{background:var(--c-acc);color:var(--c-acc-ink)}
.creator-shell .sec-div{color:var(--c-ink2)}
.creator-shell .sec-div:before{background:linear-gradient(90deg,transparent,var(--c-line))}
.creator-shell .sec-div:after{background:linear-gradient(90deg,var(--c-line),transparent)}
.creator-shell .cat-pill{background:var(--c-pill-bg);border:1px solid var(--c-line);color:var(--c-pill-ink)}
.creator-shell .creator-foot{color:var(--c-sub)}
.creator-shell .mini-note,.creator-shell .muted{color:var(--c-sub)}
.creator-shell .socials{color:inherit}

/* ==========================================================================
   APPEARANCE SYSTEM (Design) — Fase 2
   --------------------------------------------------------------------------
   SEMUA nilai di bawah ini berasal dari token `--c-*` yang ditulis INLINE di
   `.creator-shell` oleh `Core/Appearance.php` (preset tema + override user).
   Tidak ada satu pun aturan di sini yang mengubah tampilan bila creator belum
   mengatur apa pun: setiap var punya fallback = perilaku lama, dan perilaku yang
   butuh markup/atribut hanya menyala lewat `data-*` yang juga hanya ditulis bila
   fiturnya benar-benar dipakai.

   Blok ini SENGAJA diletakkan SEBELUM CSS preview HP (di bawah) supaya aturan
   preview yang lebih spesifik tetap menang tanpa perlu menduplikasi nilai.
   ========================================================================== */
/* --- text: skala. 1 = ukuran asli, jadi calc(... × 1) == nilai lama --------- */
.creator-shell{--c-text-scale:1}
.creator-shell .creator-head h1{font-size:calc(1.5rem * var(--c-text-scale))}
.creator-shell .creator-handle{font-size:calc(.92rem * var(--c-text-scale))}
.creator-shell .creator-loc{font-size:calc(.85rem * var(--c-text-scale))}
.creator-shell .creator-bio{font-size:calc(.95rem * var(--c-text-scale))}
.creator-shell .bl-title{font-size:calc(.98rem * var(--c-text-scale))}
.creator-shell .bl-sub{font-size:calc(.76rem * var(--c-text-scale))}
.creator-shell .ptype-tag{font-size:calc(.72rem * var(--c-text-scale))}
.creator-shell .pinfo h3{font-size:calc(.98rem * var(--c-text-scale))}
.creator-shell .pinfo .pdesc{font-size:calc(.82rem * var(--c-text-scale))}
.creator-shell .price{font-size:calc(1rem * var(--c-text-scale))}
.creator-shell .pb-text{font-size:calc(1rem * var(--c-text-scale));
  /* Blok Text = KARTU, memakai token tema yang SAMA dengan kartu lain
     (`.pcard`, `.pbimg`) — bukan gaya khusus halaman publik. Sebelum perbaikan ini
     container-nya tidak pernah ada, padahal aturan tema `neo` sudah lama mengasumsikan
     `.pb-text` berkartu (`border-width:2px` + bayangan keras), dan PRATINJAU HP memberi
     kartu putih hardcoded (`#fff` + `var(--line)`) → blok teks tampak BEDA antara
     preview dan halaman publik. Sekarang keduanya memakai aturan ini. */
  background:var(--c-card);border:1px solid var(--c-card-border);
  border-radius:var(--c-rad);box-shadow:0 10px 28px -12px var(--c-glow);
  color:var(--c-ink2);padding:14px 16px;overflow-wrap:anywhere}
/* --- blok TEXT berformat (Fase T1) ---------------------------------------
   Styling HANYA untuk isi blok Text (kelas .pb-text, dipakai halaman publik DAN
   pratinjau HP). Ditambahkan supaya daftar & paragraf hasil editor tampil rapi;
   tidak ada aturan global yang berubah. */
.creator-shell .pb-text p{margin:0 0 .55em}
.creator-shell .pb-text p:last-child{margin-bottom:0}
.creator-shell .pb-text ul,.creator-shell .pb-text ol{margin:.35em 0 .55em;padding-left:1.35em}
.creator-shell .pb-text ul:last-child,.creator-shell .pb-text ol:last-child{margin-bottom:0}
.creator-shell .pb-text li{margin:.12em 0}
.creator-shell .pb-text li::marker{color:var(--c-acc-solid,var(--c-acc))}
.creator-shell .pb-text s,.creator-shell .pb-text strike{text-decoration:line-through}
.creator-shell .pb-text u{text-decoration:underline}
.creator-shell .pb-text span[style]{overflow-wrap:anywhere}
.creator-shell .pb-text ul ul,.creator-shell .pb-text ol ol{margin-bottom:0}
/* --- blok LINK bergambar (opsional) --------------------------------------
   Hanya LAYOUT + gambar: seluruh warna/radius/bayangan tetap dari token tema dan
   dari aturan `.btnlink` yang sudah ada (termasuk override Buttons), jadi tidak ada
   sistem desain baru. Link tanpa gambar TIDAK memakai kelas ini sama sekali. */
.creator-shell .btnlink.bl-hasimg{align-items:center;padding:10px}
.creator-shell .bl-img{width:76px;height:76px;flex:none;object-fit:cover;display:block;
  border-radius:var(--c-rad-sm);background:var(--c-pill-bg)}
.creator-shell .bl-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.creator-shell .bl-info .bl-title{font-size:calc(.98rem * var(--c-text-scale))}
.creator-shell .bl-info .bl-sub{font-size:calc(.76rem * var(--c-text-scale))}
/* tanda "gambar" pada baris blok di My Page */
.block-pic{display:inline-flex;align-items:center;gap:4px;font-size:.68rem;font-weight:700;
  color:var(--ind);background:var(--ulik-sky-tint);border-radius:999px;padding:1px 8px;margin-top:2px;width:max-content}
.block-pic .ic{width:12px;height:12px}
/* --- blok GAMBAR (tipe `image`) ------------------------------------------
   Memakai token tema yang sama (.creator-shell) supaya ikut tema creator —
   bukan sistem desain baru. Gambar WAJIB responsif: lebar 100% + tinggi auto +
   wadah `overflow:hidden`, sehingga tidak pernah menimbulkan gulir horizontal
   walau berkasnya sangat lebar/panjang. */
.creator-shell .pbimg{display:block;background:var(--c-card);border:1px solid var(--c-card-border);
  border-radius:var(--c-rad);overflow:hidden;box-shadow:0 10px 28px -12px var(--c-glow);color:var(--c-ink);
  text-decoration:none;max-width:100%}
.creator-shell a.pbimg{transition:transform .14s ease,box-shadow .14s}
.creator-shell a.pbimg:hover{transform:translateY(-2px);box-shadow:0 16px 34px -12px var(--c-glow);opacity:1}
.creator-shell .pbimg-img{display:block;width:100%;height:auto;max-width:100%}
.creator-shell .pbimg-cap{display:block;padding:10px 14px;font-size:calc(.86rem * var(--c-text-scale));
  color:var(--c-sub);line-height:1.4;word-break:break-word}
.creator-shell a.pbimg .pbimg-cap{color:var(--c-ink)}
.creator-shell .creator-foot{font-size:calc(.83rem * var(--c-text-scale))}
/* font isi hanya bila creator memilih sendiri (data-font) */
.creator-shell[data-font="1"]{font-family:var(--c-font-body)}
/* preview HP memakai kelas .phone-name (bukan .creator-head h1) — tanpa aturan ini
   Page Preview tidak mengikuti font judul yang dipilih, padahal halaman publiknya
   mengikuti. Disamakan supaya pratinjau == halaman publik. */
.creator-shell .phone-name{font-family:var(--c-head-font)}

/* --- wallpaper gambar -------------------------------------------------------
   Satu lapisan di belakang konten, memakai pseudo-element supaya TIDAK perlu
   markup tambahan di renderer. Hanya aktif untuk wallpaper berupa GAMBAR;
   wallpaper preset/warna memakai longhand background inline di elemen shell.
   Lapisan ::after = peredup (dim). `overflow:hidden` menahan efek blur supaya
   tidak menambah area gulir halaman. */
.creator-shell{position:relative;z-index:0}
.creator-shell[data-wall="image"]{overflow:hidden}
.creator-shell[data-wall="image"]::before,
.creator-shell[data-wall="image"]::after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none}
.creator-shell[data-wall="image"]::before{background-image:var(--c-wall-img);
  background-size:var(--c-wall-size,cover);background-position:center;
  background-repeat:var(--c-wall-repeat,no-repeat);
  filter:blur(var(--c-wall-blur,0px));transform:scale(1.06)}
.creator-shell[data-wall="image"]::after{background:var(--c-wall-dim,transparent)}

/* --- sticker: dekorasi sudut, tidak pernah menghalangi klik -----------------
   LAPISAN: `.creator-stickers` = lapisan dekorasi (z-index 1) DI ATAS latar/wallpaper
   (yang digambar oleh ::before/::after dengan z-index -1) tetapi DI BAWAH konten
   (`.creator-head`/`.creator-body` berada di z-index otomatis dalam konteks yang sama,
   dan lapisan ini `pointer-events:none` sehingga klik selalu tembus ke konten).
   z-index tiap stiker ditulis eksplisit dari urutan daftar (pb_creator_stickers), jadi
   stiker terakhir di daftar = paling atas.
   ANTI-OVERFLOW: semua anchor memakai jarak dari tepi (left/right), bukan lebar tetap,
   sehingga tidak pernah melebihi lebar layar — diuji di 320/360/390px. */
.creator-stickers{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.cstick{position:absolute;font-size:var(--c-stick-size,44px);line-height:1;user-select:none;
  max-width:calc(100% - 28px)}
.cstick img{width:var(--c-stick-size,44px);height:auto;display:block;max-width:100%}
.cstick-tl{left:14px;top:14px}
.cstick-tr{right:14px;top:14px}
/* tengah: translateY(-50%) supaya BENAR-BENAR di tengah vertikal (dulu hanya top:50%
   tanpa pergeseran, sehingga stiker tampak turun setengah tingginya) */
.cstick-ml{left:14px;top:50%;transform:translateY(-50%)}
.cstick-mr{right:14px;top:50%;transform:translateY(-50%)}
.cstick-bl{left:14px;bottom:78px}
.cstick-br{right:14px;bottom:78px}
/* layar sangat sempit: rapatkan jarak tepi supaya dekorasi tidak menutupi konten */
@media(max-width:380px){
  .cstick-tl,.cstick-ml,.cstick-bl{left:8px}
  .cstick-tr,.cstick-mr,.cstick-br{right:8px}
}

/* --- footer kustom (teks + tautan) ----------------------------------------- */
.creator-foot[data-foot="left"]{text-align:left}
.cfoot-custom{margin-bottom:6px}
.cfoot-text{margin:0}
.cfoot-links{margin:4px 0 0}
.cfoot-sep{opacity:.5;margin:0 6px}
.cfoot-links a{color:inherit;text-decoration:underline;text-underline-offset:2px}

/* --- dashboard: link manager ------------------------------------------- */
.linkcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:12px 14px;margin-top:12px}
.linkcard .soc-ic{width:36px;height:36px;border-radius:11px;color:#fff;display:inline-flex;align-items:center;justify-content:center;flex:none;box-shadow:0 6px 14px -6px rgba(15,23,42,.35)}
.linkcard .soc-ic svg{width:19px;height:19px}
.linkcard .click-chip,.block-flags .click-chip{display:inline-flex;align-items:center;gap:4px;background:var(--ulik-sky-tint);color:var(--ind);border-radius:999px;padding:3px 9px;font-size:.74rem;font-weight:800;white-space:nowrap;flex:none}
.linkcard .sort-ctrl form{display:inline}
.rowedit{margin-top:8px;border-top:1px dashed var(--line);padding-top:6px}
.rowedit summary{list-style:none;cursor:pointer;font-size:.8rem;font-weight:700;color:var(--ind);display:inline-flex;align-items:center;gap:5px;padding:4px 2px}
.rowedit summary::-webkit-details-marker{display:none}
.rowedit summary .ic{vertical-align:-2px}
.addrow{margin-top:14px;border:1.5px dashed rgba(14,165,233,.35);border-radius:16px;padding:10px 14px;background:rgba(255,255,255,.55)}
.addrow summary{list-style:none;cursor:pointer;font-weight:800;color:var(--ind);font-size:.86rem}
.addrow summary::-webkit-details-marker{display:none}

/* --- dashboard: theme picker (halaman Design) --------------------------- */
.theme-group{margin-bottom:14px}
.theme-group-t{display:flex;align-items:center;gap:7px;font-size:.72rem;font-weight:800;letter-spacing:.12em;
  text-transform:uppercase;color:var(--mut-2);margin:0 0 8px}
.theme-group-n{letter-spacing:0;font-size:.68rem;font-weight:700;color:var(--ind);
  background:var(--ulik-sky-tint);border-radius:999px;padding:1px 7px}
.theme-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;margin:0}
.theme-opt{display:flex;flex-direction:column;gap:5px;align-items:center;text-align:center;cursor:pointer;
  border:2px solid var(--line);border-radius:16px;padding:9px 8px;background:#fff;transition:border .15s,box-shadow .15s}
.theme-opt:hover{border-color:rgba(14,165,233,.45)}
.theme-opt:has(input:checked){border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.theme-opt input{position:absolute;opacity:0;pointer-events:none}
.theme-opt:has(input:focus-visible){outline:2px solid var(--ind);outline-offset:2px}
/* Mini-preview NYATA per tema: latar (`page`) + token `--c-*` dari tema itu sendiri
   (ditulis inline oleh Themes::cssVars()), jadi bentuk/warna yang tampil di kotak
   ini berasal dari nilai yang sama dengan halaman publik. */
.ts-page{position:relative;width:100%;height:64px;border-radius:10px;overflow:hidden;
  border:1px solid rgba(15,23,42,.08);display:block}
.ts-ring{position:absolute;left:8px;top:8px;width:17px;height:17px;border-radius:50%;
  background:var(--c-ring,var(--ulik-sky-main));box-shadow:0 0 0 2.5px rgba(255,255,255,.85)}
.ts-card{position:absolute;left:7px;right:7px;bottom:6px;height:27px;border-radius:var(--c-rad-sm,8px);
  background:var(--c-card,rgba(255,255,255,.92));border:1px solid var(--c-card-border,rgba(0,0,0,.08));
  display:flex;flex-direction:column;justify-content:center;gap:3px;padding:0 5px}
.ts-line{height:3px;border-radius:2px;width:72%;background:var(--c-ink,#333);opacity:.5}
.ts-line.w2{width:46%;opacity:.3}
.ts-btn{position:absolute;right:11px;bottom:11px;width:24px;height:8px;border-radius:4px;
  background:var(--c-acc,var(--ulik-sky-main));box-shadow:0 1px 3px var(--c-glow,rgba(0,0,0,.2))}
.ts-name{font-size:.76rem;font-weight:800;color:var(--ink-2)}
.ts-desc{font-size:.64rem;color:var(--mut-2);line-height:1.25;margin-top:-2px}
.mt-12{margin-top:12px}

/* logout button in sidebar renders like its sibling nav items */
.sn-form{margin:0;padding:0 10px}
.sn-btn{width:100%;background:none;border:0;font:inherit;text-align:left;cursor:pointer;margin:0}
.sn-btn:hover{color:#fff}

/* payout / fee notes */
.payout-note{background:#ECFDF5;border:1px solid #a7f3d0;color:#065f46;border-radius:14px;padding:12px 14px;margin-top:14px;font-size:.86rem;line-height:1.5}
.fee-note{background:#F0F9FF;border:1px dashed rgba(14,165,233,.4);color:var(--ink-2);border-radius:12px;padding:10px 12px;font-size:.84rem;display:flex;gap:8px;align-items:flex-start}
.fee-note .ic{flex:none;margin-top:2px;color:var(--ind)}
/* Rincian potongan & jumlah bersih di halaman Penarikan (dihitung real-time) */
.fee-calc{background:#F0F9FF;border:1px dashed rgba(14,165,233,.4);border-radius:14px;padding:12px 14px}
.fee-calc-rows{display:grid;grid-template-columns:1fr auto;gap:6px 12px;margin-top:10px;
  padding-top:10px;border-top:1px dashed rgba(14,165,233,.35);font-size:.86rem}
.fee-calc-rows span{color:var(--mut)}
.fee-calc-rows b{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.fee-calc-rows .is-total{color:var(--ink);font-weight:800;font-size:.92rem}
.fee-calc-rows b.is-total{color:#047857}
.fee-calc-note{margin:10px 0 0;font-size:.8rem;color:var(--mut);line-height:1.5}
.fee-calc-note.is-bad{color:#B91C1C;font-weight:700}

/* --- creator page: product card is a link to detail (no direct buy) ------- */
.pcard-link{text-decoration:none;color:inherit;transition:transform .14s ease,box-shadow .14s}
.pcard-link:hover{transform:translateY(-2px);box-shadow:0 16px 34px -12px rgba(14,165,233,.35)}
.pcard-link h3{transition:color .12s}
.pcard-link:hover h3{color:var(--ind)}
.view-detail{display:inline-flex;align-items:center;background:var(--ulik-sky-tint);color:var(--ind);border-radius:999px;
  padding:8px 16px;font-weight:800;font-size:.82rem;white-space:nowrap}
.pcard-link:hover .view-detail{background:var(--grad-soft);color:#fff}

/* --- product detail page -------------------------------------------------- */
.product-detail{max-width:680px}
.pd-head{display:flex;gap:16px;align-items:center;margin:14px 0 18px}
.pd-thumb{width:92px;height:92px;border-radius:18px;object-fit:cover;flex:none}
.pd-thumb-ph{display:flex;align-items:center;justify-content:center;color:#fff;background:var(--grad-soft)}
.pd-short{background:#F0F9FF;border:1px solid rgba(14,165,233,.18);border-radius:16px;padding:16px 18px;margin-top:4px}
.pd-short b{display:block;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ind);margin-bottom:6px}
.pd-short p{margin:0;color:var(--ink-2);font-size:.98rem}
.pd-desc b{display:block;font-size:.95rem;margin-bottom:8px}
.pd-buy{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.pd-price{font-size:1.8rem;font-weight:900;color:var(--ink)}

/* locked (permanent) field — e.g. username in Profile */
.input-prefix.is-locked{background:#F8FAFC;border-color:var(--line);opacity:.85}
.input-prefix.is-locked input{color:var(--mut);cursor:not-allowed}
.input-prefix.is-locked input[disabled]{background:transparent}

/* --- site footer: link columns + CS block -------------------------------- */
.foot-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:22px;flex:1;min-width:260px}
.foot-col{display:flex;flex-direction:column;gap:8px}
.foot-col b{font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink)}
.foot-col a{color:var(--mut);font-size:.9rem}
.foot-col a:hover{color:var(--ind)}
.foot-cs{margin-top:14px;display:flex;flex-direction:column;gap:6px;font-size:.86rem}
.foot-cs b{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ind)}
.foot-cs a{color:var(--ink-2);display:inline-flex;align-items:center;gap:7px}
.foot-cs a:hover{color:var(--ind)}
.foot-cs .ic{width:15px;height:15px}
.foot-cs-h{color:var(--mut-2);font-size:.8rem}
@media(max-width:640px){.foot-in{flex-direction:column;gap:20px}.foot-cols{width:100%}}
/* price clarity helper */
.price-note{font-size:.76rem;color:var(--mut-2)}

/* --- QRIS native payment (status order) ---------------------------------- */
.qris-wrap{display:flex;justify-content:center;margin:14px 0 6px}
/* QRIS Laboon (v1.41): nominal akhir yang harus dibayar persis */
.lb-amount{margin:10px auto 4px;padding:10px 14px;border-radius:14px;background:var(--ed-acc-soft,var(--ulik-sky-tint));border:1px solid var(--ed-acc-line,rgba(14,165,233,.2));max-width:340px}
/* Bantuan "sudah bayar, produk belum terkirim" (v1.41.2) */
.paid-help{margin-top:16px;background:var(--ed-surface-2,#F8FAFC);border:1px solid var(--ed-line,var(--line));border-radius:14px;padding:14px 16px;text-align:left}
.paid-help summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;font-weight:700;font-size:.92rem}
.paid-help summary::-webkit-details-marker{display:none}
.paid-help .ph-chev{transition:transform .2s;color:var(--mut-2);flex:none}
.paid-help[open] .ph-chev{transform:rotate(180deg)}
.paid-help .ph-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:.92rem}
.paid-help .ph-dot{width:28px;height:28px;border-radius:9px;background:var(--ulik-sky-tint,#E0F2FE);color:#0284C7;display:flex;align-items:center;justify-content:center;flex:none;font-weight:800}
.paid-help ol{margin:12px 0 4px;padding-left:20px;font-size:.86rem;line-height:1.6}
.paid-help ol li{margin-bottom:4px}
.paid-help .ph-text{margin:8px 0 0;font-size:.86rem;line-height:1.6}
.paid-help .ph-ref{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff;border:1px solid var(--ed-line,var(--line));border-radius:10px;padding:8px 10px;margin:10px 0;font-size:.82rem}
.paid-help .ph-ref .mono{font-weight:700;overflow-wrap:anywhere}
.paid-help .ph-copy{font-size:.75rem;font-weight:700;color:#0284C7;background:none;border:0;cursor:pointer;flex:none;padding:4px}
.paid-help .ph-actions{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.paid-help .btnlink{padding:10px 12px}
.paid-help .btnlink .bl-ic{width:36px;height:36px;border-radius:11px}
.paid-help .btnlink svg{width:19px;height:19px}
.paid-help .ph-foot{font-size:.76rem;color:var(--mut);margin:10px 0 0}
.paid-help.is-strong{background:#FFF7ED;border-color:#FED7AA}
.paid-help.is-strong .ph-dot{background:#FFEDD5;color:#EA580C}
.paid-help.is-quiet{background:none;border:0;padding:0}
.paid-help.is-quiet summary{justify-content:center;font-weight:600;font-size:.84rem;color:var(--mut)}
.paid-help.is-quiet .ph-body{margin-top:10px}
.qris-img{width:min(320px,78vw);height:auto;background:#fff;border:1px solid var(--line);border-radius:18px;
  padding:12px;box-shadow:0 12px 30px -14px rgba(14,165,233,.35)}
.pay-countdown{margin-top:12px;display:inline-flex;align-items:center;gap:8px;background:#FEF3C7;border:1px dashed #F59E0B;
  color:#92400E;border-radius:999px;padding:7px 16px;font-size:.86rem;font-weight:600}
.pay-countdown b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.95rem;letter-spacing:.04em}
.pay-countdown.expired{background:#FEE2E2;border-color:#DC2626;color:#991B1B}

/* --- inline confirm bar (menggantikan window.confirm yang diblokir di HP) -- */
/* Bottom-sheet: selalu terjangkau & tidak pernah terjepit di form yang sempit */
.confirm-bar{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom, 0px));z-index:9999;
  display:flex;align-items:center;
  gap:8px;flex-wrap:wrap;padding:12px 14px;background:#FEF2F2;border:1px solid #FECACA;border-radius:14px;
  box-shadow:0 18px 44px -12px rgba(15,23,42,.45);max-width:560px;margin:0 auto;animation:cfmIn .16s ease}
@keyframes cfmIn{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
.confirm-msg{flex:1;min-width:150px;font-size:.86rem;color:#991B1B;font-weight:600}
.confirm-bar .btn{flex:none;white-space:nowrap}

/* --- galeri produk admin (maks 4) ---------------------------------------- */
.gal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:10px}
.gal-item{position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--ulik-sky-tint)}
.gal-item img{width:100%;height:88px;object-fit:cover;display:block}
.gal-item.is-primary{border-color:var(--ind);box-shadow:0 0 0 2px rgba(14,165,233,.2)}
.gal-tag{position:absolute;left:6px;top:6px;background:var(--grad-soft);color:#fff;font-size:.66rem;font-weight:800;
  border-radius:999px;padding:2px 8px}
.gal-del{position:absolute;right:5px;top:5px;width:30px;height:30px;padding:0;display:flex;align-items:center;
  justify-content:center;background:rgba(255,255,255,.95);border-radius:10px;color:#B91C1C;
  box-shadow:0 2px 8px rgba(15,23,42,.28);z-index:3}
.gal-del svg,.gal-del .ic{width:15px;height:15px}
.gal-del:hover{background:#FEE2E2;color:#7F1D1D}

/* --- carousel gambar di halaman produk publik ---------------------------- */
.product-detail .pd-gallery{position:relative;margin:calc(-1 * clamp(20px,4vw,36px));margin-bottom:14px}
.product-detail .pd-gallery .pd-viewport{border-radius:var(--radius-lg) var(--radius-lg) 0 0}
.pd-gallery{position:relative;margin:14px 0 6px}
.pd-viewport{overflow:hidden;border-radius:18px;background:var(--ulik-sky-tint);touch-action:pan-y;
  cursor:grab;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
.pd-viewport.is-drag{cursor:grabbing}
.pd-viewport:focus-visible{outline:2px solid var(--ind);outline-offset:2px}
.pd-track{display:flex;will-change:transform}
.pd-slide{flex:0 0 100%;margin:0;display:flex;align-items:center;justify-content:center;
  background:#fff;min-height:200px}
.pd-slide img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;
  pointer-events:none;-webkit-user-drag:none;background:#fff}
.pd-nav{position:absolute;top:42%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;border:0;
  background:rgba(15,23,42,.5);color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;display:flex;
  align-items:center;justify-content:center;backdrop-filter:blur(6px);z-index:2}
.pd-nav.prev{left:10px}.pd-nav.next{right:10px}
.pd-nav:hover{background:rgba(15,23,42,.75)}
.pd-dots{display:flex;gap:7px;justify-content:center;padding:10px 0 2px}
.pd-count{position:absolute;right:12px;top:12px;background:rgba(15,23,42,.55);color:#fff;font-size:.72rem;
  font-weight:700;border-radius:999px;padding:3px 10px;backdrop-filter:blur(6px);z-index:2}
.pd-dot{width:9px;height:9px;border-radius:50%;border:0;background:rgba(15,23,42,.22);cursor:pointer;padding:0}
.pd-dot.active{background:var(--ind);width:22px;border-radius:999px}
@media(max-width:560px){.pd-nav{width:36px;height:36px;font-size:1.3rem}}


/* editor: atur urutan gambar (drag) */
.gal-sort{margin-top:12px;border:1px dashed rgba(14,165,233,.35);border-radius:14px;padding:10px 14px;background:rgba(255,255,255,.6)}
.gal-sort summary{cursor:pointer;font-weight:800;color:var(--ind);font-size:.86rem;list-style:none}
.gal-sort summary::-webkit-details-marker{display:none}
.gal-sort-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.gal-sort-item{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:8px 10px;cursor:grab}
.gal-sort-item.is-drag{opacity:.5;border-style:dashed;cursor:grabbing}
.gal-handle{color:var(--mut-2);font-size:1rem;letter-spacing:-2px;cursor:grab}
.gal-sort-item img{width:46px;height:46px;border-radius:10px;object-fit:cover;flex:none;pointer-events:none}
.gal-sort-item .mini-note{flex:1}
/* tombol ★ jadikan utama + hapus gambar (editor) */
.gal-star{position:absolute;left:5px;bottom:5px;width:30px;height:30px;border:0;border-radius:10px;cursor:pointer;
  background:rgba(255,255,255,.95);color:#D97706;font-size:15px;line-height:1;display:flex;align-items:center;
  justify-content:center;box-shadow:0 2px 8px rgba(15,23,42,.28);z-index:3}
.gal-star:hover{background:#FEF3C7;color:#92400E}
.gal-item.is-primary .gal-star{display:none}

/* hint rasio gambar produk */
.gal-hint{display:flex;gap:8px;align-items:flex-start;margin:8px 0 10px;padding:9px 12px;
  background:var(--ulik-sky-tint);border:1px dashed rgba(14,165,233,.4);border-radius:12px;font-size:.8rem;color:var(--ink-2);line-height:1.5}
.gal-hint .ic{width:15px;height:15px;flex:none;margin-top:2px;color:var(--ind)}

/* pesan "urutan belum disimpan" di editor gambar */
.gal-unsaved{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px;padding:9px 12px;
  background:#FEF3C7;border:1px solid #FCD34D;border-radius:12px;font-size:.82rem;color:#92400E;font-weight:600}
.gal-unsaved .ic{width:15px;height:15px;flex:none;margin-top:2px}

/* ==========================================================================
   FORM PRODUK SATU HALAMAN (editor produk)
   Semua komponen produk (informasi, harga, deskripsi, gambar, file, link) ada di
   SATU form; panel Aksi/Publikasikan berada di kolom kanan DI LUAR form (nested
   form = HTML tidak valid, browser memecah DOM-nya).
   ========================================================================== */
.prod-edit{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px;align-items:start}
.prod-form{min-width:0}
.prod-side{min-width:0;display:flex;flex-direction:column;gap:20px}
.prod-side .panel{margin-bottom:0}
.pf-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;
  padding-bottom:14px;border-bottom:1px solid var(--line)}
.pf-sec{display:flex;flex-direction:column;gap:12px;padding-top:16px;border-top:1px solid var(--line)}
.pf-sec>b{font-size:.98rem}
.pf-sec:first-of-type{border-top:0;padding-top:0}

/* --- galeri gambar di dalam form --- */
.pf-gal{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px}
.pf-gal-empty{margin:0}
.pf-gal-item{position:relative;border:2px solid var(--line);border-radius:14px;overflow:hidden;background:var(--ulik-sky-tint);
  transition:border-color .15s,box-shadow .15s}
.pf-gal-item.is-primary{border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.16)}
.pf-gal-item.is-staged{border-style:dashed;border-color:#F59E0B}
.pf-gal-item img{width:100%;height:110px;object-fit:cover;display:block;pointer-events:none}
.pf-gal-handle{position:absolute;left:6px;bottom:6px;background:rgba(15,23,42,.72);color:#fff;border-radius:8px;
  padding:2px 6px;font-size:.7rem;letter-spacing:-2px;cursor:grab;z-index:2}
.pf-gal-tag{position:absolute;right:6px;bottom:6px;background:var(--grad-soft);color:#fff;font-size:.66rem;
  font-weight:800;padding:3px 8px;border-radius:999px;z-index:2}
.pf-gal-x{position:absolute;right:6px;top:6px;width:28px;height:28px;border:0;border-radius:9px;cursor:pointer;
  background:rgba(255,255,255,.95);color:#7F1D1D;font-size:14px;font-weight:800;line-height:1;z-index:3;
  display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(15,23,42,.28)}
.pf-gal-x:hover{background:#FEE2E2}
.pf-gal-ctl{display:flex;flex-direction:column;gap:2px;padding:8px 10px;background:#fff;border-top:1px solid var(--line)}
.pf-gal-ctl label{display:flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;color:var(--ink-2);cursor:pointer}
.pf-gal-ctl input{margin:0;flex:none}
.pf-gal-ctl .is-del{color:#B91C1C;font-weight:600}
.pf-gal-item.is-drag{opacity:.45}
.pf-pick{display:block;border:1.5px dashed rgba(14,165,233,.4);border-radius:14px;padding:12px 14px;background:rgba(255,255,255,.6)}
.pf-pick>input[type=file]{margin-top:8px}
.pf-pick small{display:block;margin-top:6px;color:var(--mut);font-size:.76rem;font-weight:500}
.pf-progress{margin:0;color:var(--ind);font-weight:600}

/* --- file produk di dalam form --- */
.pf-files{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.pf-file{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.pf-file.is-staged{border-style:dashed;border-color:#F59E0B;background:#FFFBEB}
.pf-file .dl-name{display:block;font-weight:600;font-size:.93rem;word-break:break-all}
.pf-file .dl-size{color:var(--mut);font-size:.78rem}
.pf-file-del{display:flex;align-items:center;gap:6px;font-size:.8rem;font-weight:700;color:#B91C1C;white-space:nowrap}
.pf-file-del input{margin:0}
.pf-file-x{min-width:34px;min-height:34px;justify-content:center}

/* --- baris simpan --- */
.pf-submit{padding-top:18px;border-top:1px solid var(--line)}
@media(max-width:980px){
  .prod-edit{grid-template-columns:1fr}
  .prod-side{order:-1}       /* aksi/publikasikan tetap terlihat lebih dulu di HP */
}
@media(max-width:560px){
  .pf-gal{grid-template-columns:repeat(auto-fill,minmax(108px,1fr))}
  .pf-gal-item img{height:92px}
}

/* ==========================================================================
   PAGE BUILDER (My Page) — daftar blok + preview HP
   ========================================================================== */
.builder{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px;align-items:start}
.builder-left{min-width:0}

/* --- daftar blok --- */
.block-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.block-empty{color:var(--mut);text-align:center;padding:22px 12px;background:rgba(255,255,255,.6);border:1px dashed var(--line);border-radius:14px}
/* flex-wrap dipakai supaya panel menu blok (⋯) bisa turun ke barisnya sendiri
   DI DALAM kartu. Popup position:absolute TIDAK bisa dipakai di sini: panel
   pembungkusnya (.panel) memakai overflow:hidden sehingga popup terpotong dan
   tombolnya tidak terjangkau — terutama di HP. */
/* Baris blok = satu baris kontrol:
   [⋮⋮ geser] [ikon kotak] [judul + subjudul + status] [toggle ON/OFF] [⋯ menu]
   `flex-wrap` TETAP dipakai supaya panel menu (⋯) bisa turun ke barisnya sendiri DI
   DALAM kartu — popup position:absolute tidak bisa dipakai di sini karena `.panel`
   memakai overflow:hidden sehingga popup terpotong (terutama di HP). */
.block-item{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);
  border-radius:16px;padding:10px 12px;cursor:grab;transition:box-shadow .14s,border-color .14s}
.block-item:hover{border-color:rgba(14,165,233,.45);box-shadow:0 8px 20px -14px rgba(14,165,233,.5)}
.block-item.is-drag{opacity:.55;border-style:dashed}
/* STATUS NONAKTIF harus langsung terbaca: kartu diredam + garis putus + kolom status
   khusus, bukan hanya badge kecil. Toggle-nya sendiri juga ikut tampil "mati". */
.block-item.is-off{background:#F7FAFC;border-style:dashed;border-color:rgba(100,116,139,.35)}
.block-item.is-off:hover{border-color:rgba(100,116,139,.6);box-shadow:none}
.block-item.is-off .block-ic{filter:grayscale(1) brightness(.92)}
.block-item.is-off .block-body b{color:var(--mut)}
.block-handle{color:var(--mut-2);letter-spacing:-2px;cursor:grab;flex:none;font-size:1.05rem;line-height:1}
/* ikon blok: kotak berwarna yang jelas (bukan ikon polos) */
.block-ic{width:40px;height:40px;border-radius:12px;color:#fff;flex:none;display:inline-flex;align-items:center;
  justify-content:center;box-shadow:0 6px 14px -8px rgba(15,23,42,.5)}
.block-ic .ic{width:18px;height:18px}
.block-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.block-body b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.block-sub{font-size:.78rem;color:var(--mut-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.block-flags{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px}
.block-flags:empty{display:none}
.block-flags .badge{padding:2px 9px;font-size:.68rem}
.block-actions{flex:none;display:flex;align-items:center;gap:8px}
/* --- toggle ON/OFF langsung di baris -------------------------------------
   Ini hanyalah <button type="submit"> di dalam form POST ke endpoint `block.save`
   (do=toggle) yang SAMA dengan tombol di menu — jadi tidak ada sistem toggle baru
   dan tetap berfungsi tanpa JavaScript. Tampilannya dibuat seperti switch. */
.block-switch-form{margin:0;display:flex;align-items:center}
.block-switch{position:relative;width:44px;height:26px;border-radius:999px;background:#CBD5E1;
  border:1px solid var(--line);padding:0;cursor:pointer;flex:none;transition:background .16s,border-color .16s}
/* area ketuk diperlebar ke atas/bawah (tetap 44px tinggi efektif) tanpa menutupi
   tombol ⋯ — sisipan horizontal hanya 3px, sedangkan jarak antar tombol 8px */
.block-switch::after{content:'';position:absolute;inset:-9px -3px}
.block-switch-knob{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;
  box-shadow:0 1px 3px rgba(15,23,42,.4);transition:transform .16s ease}
.block-switch:hover{background:#CBD5E1}
.block-switch.is-on{background:linear-gradient(120deg,var(--ulik-sky-main),var(--ulik-sky-light));border-color:transparent}
.block-switch.is-on .block-switch-knob{transform:translateX(18px)}
.block-switch:focus-visible{outline:2px solid var(--ind);outline-offset:3px}
.block-menu-toggle{display:none}
.block-menu-btn{width:34px;height:34px;min-width:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  font-weight:900;color:var(--mut);border:1px solid var(--line);cursor:pointer;user-select:none;background:#fff}
.block-menu-btn:hover{background:var(--ulik-sky-tint);color:var(--ind)}
.block-menu-btn:focus-visible{outline:2px solid var(--ind);outline-offset:2px}
.block-menu-toggle:checked ~ .block-actions .block-menu-btn{background:var(--ulik-sky-tint);color:var(--ind);border-color:rgba(14,165,233,.5)}
/* panel menu: in-flow, satu baris penuh di dalam kartu blok (tidak bisa terpotong) */
.block-menu-panel{display:none;flex:1 0 100%;align-self:stretch;flex-direction:column;gap:10px;margin-top:2px;
  padding:12px;border:1px solid var(--line);border-radius:14px;background:#fff;cursor:auto}
.block-menu-toggle:checked ~ .block-menu-panel{display:flex}
.block-menu-panel .btn{width:100%;justify-content:center}
/* tombol geser urutan (▲/▼) — dipakai di HP karena drag HTML5 tidak jalan dari sentuh */
.block-move{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding-bottom:10px;border-bottom:1px dashed var(--line)}
.block-move-btns{display:flex;gap:8px}
.block-move-btns form{margin:0}
.block-move-btns .btn{width:auto;min-width:104px;justify-content:center}
.block-move-btns .btn[disabled]{opacity:.45;cursor:not-allowed}
.block-edit summary{cursor:pointer;font-size:.82rem;font-weight:700;color:var(--ind);padding:4px 0}
.block-edit summary::-webkit-details-marker{display:none}
.block-edit form{margin-top:6px}
/* ==========================================================================
   BLOCK PICKER (Fase A) — pilih jenis block dulu, baru konfigurasi
   --------------------------------------------------------------------------
   TANPA JavaScript: `#addBlock` adalah <details> biasa (panel in-flow) berisi
   langkah 1 (kartu pilihan = tautan ?add=<tipe>) lalu langkah 2 dari server.
   DENGAN JavaScript: `.bp-modal` mengubahnya menjadi modal (backdrop + panel).
   Karena itu gaya "modal" HANYA aktif saat class itu ada — kalau JS mati,
   panelnya tetap terbaca sebagai panel biasa.

   PENTING: `#addBlock` harus berada DI LUAR `.panel`. `.panel` memakai
   `backdrop-filter` + `overflow:hidden`; keduanya menjadikannya containing block
   untuk anak `position:fixed` sehingga modal akan terkurung di dalam panel.
   ========================================================================== */
.bp-host{margin-top:14px}
.bp-host > summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;
  padding:15px 16px;border:1.5px dashed rgba(14,165,233,.45);border-radius:16px;background:rgba(255,255,255,.6);
  color:var(--ind);font-weight:800;font-size:.9rem;transition:background .15s,border-color .15s}
.bp-host > summary::-webkit-details-marker{display:none}
.bp-host > summary:hover{background:#F0F9FF;border-color:rgba(14,165,233,.7)}
.bp-host > summary:focus-visible{outline:2px solid var(--ind);outline-offset:2px}
.bp-wrap{display:block}
.bp-backdrop{display:none}
.bp-panel{margin-top:12px}
.bp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}
.bp-head-tx b{display:block;font-size:1.05rem}
.bp-head-tx p{margin:3px 0 0}
.bp-x{flex:none;width:36px;height:36px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;
  color:var(--mut-2);background:#F0F9FF;border:1px solid var(--line)}
.bp-x:hover{background:var(--ulik-sky-tint);color:var(--ind);opacity:1}
.bp-x svg{width:18px;height:18px}
.bp-step[hidden]{display:none!important}
.bp-cat{display:block;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--mut-2);margin:0 0 8px}
.bp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin:0 0 16px}
.bp-tile{display:flex;align-items:center;gap:12px;text-align:left;background:#fff;border:1.5px solid var(--line);
  border-radius:16px;padding:13px 14px;color:inherit;transition:border-color .14s,box-shadow .14s,transform .14s}
.bp-tile:hover{transform:translateY(-2px);border-color:rgba(14,165,233,.5);box-shadow:0 12px 26px -16px rgba(14,165,233,.6);opacity:1}
.bp-tile:focus-visible{outline:2px solid var(--ind);outline-offset:2px}
.bp-tile-ic{flex:none;width:42px;height:42px;border-radius:13px;color:#fff;display:inline-flex;
  align-items:center;justify-content:center}
.bp-tile-ic .ic{width:20px;height:20px}
.bp-tile-tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.bp-tile-tx b{font-size:.92rem}
.bp-tile-tx span{font-size:.76rem;color:var(--mut);line-height:1.35}
.bp-tip{display:flex;align-items:flex-start;gap:8px;background:#F0F9FF;border:1px solid var(--line);
  border-radius:12px;padding:10px 12px;font-size:.78rem;color:var(--ink-2);line-height:1.45}
.bp-tip .ic{flex:none;width:15px;height:15px;margin-top:2px;color:var(--ind)}
.bp-back{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;font-weight:700;color:var(--ind);margin-bottom:12px}
.bp-form-head{display:flex;align-items:center;gap:12px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.bp-form-head b{display:block;font-size:.95rem}
.bp-picklist{display:flex;flex-direction:column;gap:6px;max-height:230px;overflow-y:auto;padding:2px}
.bp-panel .form-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.bp-panel .form-actions .btn{min-height:40px}
body.bp-lock{overflow:hidden}
@media(max-width:560px){
  .bp-grid{grid-template-columns:1fr;gap:10px}
  .bp-tile{padding:11px 12px}
  .bp-tile-ic{width:38px;height:38px;border-radius:11px}
}
/* --- MODAL (hanya saat JavaScript mengaktifkan .bp-modal) --- */
.bp-host.bp-modal .bp-wrap{position:fixed;inset:0;z-index:9998;display:flex;align-items:center;justify-content:center;
  padding:20px}
.bp-host.bp-modal .bp-backdrop{display:block;position:absolute;inset:0;background:rgba(15,10,40,.55);
  backdrop-filter:blur(2px);animation:bpFade .14s ease}
.bp-host.bp-modal .bp-panel{position:relative;z-index:1;width:100%;max-width:660px;max-height:88vh;overflow-y:auto;
  background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;
  box-shadow:0 30px 70px -20px rgba(15,10,40,.55);margin:0;animation:bpPop .16s ease}
@keyframes bpFade{from{opacity:0}to{opacity:1}}
@keyframes bpPop{from{transform:translateY(10px) scale(.99);opacity:0}to{transform:none;opacity:1}}
@media(max-width:640px){
  /* di HP modal jadi bottom-sheet supaya tidak terjepit dan mudah dijangkau jempol */
  .bp-host.bp-modal .bp-wrap{align-items:flex-end;padding:0}
  .bp-host.bp-modal .bp-panel{max-width:none;max-height:92vh;border-radius:18px 18px 0 0;padding:18px 16px;
    padding-bottom:calc(18px + env(safe-area-inset-bottom, 0px))}
  .bp-head{margin-bottom:12px}
}
.block-list .pcard,.block-list .btnlink{pointer-events:auto}

/* --- preview HP --- */
.builder-right .panel{padding:16px}
.phone{width:300px;max-width:100%;margin:0 auto;background:#0B1220;border-radius:38px;padding:12px 10px 16px;
  box-shadow:0 24px 50px -18px rgba(15,23,42,.55), inset 0 0 0 2px rgba(255,255,255,.08)}
.phone-notch{width:74px;height:18px;background:#070C16;border-radius:0 0 12px 12px;margin:-12px auto 6px}
.phone-screen{background:#fff;border-radius:26px;overflow-y:auto;max-height:560px;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin}
.phone-screen::-webkit-scrollbar{width:5px}
.phone-screen::-webkit-scrollbar-thumb{background:rgba(15,23,42,.22);border-radius:99px}
/* Latar & teks preview berasal dari token tema (.creator-shell) yang dikirim inline,
   jadi yang tersisa di sini hanya tata letak. */
.phone-page{min-height:100%;padding-bottom:8px}
.phone-page.creator-shell{min-height:100%}
/* Skala preview: kartu Shop Links di halaman publik berukuran penuh; di dalam bingkai
   HP yang hanya ~300px, ukuran itu terasa "nge-zoom". Dikecilkan proporsional. */
.phone-page .shop-head b{font-size:.9rem}
.phone-page .shop-head span{font-size:.7rem}
.phone-page .shop-ic{width:30px;height:30px;border-radius:10px}
.phone-page .shop-ic svg{width:16px;height:16px}
.phone-page .shop-grid{gap:8px}
.phone-page .shop-body{padding:8px 9px 9px;gap:3px}
.phone-page .shop-body .shop-mp{font-size:.55rem}
.phone-page .shop-title{font-size:.72rem;-webkit-line-clamp:2}
.phone-page .shop-price{font-size:.79rem}
.phone-page .shop-cta{font-size:.66rem;padding:6px 8px;gap:4px}
.phone-page .shop-cta svg{width:12px;height:12px}
.phone-page .shop-media-ph{font-size:1.1rem}
.phone-page .shop-sec{margin-top:14px}
/* Stiker di PRATINJAU: jarak tepi & ukuran memakai token yang SAMA dengan halaman
   publik (z-index + --c-stick-size dari server), jadi posisi/ukurannya identik.
   Hanya jarak tepi yang dirapatkan karena bingkai HP di dashboard lebih sempit. */
.phone-page .creator-stickers{overflow:hidden}
.phone-page .cstick-tl,.phone-page .cstick-ml,.phone-page .cstick-bl{left:9px}
.phone-page .cstick-tr,.phone-page .cstick-mr,.phone-page .cstick-br{right:9px}
.phone-page .cstick-bl,.phone-page .cstick-br{bottom:42px}
.phone-hero{padding:20px 14px 10px;text-align:center}
.phone-avatar{width:64px;height:64px;margin:0 auto 8px;border-radius:50%;padding:3px;
  background:conic-gradient(from 210deg,var(--ulik-sky-main),var(--ulik-sky-light),var(--ulik-sky-light),var(--ulik-sky-main))}
.phone-avatar img,.phone-avatar span{width:100%;height:100%;border-radius:50%;object-fit:cover;display:flex;
  align-items:center;justify-content:center;background:#fff;color:#fff;font-weight:800;
  background-image:var(--grad-soft)}
.phone-avatar span{background:var(--grad-soft);font-size:1.3rem}
.phone-name{font-weight:800;font-size:calc(.95rem * var(--c-text-scale,1))}
.phone-handle{color:var(--mut);font-size:calc(.76rem * var(--c-text-scale,1))}
/* Preview HP memakai variabel DASHBOARD (--mut/--ink-2), sedangkan halaman publik memakai
   token tema (--c-sub/--c-ink2). Akibatnya teks sekunder di pratinjau tidak mengikuti tema
   maupun pengaturan teks creator (paritas preview↔publik rusak). Disamakan di sini. */
.creator-shell .phone-handle{color:var(--c-sub)}
.creator-shell .phone-bio{color:var(--c-ink2)}
.phone-bio{color:var(--ink-2);font-size:calc(.78rem * var(--c-text-scale,1));white-space:pre-line;margin-top:6px}
.phone-socials{display:flex;gap:7px;justify-content:center;flex-wrap:wrap;margin-top:10px}
.phone-soc{width:28px;height:28px;border-radius:50%;background:var(--grad-soft);color:#fff;display:inline-flex;
  align-items:center;justify-content:center}
.phone-soc svg{width:15px;height:15px}
.phone-body{padding:10px 12px 0}
/* di dalam HP, perkecil komponen agar terasa seperti layar telpon */
.phone-body .linkstack{gap:8px;margin-top:6px}
.phone-body .btnlink{padding:9px 10px;border-radius:var(--c-btn-rad,12px);gap:9px}
.phone-body .btnlink .bl-ic{width:30px;height:30px;border-radius:9px}
.phone-body .btnlink svg{width:16px;height:16px}
.phone-body .bl-title{font-size:calc(.82rem * var(--c-text-scale,1))}
.phone-body .bl-sub{font-size:calc(.66rem * var(--c-text-scale,1))}
.phone-body .pcard{padding:10px;border-radius:var(--c-btn-rad,14px);gap:10px}
.phone-body .pthumb{width:54px;height:54px;border-radius:11px}
.phone-body .pinfo h3{font-size:calc(.82rem * var(--c-text-scale,1))}
.phone-body .pdesc{font-size:calc(.72rem * var(--c-text-scale,1))}
.phone-body .price{font-size:calc(.84rem * var(--c-text-scale,1))}
.phone-body .view-detail{padding:5px 10px;font-size:calc(.68rem * var(--c-text-scale,1))}
.phone-body .price-note{font-size:calc(.64rem * var(--c-text-scale,1))}
/* Blok Text di dalam bingkai HP: HANYA pengecilan proporsional (sama seperti blok lain
   di preview: `.phone-body .pcard`, `.phone-body .pbimg`, dst). Latar/garis/radius TIDAK
   lagi ditulis di sini — diwarisi dari `.creator-shell .pb-text` supaya preview dan
   halaman publik memakai kartu yang sama PERSIS (termasuk tema gelap: nilai `#fff`/`var(--line)`
   yang lama memaksa kartu putih terang di tema gelap). */
.phone-body .pb-text{padding:10px 12px;font-size:calc(.78rem * var(--c-text-scale,1))}
/* blok gambar di dalam bingkai HP: wadah mengikuti token tema (sama seperti publik),
   hanya teks keterangannya yang dikecilkan supaya proporsional di layar preview */
/* link bergambar di dalam bingkai HP: gambar & teks dikecilkan proporsional
   (wadah/warna tetap dari token tema yang sama dengan halaman publik) */
.phone-body .btnlink.bl-hasimg{padding:8px;gap:9px}
.phone-body .bl-img{width:54px;height:54px;border-radius:10px}
.phone-body .pbimg{border-radius:12px}
.phone-body .pbimg-cap{padding:7px 9px;font-size:calc(.72rem * var(--c-text-scale,1))}
.phone-body .pb-text p{margin:0 0 6px}
.phone-body .pb-text a{color:var(--ind);text-decoration:underline}
.phone-foot{text-align:center;color:var(--mut-2);font-size:calc(.66rem * var(--c-text-scale,1));padding:14px 10px 6px}

/* --- panel preview jadi panel yang bisa dibuka saat kolomnya sempit ---
   Ambang 1120px (bukan 1024px): di 1024–1119px kolom kiri builder hanya selebar
   ~360px sehingga daftar blok DAN pemilih tema (21 tema) jadi sangat sempit/tinggi.
   Di ambang itu lebih baik satu kolom dengan tombol 📱 Preview. */
@media(max-width:1119px){
  .builder{grid-template-columns:1fr}
  .builder-right{display:none}
  .builder-right.preview-open{display:block}
  .builder-right.preview-open .panel{position:static}
  #btnPreviewMobile{display:inline-flex}
  .phone-screen{max-height:460px}
}
@media(min-width:1120px){
  #btnPreviewMobile,#btnClosePreview{display:none}
}

/* ==========================================================================
   ULik.me — EDITORIAL SKIN (v1.8) untuk halaman PUBLIK
   Homepage, login/register, halaman produk, halaman statis & footer. Di-scope ke
   .skin-ed (html) / body.chrome-site. PENGECUALIAN PENTING: HALAMAN CREATOR
   (/{username}) TIDAK memakai skin ini — di sana tampilan sepenuhnya mengikuti
   tema yang dipilih kreator di Profile (token inline di .creator-shell).
   Aksen tetap ULik (indigo → violet); sisanya krem/beige + headline serif.
   ========================================================================== */
:root{
  /* LATAR: memakai token brand yang SAMA dengan homepage (--bg-2 = #F0F9FF) dan
     permukaan ber-nuansa sky, BUKAN krem/beige. Halaman publik ULik (produk, Laman,
     statis, checkout, status, delivery, error, install, auth) memakai `body.chrome-site`
     sehingga semuanya ikut satu sumber ini. HALAMAN CREATOR tidak memakai skin ini
     (chrome `creator` → tema pilihan creator), jadi tema creator TIDAK tersentuh.
     Tipografi editorial (serif/`--ed-*` lain) sengaja DIBIARKAN sesuai lingkup:
     yang disamakan hanya latar/permukaan. */
  --ed-bg:var(--bg-2); --ed-surface:#FFFFFF; --ed-surface-2:#F5FAFF;
  --ed-line:#E5E0D4; --ed-line-strong:#D6D0C1;
  --ed-ink:#17150F; --ed-ink-2:#474339; --ed-mut:#7C7568; --ed-mut-2:#9E988C;
  --ed-acc:var(--ulik-sky-main); --ed-acc-2:var(--ulik-sky-light); --ed-acc-soft:var(--ulik-sky-tint); --ed-acc-line:rgba(14,165,233,.20);
  --ed-gold:#F5C518; --ed-blue:#C7D8F3;
  --ed-serif:'Fraunces','Iowan Old Style','Palatino Linotype',Georgia,serif;
  --ed-sans:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --ed-shadow:0 18px 44px -26px rgba(23,21,15,.30);
  --ed-radius:14px; --ed-radius-lg:20px;
}
body.chrome-site{background:var(--ed-bg);color:var(--ed-ink);font-family:var(--ed-sans)}
/* Bentuk sorot dekoratif (kuning/ungu) sengaja menjorok keluar kartu. Di layar
   yang lebih sempit dari max-width+pading, tonjolan itu bisa memicu scroll
   horizontal — clip di level body (bukan overflow:hidden, agar tidak mengubah
   containing block elemen sticky di halaman lain). */
html.skin-ed{overflow-x:clip}
.skin-ed h1,.skin-ed h2,.skin-ed h3,.skin-ed .ed-serif{font-family:var(--ed-serif);font-weight:600;letter-spacing:-.015em}
.skin-ed h1{font-size:clamp(2.1rem,5.2vw,3.5rem);line-height:1.04;margin:0 0 .5rem}
.skin-ed h2{font-size:clamp(1.5rem,3.4vw,2.25rem);line-height:1.12}
.skin-ed h3{font-size:1.12rem;line-height:1.25}
.ed-kicker{display:inline-block;font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--ed-mut-2)}
.ed-chip{display:inline-flex;align-items:center;gap:8px;font-size:.74rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase;
  color:var(--ed-acc);background:var(--ed-surface);border:1px solid var(--ed-acc-line);border-radius:999px;padding:7px 15px}
.ed-section{padding:64px 0}
.ed-section.tight{padding:34px 0}

/* --- topbar (marketing) -------------------------------------------------- */
body.chrome-site{/* gradasi brand lembut (palet yang sama dengan hero homepage) supaya
  halaman publik tidak terasa datar dibanding beranda. `body.pg-landing` menimpanya
  dengan resepnya sendiri (ditulis LEBIH AKHIR di berkas ini), jadi homepage tidak berubah. */
  background-image:
    radial-gradient(760px 520px at 88% 0%, rgba(224,242,254,.70), transparent 62%),
    radial-gradient(680px 500px at 2% 2%, rgba(203,214,255,.55), transparent 62%);
  background-repeat:no-repeat;}
body.chrome-site .site-top{border-bottom:1px solid var(--ed-line);background:rgba(255,255,255,.78);backdrop-filter:blur(12px)}
body.chrome-site .site-top-in{max-width:1140px;padding:14px 22px;gap:22px}
body.chrome-site .snk{color:var(--ed-ink-2);font-weight:600}
body.chrome-site .snk:hover{background:rgba(23,21,15,.05)}
body.chrome-site .snk.active{background:transparent;color:var(--ed-acc);box-shadow:none;border-bottom:2px solid var(--ed-acc);border-radius:0;padding-bottom:6px}
body.chrome-site .btn-ghost{background:transparent;color:var(--ed-ink);border-color:var(--ed-line-strong)}
body.chrome-site .btn-ghost:hover{background:rgba(23,21,15,.04)}
.ulik-logo{font-weight:900;letter-spacing:-.02em;color:var(--ed-ink)}

/* --- tombol editorial: pil, tegas, aksen ULik ---------------------------- */
.ed-btn-dark{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--ed-ink);color:#fff;border:1px solid var(--ed-ink);
  border-radius:999px;padding:13px 24px;font-weight:700;font-size:.95rem;cursor:pointer;transition:transform .12s ease,background .15s}
.ed-btn-dark:hover{background:#2c2820;opacity:1;color:#fff}
.ed-btn-dark:active{transform:scale(.98)}
.ed-btn-line{display:inline-flex;align-items:center;gap:8px;background:var(--ed-surface);color:var(--ed-ink);border:1px solid var(--ed-line-strong);
  border-radius:999px;padding:13px 22px;font-weight:700;font-size:.95rem;cursor:pointer;transition:background .15s}
.ed-btn-line:hover{background:var(--ed-surface-2);opacity:1}

/* --- blueprint panel (petak kertas teknik) ------------------------------ */
.ed-blueprint{min-width:0;background-color:#F0F9FF;
  background-image:linear-gradient(rgba(14,165,233,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(14,165,233,.14) 1px,transparent 1px);
  background-size:22px 22px;border:1px solid var(--ed-acc-line);border-radius:var(--ed-radius-lg)}
.ed-card{background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:var(--ed-radius-lg);box-shadow:var(--ed-shadow)}

/* --- blok dengan bentuk sorot (kuning/ungu) di belakang kartu ----------- */
.ed-stack{position:relative}
.ed-stack>.ed-shape{position:absolute;z-index:0;border-radius:6px}
.ed-stack>.ed-shape.gold{background:var(--ed-gold);width:56px;height:104px;left:-26px;top:38px;transform:rotate(9deg)}
.ed-stack>.ed-shape.violet{background:linear-gradient(140deg,var(--ulik-sky-border),var(--ulik-sky-light));width:74px;height:120px;right:-30px;bottom:16px;transform:rotate(-7deg);opacity:.85}
.ed-stack>*:not(.ed-shape){position:relative;z-index:1}
/* Bentuk sorot butuh ruang margin di luar kartu. Di viewport yang tidak lebih
   lebar dari kontainer, tonjolannya membuat halaman bisa digeser ke samping —
   sembunyikan saat tidak ada ruang. */
@media(max-width:1240px){.ed-stack>.ed-shape{display:none}}

/* ---------------------------------------------------------- HOME: hero ---- */
.ed-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:56px;align-items:start;min-width:0;
  max-width:1140px;margin:0 auto;padding:58px 22px 8px}
.ed-hero-copy{max-width:520px;padding-top:22px;min-width:0}
.ed-hero-copy h1{margin-top:18px}
.ed-hero-copy .lead{color:var(--ed-mut);font-size:1.06rem;line-height:1.6;margin:0 0 26px}
.ed-hero-note{color:var(--ed-mut-2);font-size:.85rem;margin-top:14px}
.ed-hero h1 em,.ed-hero-copy h1 em{font-style:italic}
/* kotak klaim username */
.ed-claim{display:flex;align-items:center;gap:10px;background:var(--ed-surface);border:1px solid var(--ed-line-strong);
  border-radius:12px;padding:8px 8px 8px 16px;max-width:470px;min-width:0}
.ed-claim .ed-claim-prefix{color:var(--ed-ink);font-weight:700;font-size:.95rem;white-space:nowrap;padding-right:2px;
  overflow:hidden;text-overflow:ellipsis;min-width:0}
.ed-claim input{flex:1 1 60px;min-width:0;border:0 !important;box-shadow:none !important;margin:0 !important;padding:9px 4px;font-size:.95rem;background:transparent}
/* HP: prefix domain (mis. ulik.vibecoder.co.id/ulikme/) terlalu panjang untuk satu
   baris bersama input — dulu input menyusut jadi ~51px (nyaris tak bisa diketik).
   Di layar sempit prefix pindah ke barisnya sendiri, input+tombol di baris kedua. */
@media(max-width:560px){
  .ed-claim{flex-wrap:wrap;align-items:stretch;padding:12px 12px 12px 14px;gap:8px}
  .ed-claim-prefix{flex:1 1 100%;white-space:normal;overflow:visible;text-overflow:clip;
    font-size:.84rem;font-weight:600;color:var(--ed-mut);padding:0}
  .ed-claim input{flex:1 1 0;order:2;padding:10px 2px;font-size:1rem}
  .ed-claim button{order:3;align-self:center}
}
.ed-claim input:focus{outline:none}
.ed-claim button{flex:none}
.ed-claim-msg{margin-top:10px;font-size:.86rem;font-weight:600;min-height:20px}
.ed-claim-msg.ok{color:#0F766E}
.ed-claim-msg.bad{color:#B91C1C}
.ed-hero-trust{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.ed-trust{display:flex;align-items:center;gap:9px;background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:10px;
  padding:11px 15px;font-size:.85rem;color:var(--ed-ink-2);font-weight:600}
.ed-trust .ic{color:var(--ed-acc)}
/* mock profil publik + petak statistik */
.ed-shell{padding:26px}
.ed-profile{background:var(--ed-surface);border:2px solid var(--ed-acc);border-radius:16px;overflow:hidden}
.ed-profile-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 18px 12px}
.ed-profile-top .ed-kicker{font-size:.68rem;color:var(--ed-ink-2)}
.ed-profile-url{font-weight:700;font-size:.95rem;overflow-wrap:anywhere;margin-top:4px}
.ed-profile-avatar{width:52px;height:52px;border-radius:50%;background:var(--ed-ink);color:#fff;display:flex;align-items:center;justify-content:center;flex:none}
.ed-profile-avatar svg{width:24px;height:24px}
.ed-rows{display:flex;flex-direction:column;gap:10px;padding:0 18px 18px}
.ed-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--ed-surface);border:1px solid var(--ed-line);
  border-radius:10px;padding:13px 16px;font-weight:700;font-size:.95rem;color:var(--ed-ink)}
.ed-row:hover{border-color:var(--ed-acc-line);opacity:1}
.ed-row .ic{color:var(--ed-acc)}
.ed-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}
.ed-stat{background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:12px;padding:16px 12px;text-align:center}
.ed-stat b{display:block;font-size:clamp(1rem,4.2vw,1.5rem);font-weight:800;font-family:var(--ed-serif);letter-spacing:-.02em;overflow-wrap:anywhere}
.ed-stat span{display:block;font-size:.64rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--ed-mut-2);
  overflow-wrap:anywhere;word-break:break-word}
@media(max-width:960px){
  .ed-hero{grid-template-columns:minmax(0,1fr);gap:34px;padding-top:36px}
  .ed-hero-copy{max-width:none;padding-top:0}
}

/* ------------------------------------------------------- HOME: sections --- */
.ed-hl{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:36px;align-items:center;min-width:0;
  background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:24px;padding:44px 46px;box-shadow:var(--ed-shadow)}
.ed-hl h2{font-size:clamp(1.6rem,3.2vw,2.4rem);margin:14px 0 0;max-width:16ch;overflow-wrap:anywhere}
.ed-snap{background:var(--ed-surface-2);border:1px solid var(--ed-line);border-radius:16px;padding:20px;box-shadow:0 10px 30px -22px rgba(23,21,15,.35)}
.ed-snap-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:20px;align-items:start}
.ed-snap p{color:var(--ed-mut);font-size:.92rem;margin:0;max-width:34ch;overflow-wrap:anywhere}
.ed-snap-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ed-tile{background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:10px;padding:12px 10px;text-align:center}
.ed-tile b{display:block;font-family:var(--ed-serif);font-size:1.15rem;font-weight:700}
.ed-tile span{font-size:.6rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ed-mut-2)}
.ed-snap-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}
.ed-snap-cards>div{background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:10px;padding:12px;font-size:.8rem;font-weight:700;display:flex;flex-direction:column;gap:8px}
.ed-snap-cards .ic{color:var(--ed-acc)}
@media(max-width:900px){.ed-hl{grid-template-columns:minmax(0,1fr);padding:30px 22px}.ed-snap-row{grid-template-columns:minmax(0,1fr)}.ed-snap-cards{grid-template-columns:minmax(0,1fr)}}

/* feature grid editorial */
.ed-feats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:34px;min-width:0}
.ed-feat{position:relative;overflow:hidden;background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:18px;
  padding:26px 24px 28px;display:flex;flex-direction:column;gap:12px;min-height:240px}
.ed-feat:before{content:'';position:absolute;top:0;right:0;width:150px;height:150px;border-bottom-left-radius:100%;opacity:.5}
.ed-feat.tint-1:before{background:linear-gradient(225deg,#E0F2FE,transparent 70%)}
.ed-feat.tint-2:before{background:linear-gradient(225deg,#FBF3D8,transparent 70%)}
.ed-feat.tint-3:before{background:linear-gradient(225deg,#E7F0FE,transparent 70%)}
.ed-feat.tint-4:before{background:linear-gradient(225deg,#E6F7EF,transparent 70%)}
.ed-feat.tint-5:before{background:linear-gradient(225deg,var(--ulik-sky-tint),transparent 70%)}
.ed-feat.tint-6:before{background:linear-gradient(225deg,#E0F2FE,transparent 70%)}
.ed-feat-ic{width:50px;height:50px;border-radius:14px;background:var(--ed-surface);border:1px solid var(--ed-line);
  display:flex;align-items:center;justify-content:center;color:var(--ed-acc);position:relative;z-index:1;box-shadow:0 8px 18px -14px rgba(23,21,15,.4)}
.ed-feat-num{position:absolute;top:20px;right:22px;font-size:.72rem;font-weight:800;letter-spacing:.1em;color:var(--ed-mut-2);
  background:var(--ed-surface-2);border:1px solid var(--ed-line);border-radius:999px;padding:4px 11px}
.ed-feat h3{position:relative;z-index:1;margin:2px 0 0;font-size:1.22rem}
.ed-feat p{position:relative;z-index:1;color:var(--ed-mut);font-size:.93rem;margin:0}
.ed-feat-mark{position:absolute;right:-10px;bottom:-14px;color:var(--ed-ink);opacity:.06;z-index:0}
.ed-feat-mark .ic{width:120px;height:120px}
.ed-feat-mark svg{width:120px;height:120px}
@media(max-width:940px){.ed-feats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.ed-feats{grid-template-columns:1fr;gap:16px}.ed-feat{min-height:0}}

/* "lab" panel besar */
.ed-lab{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:34px;align-items:center;margin-top:22px;min-width:0;
  background:linear-gradient(150deg,#FFFDF6 0%,#F0F9FF 55%,#E0F2FE 100%);border:1px solid var(--ed-line);border-radius:24px;padding:40px 44px;box-shadow:var(--ed-shadow)}
.ed-lab h2{font-size:clamp(1.6rem,3.2vw,2.3rem);margin:14px 0 12px;max-width:18ch}
.ed-lab .ed-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.ed-tag{background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:999px;padding:7px 14px;font-size:.8rem;font-weight:700;color:var(--ed-ink-2)}
.ed-mock{border:1px solid var(--ed-line);border-radius:16px;overflow:hidden;background:var(--ed-surface);box-shadow:0 18px 40px -28px rgba(23,21,15,.4)}
.ed-mock-bar{display:flex;gap:6px;padding:11px 14px;border-bottom:1px solid var(--ed-line);background:var(--ed-surface-2)}
.ed-mock-bar i{width:10px;height:10px;border-radius:50%;background:#D8D2C4;display:block}
.ed-mock-bar i:nth-child(1){background:#F4A6A6}.ed-mock-bar i:nth-child(2){background:#F5D08A}.ed-mock-bar i:nth-child(3){background:#A6D9B8}
.ed-mock-body{padding:18px}
.ed-field{background:var(--ed-surface-2);border:1px solid var(--ed-line);border-radius:12px;padding:12px 14px}
.ed-field .ed-kicker{font-size:.62rem}
.ed-field-val{margin-top:5px;font-size:.86rem;color:var(--ed-ink-2);word-break:break-all}
.ed-mock-link{display:flex;align-items:center;gap:10px;margin-top:12px;border:1px solid var(--ed-line);border-radius:12px;padding:11px 13px}
.ed-mock-link .pill{background:var(--ed-ink);color:#fff;border-radius:999px;padding:8px 14px;font-size:.8rem;font-weight:700;white-space:nowrap}
.ed-mock-link .slot{flex:1;background:#FDF6E0;border:1px solid #EFE3BE;border-radius:999px;padding:8px 14px;font-size:.86rem;color:var(--ed-ink-2)}
.ed-mock-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
@media(max-width:900px){.ed-lab{grid-template-columns:minmax(0,1fr);padding:28px 20px}}

/* langkah / cara kerja */
.ed-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:20px;margin-top:32px;counter-reset:edstep}
.ed-step{background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:16px;padding:22px;position:relative}
.ed-step b{display:block;font-family:var(--ed-serif);font-size:1.05rem;margin:10px 0 6px}
.ed-step p{color:var(--ed-mut);font-size:.9rem;margin:0}
.ed-step .n{width:32px;height:32px;border-radius:50%;background:var(--ed-acc-soft);color:var(--ed-acc);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.85rem}

/* contoh / CTA penutup */
.ed-example{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:30px;align-items:center;background:var(--ed-surface-2);min-width:0;
  border:1px solid var(--ed-line);border-radius:24px;padding:36px 40px}
.ed-cta{background:linear-gradient(120deg,#0F172A 0%,#0369A1 60%,var(--ulik-sky-main) 100%);color:#fff;border-radius:24px;padding:52px 34px;text-align:center;box-shadow:var(--ed-shadow)}
.ed-cta h2{color:#fff;margin-bottom:10px}
.ed-cta p{color:rgba(255,255,255,.82);margin-bottom:26px}
.ed-cta .btn-primary{background:#fff;color:var(--ed-acc)}
@media(max-width:820px){.ed-example{grid-template-columns:minmax(0,1fr);padding:26px 20px}}

/* --------------------------------------------------- AUTH (login/daftar) -- */
body.pg-auth{background:var(--ed-bg);background-image:
  linear-gradient(rgba(14,165,233,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(14,165,233,.07) 1px,transparent 1px);
  background-size:34px 34px}
.ed-auth-top{max-width:1140px;margin:0 auto;padding:26px 22px 8px;display:flex;align-items:center;gap:16px}
.ed-auth-top .ed-back{margin-left:auto;display:inline-flex;align-items:center;gap:7px;font-size:.88rem;font-weight:700;color:var(--ed-ink-2)}
.ed-auth-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,520px);gap:56px;align-items:start;min-width:0;
  max-width:1140px;margin:0 auto;padding:26px 22px 70px}
.ed-auth-copy{padding-top:14px;max-width:520px;min-width:0}
.ed-auth-copy h1{margin-top:16px}
.ed-auth-copy .lead{color:var(--ed-mut);font-size:1.02rem;line-height:1.6;margin:0 0 26px}
.ed-auth-copy .ed-mini{max-width:420px}
.ed-auth-card{background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:20px;padding:34px 32px;box-shadow:var(--ed-shadow);min-width:0}
.ed-auth-card .ed-chip{margin-bottom:14px}
.ed-auth-card h1{text-align:center;font-size:clamp(1.6rem,3vw,2rem);margin:0 0 8px}
.ed-auth-card>.ed-auth-sub{text-align:center;color:var(--ed-mut);font-size:.92rem;margin:0 0 24px}
.ed-auth-card .form-stack{gap:16px}
.ed-auth-card label{font-size:.82rem;font-weight:700;letter-spacing:.02em;color:var(--ed-ink-2)}
.ed-auth-card input[type=text],.ed-auth-card input[type=email],.ed-auth-card input[type=password]{
  border:1px solid var(--ed-line-strong);border-radius:10px;padding:12px 13px;background:var(--ed-surface)}
.ed-auth-card input:focus{border-color:var(--ed-acc);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.ed-auth-card .check-line{font-size:.83rem;color:var(--ed-ink-2)}
.ed-row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ed-auth-alt{text-align:center;margin-top:18px;font-size:.9rem;color:var(--ed-mut)}
.ed-auth-alt a{font-weight:700}
@media(max-width:900px){
  .ed-auth-grid{grid-template-columns:minmax(0,1fr);gap:30px;padding-bottom:50px}
  .ed-auth-copy{order:2}
  .ed-auth-card{order:1}
  .ed-auth-copy .ed-mini{margin:0 auto}
}
@media(max-width:520px){
  .ed-row2{grid-template-columns:1fr}
  .ed-auth-card{padding:24px 16px}
  /* baris persetujuan syarat: di layar sempit teksnya harus boleh membungkus
     rapi di samping checkbox, bukan meluber keluar kartu */
  .ed-auth-card .check-line{align-items:flex-start;gap:8px}
  .ed-auth-card .check-line input{flex:none;margin-top:2px}
  .ed-auth-card .check-line a{overflow-wrap:anywhere}
}
/* Form daftar: field username = link halaman (prefix domain + cek ketersediaan live) */
.ed-field{display:flex;flex-direction:column;gap:7px}
.ed-ufield{background:var(--ed-surface-2);border:1px solid var(--ed-line);border-radius:12px;padding:12px}
.lg-card .ed-ufield{margin-bottom:16px}
.lg-card .ed-field>.lbl{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:.84rem;font-weight:700;color:#334155}
.ed-badge-lock{font-size:.68rem;font-weight:700;letter-spacing:.03em;color:#B45309;background:#FEF3C7;border:1px solid #FDE68A;border-radius:999px;padding:2px 8px}
.ed-url-input{display:flex;align-items:stretch;border:1px solid var(--ed-line-strong);border-radius:10px;background:var(--ed-surface);overflow:hidden;transition:border-color .15s,box-shadow .15s}
.ed-url-input:focus-within{border-color:var(--ed-acc);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.ed-url-input.is-ok{border-color:#16A34A;box-shadow:0 0 0 3px rgba(22,163,74,.12)}
.ed-url-input.is-bad{border-color:#E11D48;box-shadow:0 0 0 3px rgba(225,29,72,.10)}
.ed-url-input .pre{display:flex;align-items:center;padding:0 12px;background:var(--ed-surface-2);border-right:1px solid var(--ed-line-strong);color:var(--ed-ink-2);font-weight:600;font-size:.92rem;white-space:nowrap;max-width:48%;overflow:hidden;text-overflow:ellipsis}
.lg-card .ed-url-input input[type=text]{border:0;box-shadow:none;border-radius:0;flex:1;min-width:0;padding:12px 13px;outline:none;font:inherit;font-size:.95rem;font-weight:600;color:var(--ed-ink);background:transparent}
.ed-url-input .st{display:flex;align-items:center;padding:0 12px;font-weight:800}
.ed-url-input.is-ok .st{color:#16A34A}
.ed-url-input.is-bad .st{color:#E11D48}
.ed-help{font-size:.8rem;color:var(--ed-mut);line-height:1.45;margin:0}
.ed-help b{color:var(--ed-ink-2)}
.ed-status{font-size:.8rem;font-weight:600;margin:0;color:var(--ed-mut)}
.ed-status.ok{color:#15803D}
.ed-status.bad{color:#BE123C}
.ed-rules{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 0;padding:0;list-style:none}
.ed-rules li{font-size:.74rem;font-weight:600;color:var(--ed-mut);background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:999px;padding:3px 9px}
.ed-rules li.ok{color:#15803D;background:#F0FDF4;border-color:#BBF7D0}
.ed-link-preview{display:flex;align-items:center;gap:10px;background:var(--ed-acc-soft);border:1px dashed var(--ed-acc-line);border-radius:10px;padding:10px 12px;font-size:.84rem;color:var(--ed-ink-2)}
.ed-link-preview .dot{width:28px;height:28px;border-radius:50%;background:var(--ed-acc);color:#fff;display:grid;place-items:center;font-size:.8rem;flex:none}
.ed-link-preview b{color:var(--ed-ink);word-break:break-all}
.ed-pw{position:relative;display:block}
.ed-pw .eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:none;color:var(--ed-mut);cursor:pointer;padding:6px;display:grid;place-items:center}
.ed-pw .eye svg{width:18px;height:18px}
.ed-pw .eye.on{color:var(--ed-acc)}

/* ------------------------------------------------------- halaman statis --- */
body.pg-static .card,body.pg-checkout .card,body.pg-product .card,body.pg-status .card,
body.pg-payment .card,body.pg-delivery .card,body.pg-success .card{
  background:var(--ed-surface);border:1px solid var(--ed-line);border-radius:18px;box-shadow:var(--ed-shadow);backdrop-filter:none}
body.pg-static .prose h1,body.pg-static .prose h2{font-family:var(--ed-serif);font-weight:600}
body.pg-static .prose h2{font-size:1.35rem}
body.pg-static .prose ul{padding-left:20px}
body.pg-static .prose li{margin:6px 0;color:var(--ed-ink-2)}

/* ------------------------------------------------------ halaman kreator --- */
@media(max-width:380px){
  .pcard{flex-wrap:wrap}
  .pcard .pinfo{flex:1 1 100%}
  .pmeta{flex-wrap:wrap}
}
  font-weight:700;color:var(--ed-ink);padding:13px 15px}

/* --------------------------------------------- halaman produk & checkout -- */
.ed-wrap{max-width:680px;margin:0 auto;padding:34px 20px 70px}
body.pg-product .product-detail h1{font-family:var(--ed-serif);font-weight:600}
body.pg-product .pd-short{background:var(--ed-surface-2);border:1px solid var(--ed-line);border-radius:14px}
/* Tombol kembali: satu-satunya navigasi di halaman produk (navbar/footer ULik tidak dipakai
   di sini). Tombolnya memakai komponen `.btn` yang sudah ada — tidak ada gaya tombol baru. */
body.pg-product .pd-backwrap{padding-top:22px;padding-bottom:0}
body.pg-product .pd-back{display:inline-flex;align-items:center;gap:7px;min-height:40px}
body.pg-product .pd-short b{color:var(--ed-mut-2);letter-spacing:.1em}
body.pg-product .pd-price{font-family:var(--ed-serif);font-weight:700}
body.pg-product .checkout-wrap,body.pg-checkout .checkout-wrap,body.pg-status .checkout-wrap{max-width:680px;padding-top:34px}
body.pg-product .steps-box,body.pg-checkout .steps-box,body.pg-status .steps-box{background:var(--ed-surface-2);border:1px solid var(--ed-line);border-radius:14px}
body.pg-checkout h1,body.pg-payment h1,body.pg-status h1,body.pg-delivery h1,body.pg-success h1{font-family:var(--ed-serif);font-weight:600}
body.pg-checkout .buyer-summary,body.pg-checkout .pay-channel{background:var(--ed-surface-2);border-color:var(--ed-line)}
body.pg-checkout .panel{background:var(--ed-surface-2);border:1px solid var(--ed-line);box-shadow:none;border-radius:14px}
body.pg-status .price-note,body.pg-checkout .price-note{color:var(--ed-mut-2)}
body.pg-checkout .btn-primary,body.pg-product .btn-primary,body.pg-delivery .btn-primary{background:var(--ed-acc);box-shadow:none}
body.pg-checkout .buy,body.pg-product .buy,body.pg-delivery .buy{background:var(--ed-ink)}
body.pg-delivery .delivery-content{background:var(--ed-surface-2);border:1px solid var(--ed-line)}
body.pg-delivery .dl-row{background:var(--ed-surface-2);border-color:var(--ed-line)}

/* --------------------------------------------------------------- footer --- */
body.chrome-site .site-foot{border-top:1px solid var(--ed-line);background:var(--ed-surface-2);backdrop-filter:none;margin-top:60px}
body.chrome-site .foot-in{max-width:1140px;gap:34px;padding:46px 22px 24px}
body.chrome-site .foot-brand p{color:var(--ed-mut)}
body.chrome-site .foot-cs b{color:var(--ed-acc);letter-spacing:.1em}
body.chrome-site .foot-cs a,body.chrome-site .foot-col a{color:var(--ed-ink-2)}
body.chrome-site .foot-cs a:hover,body.chrome-site .foot-col a:hover{color:var(--ed-acc)}
body.chrome-site .foot-col b{font-size:.74rem;letter-spacing:.12em;color:var(--ed-mut-2)}
body.chrome-site .foot-copy{color:var(--ed-mut-2);border-top:1px solid var(--ed-line);padding-top:18px}
body.chrome-site .heart{color:var(--ed-acc)}

/* ------------------------------------------------------------ error 404 --- */
body.pg-error .err-card{background:var(--ed-surface);border:1px solid var(--ed-line);box-shadow:var(--ed-shadow)}
body.pg-error .err-code{font-family:var(--ed-serif);background:none;color:var(--ed-ink)}


/* ==========================================================================
   SHOP LINKS (v1.9) — link afiliasi marketplace
   Dashboard: tab Links + baris pengelolaan. Halaman publik: etalase 2 kolom.
   Kartu publik memakai token tema creator (--c-*), jadi otomatis ikut tema.
   ========================================================================== */
.tabs-nav{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 16px;border-bottom:1px solid var(--line);padding-bottom:2px}
.tab-link{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:12px 12px 0 0;
  font-weight:700;font-size:.9rem;color:var(--mut);text-decoration:none}
.tab-link:hover{background:rgba(14,165,233,.06);color:var(--ind);opacity:1}
.tab-link.active{background:rgba(255,255,255,.85);color:var(--ind);box-shadow:0 -2px 10px rgba(14,165,233,.10)}
.tab-count{background:var(--ulik-sky-tint);color:var(--ind);border-radius:999px;padding:1px 9px;font-size:.74rem;font-weight:800}
.tab-link.active .tab-count{background:var(--grad-soft);color:#fff}

.shop-row-in{display:flex;gap:12px;align-items:flex-start}
.shop-thumb{width:64px;height:64px;border-radius:12px;flex:none;overflow:hidden;background:var(--ulik-sky-tint);color:var(--ind);
  display:flex;align-items:center;justify-content:center}
.shop-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.shop-mp{display:inline-block;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin-bottom:2px}
.shop-price{font-weight:900;color:var(--ink)}
/* Tombol aksi (naik/turun/tampilkan/hapus) di baris tautan: di layar sempit dulu
   berdesakan sampai tombol hapus menyusut/tertutup. Sekarang punya area ketuk yang
   layak dan membungkus bila ruang tidak cukup. */
.shop-row-act{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none;min-width:96px}
.shop-row-act .sort-ctrl{flex-wrap:wrap;justify-content:flex-end;gap:2px}
.sort-ctrl .icon-btn{min-width:32px;min-height:32px;align-items:center;justify-content:center}
.linkcard .sort-ctrl{flex-wrap:wrap;justify-content:flex-end;gap:2px}
@media(max-width:420px){
  .shop-row-in{flex-wrap:wrap}
  .shop-row-act{flex-direction:row;align-items:center;justify-content:space-between;width:100%;min-width:0}
}
.addrow-in summary{list-style:none;cursor:pointer;font-weight:700;color:var(--ind);font-size:.82rem}
.addrow-in summary::-webkit-details-marker{display:none}

/* --- halaman publik: etalase Shop Links --- */
.creator-shell .shop-sec{margin-top:22px}
.creator-shell .shop-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.creator-shell .shop-ic{width:38px;height:38px;border-radius:12px;flex:none;display:flex;align-items:center;justify-content:center;
  background:var(--c-acc);color:var(--c-acc-ink)}
.creator-shell .shop-ic svg{width:20px;height:20px}
.creator-shell .shop-head b{display:block;font-size:1.05rem;color:var(--c-ink)}
.creator-shell .shop-head span{font-size:.84rem;color:var(--c-sub)}
.creator-shell .shop-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.creator-shell .shop-card{display:flex;flex-direction:column;background:var(--c-card);border:1px solid var(--c-card-border);
  border-radius:var(--c-rad);overflow:hidden;color:var(--c-ink);text-decoration:none;
  box-shadow:0 8px 22px -14px var(--c-glow);transition:transform .14s ease,box-shadow .14s ease}
.creator-shell .shop-card:hover{transform:translateY(-2px);box-shadow:0 14px 28px -14px var(--c-glow);opacity:1}
.creator-shell .shop-media{display:block;aspect-ratio:1/1;background:var(--c-pill-bg);overflow:hidden}
.creator-shell .shop-media img{width:100%;height:100%;object-fit:cover;display:block}
.creator-shell .shop-media-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  background:var(--c-acc);color:#fff;font-weight:900;font-size:1.6rem;letter-spacing:.02em}
.creator-shell .shop-body{display:flex;flex-direction:column;gap:4px;padding:11px 12px 12px}
.creator-shell .shop-body .shop-mp{font-size:.62rem;margin-bottom:0}
.creator-shell .shop-title{font-weight:700;font-size:.88rem;line-height:1.32;color:var(--c-ink);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.creator-shell .shop-price{font-size:.98rem;font-weight:900;color:var(--c-ink);margin-top:2px}
.creator-shell .shop-cta{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin-top:6px;
  background:var(--c-pill-bg);border:1px solid var(--c-line);border-radius:var(--c-rad-sm);padding:8px 10px;
  font-size:.8rem;font-weight:700;color:var(--c-pill-ink)}
.creator-shell .shop-cta svg{width:15px;height:15px}
.creator-shell .shop-card:hover .shop-cta{background:var(--c-acc);color:var(--c-acc-ink);border-color:transparent}
/* tema neo brutal: kartu kotak tegas */
.creator-shell[data-theme="neo"] .shop-card{box-shadow:4px 4px 0 var(--c-ink);border-width:2px}
.creator-shell[data-theme="neo"] .shop-card:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--c-ink)}
/* tema rata: tanpa bayangan */
.creator-shell[data-theme="mono"] .shop-card,
.creator-shell[data-theme="snow"] .shop-card,
.creator-shell[data-theme="ink"] .shop-card,
.creator-shell[data-theme="vapor"] .shop-card,
.creator-shell[data-theme="terminal"] .shop-card{box-shadow:none}
@media(max-width:380px){.creator-shell .shop-grid{gap:10px}}

/* ==========================================================================
   DASHBOARD SHELL v1.13 — Admin Panel & Creator Studio
   Sidebar PUTIH dengan grup menu, topbar dengan judul+subjudul, kartu statistik
   bertren, donut sumber kunjungan, dan daftar aktivitas. Menyesuaikan referensi
   desain yang diminta, tetap memakai warna brand ULik (indigo → violet).
   ========================================================================== */
body.pg-dash,body.pg-admin{
  background:#F8FAFC;
  background-image:radial-gradient(900px 520px at 10% -10%,rgba(56,189,248,.10),transparent 60%),
                   radial-gradient(700px 460px at 100% 0%,rgba(14,165,233,.08),transparent 55%);
  background-attachment:fixed;
}
/* v1.41.3: ADMIN PANEL berlatar biru langit (semua menu admin). Header & sidebar jadi
   kaca putih tembus pandang supaya birunya terlihat; kartu/panel tetap putih agar isi
   mudah dibaca. Creator Studio (pg-dash) tidak berubah. */
body.pg-admin{
  background:#D3EEFE;
  background-image:radial-gradient(1100px 620px at -5% -15%,rgba(14,165,233,.32),transparent 62%),
                   radial-gradient(900px 560px at 105% -5%,rgba(56,189,248,.45),transparent 60%),
                   radial-gradient(900px 520px at 50% 115%,rgba(125,211,252,.55),transparent 65%),
                   linear-gradient(180deg,#BFE6FD 0%,#D3EEFE 32%,#E4F5FF 70%,#EEF8FF 100%);
  background-attachment:fixed;
}
body.pg-admin .app-side{background:rgba(255,255,255,.8);border-right-color:rgba(186,230,253,.85);
  -webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
body.pg-admin .app-top{background:rgba(255,255,255,.62);border-bottom-color:rgba(186,230,253,.75);
  -webkit-backdrop-filter:blur(18px) saturate(170%);backdrop-filter:blur(18px) saturate(170%)}
body.pg-admin .panel,body.pg-admin .stat-card{border-color:rgba(255,255,255,.95)}
@media (max-width:900px){body.pg-admin .app-side{background:rgba(255,255,255,.96)}}
.app-shell{gap:0}

/* --- sidebar --- */
.app-side.app-side,body .app-side{
  width:258px;background:#fff;color:var(--ink-2);
  border-right:1px solid var(--line);box-shadow:0 10px 40px -30px rgba(15,23,42,.35)}
.side-brand{padding:18px 18px 14px;border-bottom:1px solid var(--line)}
.side-brand-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.side-brand .ulik-logo{color:var(--ink)}
.side-sub{display:block;margin-top:4px;font-size:.74rem;color:var(--mut-2);font-weight:600}
.side-user{display:flex;align-items:center;gap:11px;padding:14px 18px;border-bottom:1px solid var(--line)}
.side-user .avatar{border-radius:50%}
.su-meta{min-width:0}
.su-meta b{display:block;font-size:.88rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.su-meta span{display:block;font-size:.76rem;color:var(--mut)}
.side-group{display:block;padding:16px 18px 6px;font-size:.66rem;font-weight:800;letter-spacing:.14em;color:var(--mut-2);text-transform:uppercase}
.side-nav{padding:4px 12px 12px;gap:2px}
.sn{border-radius:11px;padding:10px 13px;color:var(--ink-2);font-size:.89rem}
.sn .ic{color:var(--mut)}
.sn:hover{background:#F0F9FF;color:var(--ind);opacity:1}
.sn:hover .ic{color:var(--ind)}
.sn.active{background:var(--grad-soft);color:#fff;box-shadow:0 10px 22px -12px rgba(14,165,233,.75)}
.sn.active .ic{color:#fff}
.side-foot{border-top:1px solid var(--line);padding:12px}
.side-help{margin:4px 4px 10px;padding:14px;border-radius:14px;background:#F0F9FF;border:1px solid rgba(14,165,233,.16)}
.side-help b{display:flex;align-items:center;gap:7px;font-size:.82rem;color:var(--ink)}
.side-help p{margin:6px 0 10px;font-size:.76rem;color:var(--mut)}
.side-help .btn{width:100%}
.sn-form{padding:0}
.sn-btn{color:var(--ink-2)}
.sn-btn:hover{background:#FEF2F2;color:#B91C1C}

/* --- topbar --- */
.app-top{background:rgba(255,255,255,.86);border-bottom:1px solid var(--line);padding:13px 24px;gap:14px}
.app-top-head{min-width:0;flex:1}
.app-top-title{font-size:1.06rem;font-weight:800}
.app-top-sub{display:block;font-size:.76rem;color:var(--mut);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drawer-btn{border:1px solid var(--line);border-radius:10px;padding:7px;background:#fff;color:var(--ink-2);display:none}
.app-top-user{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 14px 5px 6px;box-shadow:0 6px 18px -14px rgba(15,23,42,.4)}
.atu-wrap{display:flex;flex-direction:column;line-height:1.15}
.atu-name{font-weight:700;font-size:.85rem;color:var(--ink)}
.atu-role{font-size:.7rem;color:var(--mut)}
.app-content{padding:24px;max-width:1280px}

/* --- kartu statistik baru --- */
.grid-stats{gap:18px;margin-bottom:20px}
.stat-card{flex-direction:column;align-items:stretch;gap:0;padding:18px 20px;background:#fff;border:1px solid var(--line);
  border-radius:18px;box-shadow:0 12px 30px -24px rgba(15,23,42,.45);backdrop-filter:none}
.stat-card .stat-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.stat-card .stat-label{font-size:.8rem;font-weight:700;color:var(--mut)}
.stat-card .stat-ic{width:38px;height:38px;border-radius:12px;background:#F0F9FF;color:var(--ind);display:flex;
  align-items:center;justify-content:center;flex:none}
.stat-card .stat-big{font-size:1.5rem;font-weight:900;letter-spacing:-.02em;margin-top:10px;color:var(--ink)}
.stat-card .stat-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.trend-chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 9px;font-size:.74rem;font-weight:800}
.trend-chip.up{background:#ECFDF5;color:#047857}
.trend-chip.down{background:#FEF2F2;color:#B91C1C}
.trend-chip.down .ic{transform:scaleY(-1)}

/* --- panel & tabel di dashboard --- */
.panel{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 12px 30px -26px rgba(15,23,42,.45);backdrop-filter:none}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.panel-head b{font-size:.98rem}
.dash-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:18px;margin-bottom:18px}
.dash-grid.eq{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:1000px){.dash-grid,.dash-grid.eq{grid-template-columns:minmax(0,1fr)}}

/* daftar aktivitas */
.act-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.act-list li{display:flex;gap:11px;align-items:flex-start;padding:10px 2px;border-bottom:1px dashed var(--line)}
.act-list li:last-child{border-bottom:0}
.act-ic{width:30px;height:30px;border-radius:10px;background:#F0F9FF;color:var(--ind);display:flex;align-items:center;justify-content:center;flex:none}
.act-body{flex:1;min-width:0;font-size:.85rem;color:var(--ink-2)}
.act-time{display:block;font-size:.72rem;color:var(--mut-2);margin-top:2px}

/* ---------------------------------------------------------------------------
   CREATOR STUDIO HUB — FASE 1 redesign dashboard (memakai token --ulik-*)
   ---------------------------------------------------------------------------
   Menggantikan `.dash-hero` (kartu sambutan lama) dengan susunan dua sisi:
   kiri = judul + subjudul + chip tautan halaman; kanan = tombol utama + pintasan.
   SEMUA nilai warna/radius diambil dari design token Fase 0, bukan nilai baru.
   `.hero-badge` lama sengaja DIKECUALIKAN (tidak dipakai lagi) — badge kecil di atas
   judul kini `.uh-badge` supaya seluruh komponen memakai satu awalan yang konsisten.
   --------------------------------------------------------------------------- */
.ulik-creator-hub{position:relative;overflow:hidden;display:grid;align-items:center;gap:20px;
  grid-template-columns:minmax(0,1fr) auto;padding:20px;margin-bottom:20px;
  border:1px solid #E2E8F0;border-radius:var(--radius-bento);
  background-color:#fff;
  /* gradasi tipis dari token sky-tint di pojok kiri; memakai background-image (bukan
     shorthand) supaya warna dasar putih tidak ikut tertimpa gradien. */
  background-image:linear-gradient(135deg,var(--ulik-sky-tint) 0%,rgba(224,242,254,0) 46%)}
.ulik-creator-hub .uh-left{min-width:0}
.ulik-creator-hub .uh-badge{display:inline-flex;align-items:center;gap:7px;background:#fff;
  border:1px solid var(--ulik-sky-border);border-radius:999px;padding:4px 12px;font-size:.72rem;
  font-weight:800;color:var(--ulik-sky-main);margin-bottom:10px}
.ulik-creator-hub .uh-title{margin:0 0 4px;font-size:20px;font-weight:800;color:var(--ulik-slate-main)}
.ulik-creator-hub .uh-sub{margin:0;font-size:.9rem;color:var(--ulik-slate-muted);max-width:52ch}
.ulik-creator-hub .uh-note{margin-top:10px;font-size:.82rem;color:var(--ulik-slate-muted)}
/* Chip tautan halaman publik + tombol Salin (meneruskan `ulikCopy()` dari app.js). */
.ulik-creator-hub .uh-link{display:flex;align-items:center;gap:8px;max-width:100%;margin-top:12px;
  background:#F8FAFC;border:1px solid #E2E8F0;border-radius:var(--radius-button);padding:4px 4px 4px 12px}
.ulik-creator-hub .uh-link input{flex:1 1 auto;min-width:0;width:100%;border:0 !important;outline:none;margin:0;
  padding:6px 0;background:transparent;color:var(--ulik-slate-muted);font-size:.82rem;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;text-overflow:ellipsis}
.ulik-creator-hub .uh-link button{flex:none;border:0;border-radius:8px;background:var(--ulik-sky-tint);
  color:var(--ulik-sky-main);font-weight:700;font-size:.78rem;padding:7px 12px;cursor:pointer;
  font-family:var(--font)}
.ulik-creator-hub .uh-link button:hover{background:var(--ulik-sky-border)}
/* Sisi kanan: cluster tombol utama, lalu baris pintasan cepat di bawahnya. */
.ulik-creator-hub .uh-right{display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.ulik-creator-hub .uh-btns{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.ulik-creator-hub .uh-quick{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.ulik-creator-hub .uh-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:44px;padding:11px 18px;border:1.5px solid transparent;border-radius:var(--radius-button);
  font-weight:700;font-size:.86rem;line-height:1.2;text-align:center}
.ulik-creator-hub .uh-btn-primary{background:var(--ulik-sky-light);color:#fff}
.ulik-creator-hub .uh-btn-primary:hover{color:#fff;opacity:.92}
.ulik-creator-hub .uh-btn-outline{background:#fff;border-color:var(--ulik-sky-light);color:var(--ulik-sky-main)}
.ulik-creator-hub .uh-btn-outline:hover{color:var(--ulik-sky-main);border-color:var(--ulik-sky-main)}
.ulik-creator-hub .uh-pill{display:inline-flex;align-items:center;min-height:28px;padding:5px 12px;
  background:#fff;border:1px solid #CBD5E1;border-radius:999px;font-size:11px;font-weight:700;
  color:var(--ulik-slate-muted);line-height:1.2}
.ulik-creator-hub .uh-pill:hover{color:var(--ulik-sky-main);border-color:var(--ulik-sky-light);opacity:1}
/* Layar sempit: satu kolom, tombol/pintasan rata kiri (susunan mockup mobile). */
@media(max-width:900px){
  .ulik-creator-hub{grid-template-columns:minmax(0,1fr);gap:16px}
  .ulik-creator-hub .uh-right{align-items:stretch}
  .ulik-creator-hub .uh-btns,.ulik-creator-hub .uh-quick{justify-content:flex-start}
  .ulik-creator-hub .uh-btn{flex:1 1 auto}
}
@media(max-width:420px){
  /* Catatan: padding versi sempit diatur di blok DASHBOARD SHELL (≤900px) bersama
     komponen dashboard lain — di sini hanya susunan tombol/chip supaya tidak ada dua
     nilai padding yang saling menimpa pada rentang breakpoint yang sama. */
  .ulik-creator-hub .uh-btn{flex:1 1 100%}
  .ulik-creator-hub .uh-link{width:100%}
}

/* --- MOBILE: sidebar jadi drawer putih, topbar dirapikan --- */
@media(max-width:900px){
  .drawer-btn{display:inline-flex}
  .side-close{color:var(--mut);background:#F0F9FF}
  .side-close:hover{background:var(--ulik-sky-tint);color:var(--ind)}
  .drawer-backdrop{background:rgba(15,23,42,.45)}
  .app-top{padding:11px 14px;gap:10px}
  .app-top-sub{display:none}
  .app-top-user{padding:4px 10px 4px 4px}
  .atu-wrap{display:none}
  .app-content{padding:14px}
  /* Creator Studio Hub (Fase 1) — versi sempit: padding & judul lebih rapat. */
  .ulik-creator-hub{padding:18px}
  .ulik-creator-hub .uh-title{font-size:18px}
  .stat-card{padding:15px 16px}
  .stat-card .stat-big{font-size:1.3rem}
  .grid-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
}
@media(max-width:420px){
  .grid-stats{grid-template-columns:minmax(0,1fr)}
}

/* ==========================================================================
   DESIGN PAGE (Appearance System) — panel pengaturan tampilan
   ========================================================================== */
.ds-tabs{display:flex;gap:6px;flex-wrap:wrap;padding-bottom:12px;margin-bottom:16px;
  border-bottom:1px solid var(--line)}
.ds-tab{padding:7px 14px;border-radius:999px;font-size:.84rem;font-weight:700;color:var(--ink-2);
  background:#F0F9FF;border:1px solid transparent;text-decoration:none}
.ds-tab:hover{background:#E2E8F0;opacity:1}
.ds-tab.active{background:var(--grad-soft);color:#fff}
.ds-block{margin-top:10px}
.ds-swatch{height:74px;border-radius:14px;border:1px solid var(--line);margin-top:8px;background-size:cover}
.ds-swatches{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 12px}
.ds-sw{width:30px;height:30px;border-radius:9px;border:1px solid rgba(15,23,42,.15);cursor:pointer;padding:0}
.ds-sw:hover{transform:translateY(-2px)}
/* daftar stiker */
.ds-stickers{list-style:none;margin:0 0 6px;padding:0;display:flex;flex-direction:column;gap:10px}
.ds-sticker{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:10px 12px}
.ds-stick-view{width:54px;height:54px;flex:none;display:flex;align-items:center;justify-content:center;
  background:#F0F9FF;border-radius:12px;overflow:hidden}
.ds-stick-view img{max-width:100%;max-height:100%;display:block}
.ds-stick-emoji{font-size:26px;line-height:1}
.ds-stick-meta{flex:1;min-width:120px;display:flex;flex-direction:column}
.ds-stick-acts{display:flex;gap:6px;flex-wrap:wrap}
/* picker emoji */
.ds-set{margin-top:10px}
.ds-set-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px}
.ds-emoji{cursor:pointer;margin:0}
.ds-emoji input{position:absolute;opacity:0;width:0;height:0}
.ds-emoji span{display:flex;align-items:center;justify-content:center;width:42px;height:42px;font-size:22px;
  background:#F0F9FF;border:1px solid var(--line);border-radius:12px;transition:transform .12s,border-color .12s}
.ds-emoji:hover span{transform:translateY(-2px)}
.ds-emoji input:checked + span{border-color:var(--ind);box-shadow:0 0 0 2px rgba(14,165,233,.18);background:var(--ulik-sky-tint)}
.ds-emoji input:focus-visible + span{outline:2px solid var(--ind);outline-offset:2px}
@media(max-width:560px){
  .ds-tab{padding:6px 11px;font-size:.8rem}
  .ds-sticker{gap:8px}
}

/* Tombol buka Page Preview di halaman Design hanya muncul saat panel pratinjau
   disembunyikan CSS (layar sempit). Murni CSS — tidak bergantung JavaScript,
   sama seperti pola #btnPreviewMobile di My Page. */
#dsPreviewBtn{display:none}
@media(max-width:1119px){#dsPreviewBtn{display:inline-flex}}

/* --- DESIGN: ringkasan "Tema aktif" (tab Theme) -------------------------- */
.ds-cur{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:10px 12px;margin-bottom:14px}
.ds-cur-sw{position:relative;width:62px;height:52px;flex:none;border-radius:10px;overflow:hidden;
  border:1px solid rgba(15,23,42,.10);display:block}
.ds-cur-sw .ts-ring{left:7px;top:7px;width:15px;height:15px}
.ds-cur-btn{position:absolute;right:8px;bottom:9px;width:22px;height:7px;border-radius:4px;background:var(--c-acc,var(--ulik-sky-main))}
.ds-cur-meta{flex:1;min-width:150px;display:flex;flex-direction:column}
/* kotak pilihan tema: rapatkan sedikit di kolom builder agar 21 tema tidak terlalu tinggi */
#dsThemeForm .theme-pick{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:9px}
@media(max-width:560px){
  #dsThemeForm .theme-pick{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:7px}
  #dsThemeForm .ts-desc{display:none}
  .ds-cur{padding:9px 10px;gap:10px}
}

/* ==========================================================================
   WALLPAPER LIBRARY (Fase 4)
   Grid yang dipakai DUA tempat: picker user di Design → Wallpaper, dan daftar
   di Admin → Wallpaper Library. Satu kelas, satu tampilan, konsisten.
   ========================================================================== */
.wlib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px;margin-top:10px}
.wlib-card{display:flex;flex-direction:column;gap:6px;cursor:pointer;margin:0;padding:8px;
  background:#fff;border:2px solid var(--line);border-radius:16px;transition:border .15s,box-shadow .15s}
.wlib-card:hover{border-color:rgba(14,165,233,.45)}
.wlib-card:has(input:checked),.wlib-card.sel{border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.wlib-card input{position:absolute;opacity:0;pointer-events:none}
.wlib-card:has(input:focus-visible){outline:2px solid var(--ind);outline-offset:2px}
.wlib-thumb{position:relative;display:block;width:100%;height:76px;border-radius:11px;overflow:hidden;
  background:#F0F9FF;border:1px solid rgba(15,23,42,.08)}
.wlib-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.wlib-ph{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#94A3B8}
.wlib-tag{position:absolute;left:6px;top:6px;background:var(--grad-soft);color:#fff;font-size:.62rem;
  font-weight:800;border-radius:999px;padding:2px 8px}
.wlib-name{font-size:.78rem;font-weight:700;color:var(--ink-2);line-height:1.25;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.wlib-state{font-size:.66rem;color:var(--mut-2)}
.wlib-card.is-off{opacity:.55}
.wlib-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.wlib-inline{display:flex;gap:6px;align-items:center;margin:0}
.wlib-inline input[type=text]{min-width:0;flex:1}
@media(max-width:560px){
  .wlib-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px}
  .wlib-thumb{height:64px}
}

/* ==========================================================================
   BUTTONS — override eksplisit user (Design → Buttons, Fase 5)
   --------------------------------------------------------------------------
   Blok ini SENGAJA diletakkan PALING AKHIR file: aturan tema (mis. hard shadow
   `neo`, atau `mono/snow/ink/vapor/terminal` yang mematikan bayangan) punya
   spesifisitas yang sama, jadi yang menang adalah yang TERAKHIR. Dengan posisi
   ini pilihan tombol user selalu menang atas preset tema.

   Atribut `data-btn` / `data-btn-shadow` HANYA ditulis bila user benar-benar
   mengatur tombol (lihat Appearance::shellData()), jadi tampilan default tidak
   berubah sama sekali.

   Elemen yang memang bergaya tombol di halaman creator: kartu link (.btnlink),
   kartu produk (.pcard), CTA "Lihat Detail" (.view-detail), kartu Shop Links
   (.shop-card) dan CTA "Lihat Produk" (.shop-cta). Komponen yang secara desain
   BUKAN tombol (avatar, chip sosial, blok teks, stiker, pembatas) tidak disentuh.
   ========================================================================== */
.creator-shell[data-btn="1"] .btnlink{
  background:var(--c-btn-bg,var(--c-card));
  /* LONGHAND, bukan shorthand: kalau salah satu var() jadi nilai kosong (mis.
     `--c-btn-border: var(--c-acc-solid)` saat token itu belum ada), shorthand membuat
     SELURUH deklarasi batal pada computed-value time sehingga lebar/garis jatuh ke
     aturan lama. Dengan longhand, hanya bagian yang bermasalah yang terdampak. */
  border-width:var(--c-btn-bw,1px);
  border-style:solid;
  border-color:var(--c-btn-border,var(--c-card-border));
  color:var(--c-btn-ink,var(--c-ink));
  border-radius:var(--c-btn-rad,var(--c-rad))}
.creator-shell[data-btn="1"] .btnlink .bl-sub,
.creator-shell[data-btn="1"] .btnlink .bl-arrow{color:var(--c-btn-ink,var(--c-sub));opacity:.78}
.creator-shell[data-btn="1"] .pcard{border-radius:var(--c-btn-rad,calc(var(--c-rad) + 2px))}
.creator-shell[data-btn="1"] .view-detail{
  background:var(--c-btn-bg,var(--grad-soft));color:var(--c-btn-ink,var(--ind));
  border-width:var(--c-btn-bw,0);border-style:solid;
  border-color:var(--c-btn-border,transparent);
  border-radius:var(--c-btn-rad,999px)}
.creator-shell[data-btn="1"] .shop-card{border-radius:var(--c-btn-rad,var(--c-rad))}
.creator-shell[data-btn="1"] .shop-cta{
  background:var(--c-btn-bg,var(--c-pill-bg));color:var(--c-btn-ink,var(--c-pill-ink));
  border-width:var(--c-btn-bw,1px);border-style:solid;
  border-color:var(--c-btn-border,var(--c-line));
  border-radius:var(--c-btn-rad,var(--c-rad-sm))}
/* hover: efek sorot tetap ada, tapi warna pilihan user tidak hilang */
.creator-shell[data-btn="1"] .pcard-link:hover .view-detail,
.creator-shell[data-btn="1"] .shop-card:hover .shop-cta{filter:brightness(1.07)}
/* bayangan (hanya bila user memilih; lihat Appearance::hasButtonShadowOverride) */
.creator-shell[data-btn-shadow="1"] .btnlink,
.creator-shell[data-btn-shadow="1"] .pcard,
.creator-shell[data-btn-shadow="1"] .shop-card{box-shadow:var(--c-btn-shadow)}
.creator-shell[data-btn-shadow="1"] .btnlink:hover,
.creator-shell[data-btn-shadow="1"] .pcard-link:hover,
.creator-shell[data-btn-shadow="1"] .shop-card:hover{box-shadow:var(--c-btn-shadow-h)}
.creator-shell[data-btn-shadow="1"] .view-detail,
.creator-shell[data-btn-shadow="1"] .shop-cta{box-shadow:none}

/* --- panel Design → Buttons: kartu pilihan dengan mini-preview ------------- */
.bs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;margin:8px 0 4px}
.bs-opt{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;margin:0;padding:9px 7px;
  background:#fff;border:2px solid var(--line);border-radius:14px;text-align:center;transition:border .15s,box-shadow .15s}
.bs-opt:hover{border-color:rgba(14,165,233,.45)}
.bs-opt:has(input:checked){border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.bs-opt input{position:absolute;opacity:0;pointer-events:none}
.bs-opt:has(input:focus-visible){outline:2px solid var(--ind);outline-offset:2px}
.bs-opt-name{font-size:.72rem;font-weight:800;color:var(--ink-2)}
.bs-prev{width:100%;height:30px;display:flex;align-items:center;justify-content:center}
.bs-btn{width:78px;height:22px;display:flex;align-items:center;justify-content:center;font-size:.5rem;
  font-weight:800;letter-spacing:.02em}
.bs-color{display:flex;align-items:center;gap:6px;margin:6px 0 0}
.bs-color input[type=color]{width:38px;height:34px;padding:2px;border:1px solid var(--line);border-radius:9px;background:#fff;flex:none}
.bs-color input[type=text]{flex:1;min-width:0}
@media(max-width:560px){
  .bs-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}
  .bs-btn{width:64px}
}

/* ==========================================================================
   TEXT / TYPOGRAPHY — perluasan jangkauan token (Design → Text, Fase 6)
   --------------------------------------------------------------------------
   Token yang dipakai SUDAH ADA sejak Fase 2: `--c-head-font` (Title Font),
   `--c-font-body` (Page Font), `--c-text-scale` (ukuran). Blok ini hanya
   MEMPERLUAS elemen yang mengikutinya + menyeragamkan ukuran yang sebelumnya
   tidak ikut skala. TIDAK ada token/sistem baru.

   Aturan `[data-title="1"]` HANYA menyala bila creator memilih Title Font sendiri
   (lihat Appearance::shellData()), jadi tema tetap memakai gaya aslinya untuk user
   yang belum mengatur apa pun — termasuk tema yang punya font judul serif sendiri.
   ========================================================================== */
/* Judul-judul lain yang mengikuti TITLE FONT saat creator memilihnya */
.creator-shell[data-title="1"] .pinfo h3,
.creator-shell[data-title="1"] .pb-text h1,
.creator-shell[data-title="1"] .pb-text h2,
.creator-shell[data-title="1"] .pb-text h3,
.creator-shell[data-title="1"] .shop-title{font-family:var(--c-head-font)}
/* Ukuran yang sebelumnya tidak ikut skala teks (Shop Links) */
.creator-shell .shop-title{font-size:calc(.88rem * var(--c-text-scale,1))}
.creator-shell .shop-price{font-size:calc(.98rem * var(--c-text-scale,1))}
.creator-shell .shop-body .shop-mp{font-size:calc(.62rem * var(--c-text-scale,1))}
.creator-shell .shop-cta{font-size:calc(.8rem * var(--c-text-scale,1))}
/* CATATAN: judul di dalam blok teks SENGAJA tidak diberi ukuran eksplisit — sebelumnya
   pun tidak ada (memakai ukuran bawaan peramban) sehingga menambahkannya akan mengubah
   tampilan user yang belum pernah mengatur apa pun. Yang ditambahkan hanya FONT-nya,
   itupun hanya bila creator memilih Title Font sendiri (lihat [data-title="1"] di atas). */
/* Preview HP: samakan agar pratinjau == halaman publik */
.phone-page .shop-title{font-size:calc(.72rem * var(--c-text-scale,1))}
.phone-page .shop-price{font-size:calc(.79rem * var(--c-text-scale,1))}
.phone-page .shop-body .shop-mp{font-size:calc(.55rem * var(--c-text-scale,1))}
.phone-page .shop-cta{font-size:calc(.66rem * var(--c-text-scale,1))}
.phone-page .phone-socials svg{width:calc(15px * var(--c-text-scale,1));height:calc(15px * var(--c-text-scale,1))}

/* --- panel Design → Text: kartu pilihan font dengan mini-preview ------------- */
.tx-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:8px 0 4px}
.tx-card{display:flex;flex-direction:column;gap:6px;cursor:pointer;margin:0;padding:10px 11px;
  background:#fff;border:2px solid var(--line);border-radius:14px;transition:border .15s,box-shadow .15s}
.tx-card:hover{border-color:rgba(14,165,233,.45)}
.tx-card:has(input:checked){border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.tx-card input{position:absolute;opacity:0;pointer-events:none}
.tx-card:has(input:focus-visible){outline:2px solid var(--ind);outline-offset:2px}
.tx-sample{font-size:1.06rem;line-height:1.28;color:var(--c-ink,var(--ink));overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.tx-sample small{display:block;font-size:.68rem;color:var(--c-sub,var(--mut-2));font-weight:600;margin-top:3px}
.tx-card-name{font-size:.74rem;font-weight:800;color:var(--ink-2)}
.tx-card-desc{font-size:.64rem;color:var(--mut-2);line-height:1.25}
.tx-scale{display:flex;align-items:center;gap:10px;margin-top:6px}
.tx-scale input[type=range]{flex:1;min-width:0}
.tx-scale-val{font-weight:800;color:var(--ind);min-width:52px;text-align:right;font-size:.86rem}
.tx-preview-note{background:#F0F9FF;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-top:12px}
.tx-preview-note b{font-size:.82rem}
.tx-preview-note p{margin:4px 0 0;font-size:.8rem;color:var(--ink-2);line-height:1.45}
.tx-real-title{font-weight:800;color:var(--c-ink,var(--ink));font-size:1.02rem}
.tx-real-body{color:var(--c-sub,var(--mut))}
@media(max-width:560px){
  .tx-cards{grid-template-columns:repeat(auto-fill,minmax(126px,1fr));gap:8px}
  .tx-sample{font-size:.96rem}
}

/* ==========================================================================
   COLORS — panel warna global (Fase 7)
   --------------------------------------------------------------------------
   Kartu per warna dengan contoh visual NYATA: contoh memakai token tema yang
   di-inline (Themes::cssVars) + token warna terpilih, jadi yang terlihat di kartu
   adalah nilai yang sama dengan yang dipakai halaman publik. Token yang dipakai
   SEMUA sudah ada sejak Fase 2 — tidak ada token/sistem warna baru di sini.
   ========================================================================== */
.col-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-top:12px}
.col-head{display:flex;flex-direction:column;gap:2px}
.col-head b{font-size:.88rem}
.col-preview{position:relative;height:62px;border-radius:11px;margin:10px 0;overflow:hidden;
  background-color:var(--c-page-color,transparent);
  background-image:var(--c-page,var(--page,none));
  border:1px solid var(--c-line,var(--line))}
.col-prev-card{position:absolute;left:8px;right:8px;bottom:8px;height:22px;border-radius:var(--c-rad-sm,8px);
  background:var(--c-card,rgba(255,255,255,.92));border:1px solid var(--c-card-border,rgba(0,0,0,.08));
  display:flex;flex-direction:column;justify-content:center;gap:3px;padding:0 6px}
.col-prev-line{height:3px;border-radius:2px;width:64%;background:var(--c-ink,#333);opacity:.55}
.col-prev-line.w2{width:40%;opacity:.3}
.col-prev-btn{position:absolute;right:14px;bottom:14px;width:26px;height:8px;border-radius:4px;
  background:var(--c-acc-solid,var(--c-acc,var(--ulik-sky-main)))}
.col-input{display:flex;align-items:center;gap:8px}
.col-input input[type=color]{width:38px;height:34px;padding:2px;border:1px solid var(--line);border-radius:9px;background:#fff;flex:none}
.col-input input[type=text]{flex:1;min-width:0}
.col-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:8px}
.col-meta .mini-note{display:inline-flex;align-items:center;gap:6px}
.col-dot{width:13px;height:13px;border-radius:4px;border:1px solid rgba(15,23,42,.18);display:inline-block;flex:none}
.col-note{background:#FEF3C7;border:1px solid #F59E0B;color:#92400E;border-radius:10px;
  padding:7px 10px;font-size:.74rem;line-height:1.4;margin-top:8px}
.col-note a{color:inherit;font-weight:700}
@media(max-width:560px){
  .col-card{padding:11px 12px}
  .col-preview{height:56px}
}

/* ==========================================================================
   STICKERS — panel Design (Fase 8)
   ========================================================================== */
.ds-sticker.is-off{opacity:.55}
.ds-stick-edit{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;width:100%;
  border-top:1px dashed var(--line);margin-top:8px;padding-top:8px}
.ds-stick-edit label{margin:0;min-width:0;flex:1 1 120px;font-size:.72rem;color:var(--mut-2)}
.ds-stick-edit select{width:100%}
.ds-layer-badge{background:var(--ulik-sky-tint);color:var(--ind);border-radius:999px;padding:1px 8px;
  font-size:.66rem;font-weight:800}
.ds-stick-count{font-size:.72rem;color:var(--mut-2);font-weight:700}
@media(max-width:560px){
  .ds-stick-edit{gap:6px}
  .ds-stick-edit label{flex:1 1 100px}
}

/* ==========================================================================
   FOOTER — Platform Footer (wajib) + Custom Footer (Fase 9)
   --------------------------------------------------------------------------
   Platform Footer dan Custom Footer memakai markup yang SAMA dengan halaman publik
   (pb_footer_platform / pb_footer_custom), jadi panel hanya perlu tata letak.
   ========================================================================== */
.ft-locked{background:#F0F9FF;border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.ft-locked-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.ft-locked-head b{display:inline-flex;align-items:center;gap:6px;font-size:.84rem}
.ft-lock-badge{background:#E2E8F0;color:var(--ulik-sky-main);border-radius:999px;padding:3px 10px;
  font-size:.68rem;font-weight:800;letter-spacing:.02em}
.ft-locked-preview{background:#fff;border:1px dashed rgba(14,165,233,.35);border-radius:12px;
  padding:10px 12px;margin-top:9px;text-align:center;font-size:.8rem;color:var(--mut-2);
  word-break:break-word}
.ft-combo{margin-top:12px}
.ft-combo-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-top:6px;
  text-align:center;font-size:.8rem;color:var(--mut-2);word-break:break-word}
.ft-combo-platform{opacity:.85}
/* Custom footer di PREVIEW: perataan + pembungkusan teks panjang supaya tidak meluber */
.phone-foot[data-foot="left"]{text-align:left}
.phone-foot .cfoot-custom{margin-bottom:4px}
.phone-foot .cfoot-text{word-break:break-word}
.phone-foot .cfoot-links{word-break:break-word}
/* Custom footer di halaman publik: jangan sampai kata panjang/tautan meluber di HP */
.creator-foot .cfoot-custom{max-width:620px;margin-left:auto;margin-right:auto}
.creator-foot .cfoot-text,.creator-foot .cfoot-links{word-break:break-word}
.creator-foot{overflow-wrap:anywhere}
@media(max-width:560px){
  .ft-locked{padding:11px 12px}
  .ft-locked-preview{padding:9px 10px;font-size:.76rem}
}

/* ==========================================================================
   NAVIGASI TAB MY PAGE — Blocks · Design · Settings (Fase E)
   --------------------------------------------------------------------------
   Hanya navigasi: tiga tautan halaman biasa (bukan tab JavaScript), jadi
   back/forward peramban bekerja normal. Gaya mengikuti design system dashboard
   (kaca + aksen indigo→violet) dan tidak menyentuh halaman lain.
   Di layar sempit ketiga tab dibagi rata (flex:1) dengan teks yang memendek
   sendiri (ellipsis) sehingga TIDAK pernah menimbulkan gulir horizontal.
   ========================================================================== */
.mp-tabs{display:flex;gap:6px;align-items:stretch;background:var(--glass);border:1px solid rgba(255,255,255,.8);
  border-radius:16px;padding:6px;margin-bottom:20px;max-width:520px;
  box-shadow:0 8px 26px -18px rgba(14,165,233,.45)}
.mp-tab{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;gap:7px;
  padding:10px 12px;border-radius:12px;font-weight:800;font-size:.88rem;color:var(--ink-2);
  text-decoration:none;transition:background .15s,color .15s}
.mp-tab:hover{background:rgba(14,165,233,.08);color:var(--ind);opacity:1}
.mp-tab .ic{width:16px;height:16px;flex:none}
.mp-tab span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-tab.is-active{background:var(--grad-soft);color:#fff;box-shadow:0 8px 18px -10px rgba(14,165,233,.7)}
.mp-tab:focus-visible{outline:2px solid var(--ind);outline-offset:2px}
@media(max-width:560px){
  .mp-tabs{max-width:none;gap:4px;padding:5px;margin-bottom:16px}
  .mp-tab{padding:9px 8px;font-size:.8rem;gap:5px}
  .mp-tab .ic{width:15px;height:15px}
}

/* ==========================================================================
   BLOK VIDEO (tipe `video`) — Fase F
   --------------------------------------------------------------------------
   Kartu yang MENAUTKAN ke URL video (tanpa iframe/embed). Karena thumbnail tidak
   diambil dari layanan luar, "thumbnail" digambar sendiri: kotak berwarna platform
   + ikon play. Semua warna/radius/bayangan tetap memakai token tema creator
   (--c-card/--c-card-border/--c-rad/--c-glow/--c-ink/--c-sub) — bukan sistem
   desain baru. Kartu memakai flex + min-width:0 dan gambar/tombol berukuran tetap,
   jadi tidak pernah menimbulkan gulir horizontal.
   ========================================================================== */
.creator-shell .pvvideo{display:flex;gap:14px;align-items:center;background:var(--c-card);
  border:1px solid var(--c-card-border);border-radius:var(--c-rad);padding:12px;color:var(--c-ink);
  text-decoration:none;box-shadow:0 10px 28px -12px var(--c-glow);max-width:100%;
  transition:transform .14s ease,box-shadow .14s ease}
.creator-shell .pvvideo:hover{transform:translateY(-2px);box-shadow:0 16px 34px -12px var(--c-glow);opacity:1}
.creator-shell .pvvideo-thumb{position:relative;flex:none;width:96px;height:72px;border-radius:var(--c-rad-sm);
  background:var(--pv-color,#EF4444);display:flex;align-items:center;justify-content:center;overflow:hidden}
.creator-shell .pvvideo-ph{font-weight:900;font-size:1.5rem;color:rgba(255,255,255,.85);letter-spacing:.02em}
.creator-shell .pvvideo-play{position:absolute;right:6px;bottom:6px;width:26px;height:26px;border-radius:50%;
  background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center}
.creator-shell .pvvideo-play svg{width:13px;height:13px}
.creator-shell .pvvideo-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.creator-shell .pvvideo-mp{font-size:calc(.66rem * var(--c-text-scale));font-weight:800;letter-spacing:.06em;
  text-transform:uppercase;color:var(--c-sub)}
.creator-shell .pvvideo-title{font-weight:800;font-size:calc(.98rem * var(--c-text-scale));
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.creator-shell .pvvideo-host{font-size:calc(.76rem * var(--c-text-scale));color:var(--c-sub);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.creator-shell .pvvideo-cta{display:inline-flex;align-items:center;gap:6px;margin-top:6px;align-self:flex-start;
  background:var(--c-acc);color:var(--c-acc-ink);border-radius:999px;padding:6px 12px;
  font-size:calc(.76rem * var(--c-text-scale));font-weight:800}
.creator-shell .pvvideo-cta svg{width:12px;height:12px}
/* di dalam bingkai HP (preview) kartu dikecilkan proporsional — wadah & warna tetap sama */
.phone-body .pvvideo{padding:9px;gap:10px;border-radius:12px}
.phone-body .pvvideo-thumb{width:72px;height:54px;border-radius:10px}
.phone-body .pvvideo-ph{font-size:1.15rem}
.phone-body .pvvideo-title{font-size:calc(.82rem * var(--c-text-scale,1))}
.phone-body .pvvideo-host{font-size:calc(.66rem * var(--c-text-scale,1))}
.phone-body .pvvideo-cta{font-size:calc(.66rem * var(--c-text-scale,1));padding:5px 9px;margin-top:4px}
@media(max-width:380px){
  .creator-shell .pvvideo-thumb{width:80px;height:62px}
}

/* ==========================================================================
   RICH-TEXT EDITOR — khusus BLOK TEXT di My Page (Fase T1)
   --------------------------------------------------------------------------
   Tanpa JavaScript tidak ada satu pun aturan di bawah yang berpengaruh
   (pembungkus .rte baru dibuat oleh skrip). Memakai token tema ULik.me yang
   sudah ada (--line, --ind, --ink, radius) — bukan gaya baru.
   ========================================================================== */
[data-rte]{display:block}
[data-rte] > label{display:block;font-size:.86rem;font-weight:600;color:var(--ink-2);margin-bottom:6px}
[data-rte][data-rte-ready="1"] > .rte-src{display:none!important}

.rte{border:1.5px solid var(--line);border-radius:14px;background:#fff;overflow:hidden;
  display:flex;flex-direction:column;min-width:0;max-width:100%}
.rte:focus-within{border-color:rgba(14,165,233,.55);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.rte-bar{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px;
  border-bottom:1px solid var(--line);background:#FAFCFF;min-width:0}
.rte-grp{position:relative;display:flex;align-items:center;gap:2px;min-width:0}
.rte-grp + .rte-grp{margin-left:2px;padding-left:5px;border-left:1px solid var(--line)}
.rte-btn{width:32px;height:32px;flex:none;border:1px solid transparent;border-radius:9px;background:transparent;
  color:var(--ink-2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;
  transition:background .15s,color .15s,border-color .15s}
.rte-btn svg{width:17px;height:17px}
.rte-btn:hover{background:#fff;border-color:var(--line);color:var(--ind)}
.rte-btn:focus-visible{outline:2px solid var(--ind);outline-offset:1px}
.rte-btn.on{background:var(--ulik-sky-tint);border-color:rgba(14,165,233,.45);color:var(--ind)}
.rte-lbl{display:none}
.rte-sel{height:32px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink-2);
  font-size:.78rem;font-weight:600;padding:0 4px;max-width:104px;cursor:pointer}
.rte-sel:focus-visible{outline:2px solid var(--ind);outline-offset:1px}
.rte-pop{position:absolute;top:34px;left:0;z-index:20;display:grid;grid-template-columns:repeat(5,22px);gap:5px;
  padding:7px;background:#fff;border:1px solid var(--line);border-radius:12px;
  box-shadow:0 14px 30px -14px rgba(15,23,42,.45)}
.rte-pop[hidden]{display:none}
.rte-sw{width:22px;height:22px;border-radius:6px;border:1px solid rgba(15,23,42,.18);cursor:pointer;padding:0}
.rte-sw.hilite{height:20px}
.rte-sw:focus-visible{outline:2px solid var(--ind);outline-offset:1px}
.rte-sw-x{background:#fff;color:var(--mut);font-size:.8rem;line-height:1}
.rte-linkrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:7px;border-bottom:1px solid var(--line);background:#F8FAFF}
.rte-linkrow[hidden]{display:none}
.rte-url{flex:1 1 180px;min-width:0;height:34px;border:1px solid var(--line);border-radius:9px;padding:0 10px;
  font-size:.85rem;background:#fff;color:var(--ink)}
.rte-url:focus{outline:none;border-color:rgba(14,165,233,.55);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.rte-linkrow .btn{height:34px;padding:0 12px}
.rte-x{width:32px;height:32px;flex:none;border:1px solid transparent;border-radius:9px;background:transparent;
  color:var(--mut);font-size:1rem;cursor:pointer;line-height:1}
.rte-x:hover{background:#fff;border-color:var(--line);color:var(--ink)}
.rte-edit{min-height:120px;max-height:340px;overflow-y:auto;padding:12px 14px;
  font-size:.92rem;line-height:1.6;color:var(--ink);outline:none;
  white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%}
.rte-edit ul,.rte-edit ol{margin:.3em 0 .5em;padding-left:1.4em}
.rte-edit li{margin:.1em 0}
.rte-edit p{margin:0 0 .5em}
.rte-edit p:last-child{margin-bottom:0}
.rte-edit s,.rte-edit strike{text-decoration:line-through}
.rte-edit a{color:var(--ind);text-decoration:underline}
.rte-edit.is-empty:before{content:attr(data-ph);color:var(--mut-2);pointer-events:none}
.rte-note{display:none;padding:7px 12px;font-size:.78rem;border-top:1px solid var(--line)}
.rte-note.ok{display:block;color:#047857;background:#ECFDF5}
.rte-note.err{display:block;color:#B91C1C;background:#FEF2F2}
/* HP: toolbar tetap terbaca, ikon lebih nyaman disentuh, tidak ada gulir horizontal */
@media(max-width:560px){
  .rte-bar{gap:3px;padding:5px}
  .rte-btn{width:34px;height:34px}
  .rte-grp + .rte-grp{margin-left:0;padding-left:4px}
  .rte-pop{grid-template-columns:repeat(5,24px)}
  .rte-sel{max-width:92px}
  .rte-edit{min-height:140px;padding:11px 12px}
}

/* ==========================================================================
   HOME: HERO PASTEL (v2.17.0 — Fase 1)
   Cakupan: navbar + hero + LATAR halaman landing (body.pg-landing) saja.
   Section isi di bawah hero tetap memakai gaya editorial (krem/putih), jadi
   blok ini sengaja ditulis PALING AKHIR supaya menang urutan (spesifisitas
   body.pg-landing setara body.chrome-site, jadi yang belakangan menang).
   Kelas .ed-claim/.ed-claim-msg tetap dipakai apa adanya karena assets/js/app.js
   mengganti className elemen pesan ("ed-claim-msg ok|bad") — jangan diubah.
   ========================================================================== */
body.pg-landing{
  background-color:#F0F9FF;
  background-image:
    radial-gradient(760px 520px at 86% 2%, rgba(224,242,254,.72), transparent 62%),
    radial-gradient(720px 540px at 4% 0%, rgba(203,214,255,.80), transparent 62%),
    radial-gradient(680px 460px at 50% 58%, rgba(255,226,200,.55), transparent 68%),
    linear-gradient(180deg,#F0F9FF 0%,#FCFDFF 42%,#FFF9F4 100%);
  background-repeat:no-repeat;
}
body.pg-landing .site-top{background:rgba(255,255,255,.74);border-bottom-color:rgba(14,165,233,.12)}
body.pg-landing .site-top-in{max-width:1240px}
body.pg-landing .snk{color:#475569}
body.pg-landing .snk:hover{background:rgba(14,165,233,.08)}
body.pg-landing .snk.active{background:#fff;color:var(--ind);box-shadow:0 2px 10px rgba(14,165,233,.16)}
body.pg-landing .btn-ghost{background:#fff;border-color:rgba(14,165,233,.16);color:var(--ink)}
body.pg-landing .btn-ghost:hover{background:#F0F9FF}
body.pg-landing .site-foot{background:rgba(255,255,255,.55);border-top-color:rgba(14,165,233,.12)}

/* ---- hero: dua kolom (kiri teks, kanan ponsel + callout) ---------------- */
.hp-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.04fr);gap:44px;align-items:center;
  max-width:1240px;margin:0 auto;padding:46px 22px 10px;min-width:0}
.hp-copy{min-width:0;max-width:560px}
.hp-badge{display:inline-flex;align-items:center;gap:8px;font-size:.71rem;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:#0369A1;background:rgba(255,255,255,.88);border:1px solid rgba(109,74,255,.24);
  border-radius:999px;padding:8px 16px;box-shadow:0 10px 24px -18px rgba(14,165,233,.8)}
.hp-copy h1{font-family:var(--ed-sans);font-weight:800;font-size:clamp(2rem,4.5vw,3.3rem);line-height:1.06;
  letter-spacing:-.03em;margin:18px 0 0;color:#0F172A}
.hp-copy h1 .hp-acc{background:linear-gradient(96deg,var(--ulik-sky-main) 0%,var(--ulik-sky-light) 48%,var(--ulik-sky-light) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.hp-lead{color:#475569;font-size:1.02rem;line-height:1.62;margin:16px 0 22px;max-width:54ch}

/* kotak klaim username (memakai markup ed_claim_box() + id yang dibaca app.js) */
body.pg-landing .ed-claim{background:#fff;border:1px solid rgba(109,74,255,.18);border-radius:16px;
  padding:7px 7px 7px 18px;gap:8px;box-shadow:0 22px 46px -32px rgba(14,165,233,.85)}
body.pg-landing .ed-claim .ed-claim-prefix{color:#0F172A;font-weight:700}
body.pg-landing .ed-claim input{font-size:1rem}
body.pg-landing .ed-claim button{border-radius:13px;padding:12px 26px}

/* CTA */
.hp-cta{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;max-width:540px;margin-top:14px;
  padding:16px 24px;border-radius:16px;font-weight:800;font-size:1.02rem;color:#fff;opacity:1;
  background:linear-gradient(96deg,var(--ulik-sky-main) 0%,var(--ulik-sky-light) 58%,var(--ulik-sky-light) 100%);
  box-shadow:0 22px 40px -22px rgba(109,74,255,.9);transition:transform .12s ease,box-shadow .15s ease}
.hp-cta:hover{color:#fff;opacity:1;transform:translateY(-1px);box-shadow:0 26px 46px -22px rgba(109,74,255,1)}
.hp-cta:active{transform:scale(.99)}

/* benefit */
.hp-benefits{list-style:none;display:flex;flex-wrap:wrap;gap:10px 20px;margin:18px 0 0;padding:0}
.hp-benefits li{display:flex;align-items:center;gap:8px;font-size:.88rem;font-weight:600;color:#475569;min-width:0}
.hp-tick{width:20px;height:20px;border-radius:50%;background:#DCFCE7;color:#16A34A;flex:none;
  display:flex;align-items:center;justify-content:center}
.hp-tick .ic{width:12px;height:12px}

/* stats */
.hp-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:28px;padding-top:24px;
  border-top:1px solid rgba(109,74,255,.14)}
.hp-stat{display:flex;flex-direction:column;gap:7px;min-width:0}
.hp-stat-ic{width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex:none}
.hp-stat-ic .ic{width:17px;height:17px}
.hp-stat b{font-family:var(--ed-sans);font-weight:800;font-size:clamp(1.2rem,2.4vw,1.55rem);line-height:1;
  letter-spacing:-.02em;color:#0F172A;overflow-wrap:anywhere}
.hp-stat-l{font-size:.78rem;line-height:1.4;color:var(--ulik-slate-muted);overflow-wrap:anywhere}
.hp-tint-a{background:var(--ulik-sky-tint);color:var(--ulik-sky-main)}
.hp-tint-b{background:#DBEAFE;color:#2563EB}
.hp-tint-c{background:var(--ulik-sky-tint);color:var(--ulik-sky-light)}
.hp-tint-d{background:#DCFCE7;color:#16A34A}

/* ---- ponsel + callout --------------------------------------------------- */
.hp-stage{display:flex;align-items:center;justify-content:center;gap:24px;min-width:0}
.hp-phone{position:relative;flex:none;width:320px;border-radius:46px;padding:10px;
  background:linear-gradient(155deg,#334155 0%,#101827 44%,#0A0F1A 100%);
  box-shadow:0 46px 90px -46px rgba(7,89,133,.9), 0 18px 40px -26px rgba(15,23,42,.55),
    inset 0 0 0 1px rgba(255,255,255,.16);
  transform:rotate(-3deg)}
/* TIDAK ada notch/island buatan CSS: screenshot isi layar sudah membawa area
   status perangkatnya sendiri di bagian atas (dan "pil" hitamnya tepat di tengah),
   jadi menambahkan island CSS akan menumpuk dua elemen gelap di posisi yang sama. */
.hp-screen{position:relative;border-radius:36px;overflow:hidden;background:#fff;
  /* rasio mengikuti berkas isi layar (1268x2756) supaya TIDAK ada bagian yang
     terpotong; object-fit:cover tetap menjadi jaring aman bila berkasnya diganti
     dengan rasio lain. */
  aspect-ratio:1268 / 2756}
.hp-screen img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}
.hp-calls{display:flex;flex-direction:column;gap:14px;flex:1 1 auto;min-width:0}
.hp-call{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid rgba(109,74,255,.10);
  border-radius:18px;padding:14px 16px;box-shadow:0 22px 44px -32px rgba(15,23,42,.6);min-width:0}
.hp-call-ic{width:42px;height:42px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex:none}
.hp-call-ic .ic{width:21px;height:21px}
.hp-call-tx{min-width:0}
.hp-call-tx b{display:block;font-size:.92rem;font-weight:800;letter-spacing:-.01em;color:#0F172A}
.hp-call-tx span{display:block;font-size:.8rem;line-height:1.45;color:var(--ulik-slate-muted);margin-top:2px}

/* ---- responsif ---------------------------------------------------------- */
@media(max-width:1150px){
  .hp-hero{grid-template-columns:minmax(0,1fr);gap:40px;padding-top:34px}
  .hp-copy{max-width:none;width:100%}
  .hp-stage{flex-direction:column;gap:28px}
  .hp-calls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;width:100%;gap:14px}
  .hp-phone{transform:rotate(-2deg)}
}
@media(max-width:620px){
  .hp-hero{padding:24px 16px 4px;gap:30px}
  .hp-copy h1{font-size:clamp(1.85rem,8.4vw,2.3rem)}
  .hp-lead{font-size:.95rem;margin:14px 0 20px}
  .hp-cta{max-width:none;padding:15px 20px;font-size:.98rem}
  .hp-benefits{gap:9px 14px}
  .hp-benefits li{font-size:.82rem}
  .hp-stats{gap:10px;margin-top:22px;padding-top:20px}
  .hp-stat-ic{width:30px;height:30px}
  .hp-stat b{font-size:1.12rem}
  .hp-stat-l{font-size:.69rem}
  .hp-calls{grid-template-columns:minmax(0,1fr)}
  .hp-phone{width:min(300px,80vw)}
  .hp-screen{border-radius:32px}
}

/* ==========================================================================
   HOME: MONETIZATION SECTION (v2.18.0 — Fase 2)
   Section marketing SETELAH hero: menjelaskan ULik.me juga untuk monetisasi.
   Visual kanan = GAMBAR STATIS dashboard (assets/img/dashboard-earnings.webp),
   bukan dashboard yang dirender ulang. Memakai bahasa visual yang sama dengan
   hero (pastel lavender/pink/peach, kartu membulat, bayangan lembut) dan
   `.hp-tick` yang sama supaya terasa satu keluarga — sengaja ditulis paling
   akhir agar menang urutan deklarasi.
   ========================================================================== */
.mpx-sec{max-width:1240px;margin:0 auto;padding:38px 22px 6px}
.mpx{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);
  gap:42px;align-items:center;min-width:0;
  background:rgba(255,255,255,.58);border:1px solid rgba(255,255,255,.9);border-radius:28px;padding:38px;
  box-shadow:0 44px 90px -64px rgba(7,89,133,.6);overflow:hidden}
/* rona pastel di dalam panel (z-index:-1 + isolation:isolate → di atas latar
   panel sendiri, tapi di bawah seluruh konten tanpa perlu memosisikan anak-anak) */
.mpx::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(560px 340px at 97% 4%,rgba(224,242,254,.6),transparent 64%),
             radial-gradient(500px 320px at 2% 96%,rgba(203,214,255,.58),transparent 64%),
             radial-gradient(420px 260px at 42% 108%,rgba(255,226,200,.5),transparent 66%)}

.mpx-copy{min-width:0}
.mpx-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:.7rem;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:#0369A1;background:#fff;border:1px solid rgba(109,74,255,.22);border-radius:999px;
  padding:8px 16px;box-shadow:0 10px 24px -18px rgba(14,165,233,.8)}
.mpx-eyebrow-ic{display:inline-flex;color:var(--ulik-sky-light)}
.mpx-eyebrow-ic .ic{width:13px;height:13px}
.mpx-h2{font-family:var(--ed-sans);font-weight:800;font-size:clamp(1.55rem,3.1vw,2.25rem);line-height:1.12;
  letter-spacing:-.025em;margin:18px 0 0;color:#0F172A;max-width:26ch}
.mpx-h2 .mpx-acc{background:linear-gradient(96deg,var(--ulik-sky-main) 0%,var(--ulik-sky-light) 48%,var(--ulik-sky-light) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.mpx-lead{color:#475569;font-size:1rem;line-height:1.62;margin:14px 0 24px;max-width:52ch}
.mpx-cta{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:15px 28px;border-radius:16px;
  font-weight:800;font-size:1rem;color:#fff;opacity:1;
  background:linear-gradient(96deg,var(--ulik-sky-main) 0%,var(--ulik-sky-light) 58%,var(--ulik-sky-light) 100%);
  box-shadow:0 22px 40px -24px rgba(109,74,255,.95);transition:transform .12s ease,box-shadow .15s ease}
.mpx-cta:hover{color:#fff;opacity:1;transform:translateY(-1px);box-shadow:0 26px 46px -24px rgba(109,74,255,1)}
.mpx-cta:active{transform:scale(.99)}
.mpx-points{list-style:none;display:flex;flex-direction:column;gap:11px;margin:26px 0 0;padding:0}
.mpx-points li{display:flex;align-items:center;gap:10px;font-size:.92rem;font-weight:600;color:#475569;min-width:0}

/* kartu gaya browser + potongan pastel di belakangnya */
.mpx-visual{position:relative;min-width:0}
.mpx-visual::before{content:'';position:absolute;inset:16px -14px -14px 16px;border-radius:22px;z-index:0;
  background:linear-gradient(120deg,var(--ulik-sky-border) 0%,var(--ulik-sky-border) 58%,#FFE2C8 100%);opacity:.6}
.mpx-card{position:relative;z-index:1;display:block;border-radius:20px;background:#fff;overflow:hidden;
  border:1px solid rgba(109,74,255,.14);box-shadow:0 44px 84px -52px rgba(7,89,133,.8);
  transition:transform .15s ease,box-shadow .18s ease}
.mpx-card:hover{transform:translateY(-2px);box-shadow:0 52px 92px -52px rgba(7,89,133,.9)}
.mpx-bar{display:flex;align-items:center;gap:8px;padding:11px 14px;background:linear-gradient(180deg,#FFFFFF,#F0F9FF);
  border-bottom:1px solid rgba(109,74,255,.12)}
.mpx-bar i{width:9px;height:9px;border-radius:50%;flex:none}
.mpx-bar i:nth-child(1){background:var(--ulik-sky-light)}
.mpx-bar i:nth-child(2){background:var(--ulik-sky-tint)}
.mpx-bar i:nth-child(3){background:#B9E6C9}
.mpx-url{margin-left:6px;font-size:.72rem;font-weight:600;color:#94A3B8;background:#fff;
  border:1px solid rgba(109,74,255,.12);border-radius:999px;padding:4px 12px;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mpx-shot{display:block;width:100%;height:auto;max-width:100%}

/* ---- responsif: 1 kolom, urutan sesuai permintaan ------------------------ */
/* Di mobile urutannya: eyebrow → headline → supporting → SCREENSHOT → 3 benefit
   → CTA. Karena itu pembungkus teks di-flatten (display:contents) supaya tiap
   bagian bisa diurutkan sendiri tanpa menduplikasi markup. */
@media(max-width:1100px){
  .mpx-sec{padding:30px 16px 4px}
  .mpx{grid-template-columns:minmax(0,1fr);gap:28px;padding:30px 22px;border-radius:24px}
  .mpx-copy{display:contents}
  .mpx-eyebrow{order:1;justify-self:start}
  .mpx-h2{order:2;max-width:none}
  .mpx-lead{order:3;margin:0}
  .mpx-visual{order:4}
  .mpx-points{order:5;margin:0}
  .mpx-cta{order:6;justify-self:stretch}
  .mpx-visual::before{inset:12px -10px -10px 12px}
}
@media(max-width:620px){
  .mpx{padding:24px 18px;gap:24px}
  .mpx-h2{font-size:clamp(1.45rem,6.6vw,1.85rem)}
  .mpx-lead{font-size:.95rem}
  .mpx-points{gap:10px}
  .mpx-points li{font-size:.88rem}
  .mpx-cta{padding:15px 20px;font-size:.98rem}
  /* tonjolan potongan pastel disembunyikan: di layar sempit ia bisa memicu
     gulir horizontal (pola yang sama dengan .ed-shape di halaman ini) */
  .mpx-visual::before{display:none}
  .mpx-card{border-radius:16px}
  .mpx-bar{padding:9px 12px;gap:6px}
  .mpx-url{font-size:.64rem;padding:3px 9px}
}

/* ==========================================================================
   STOK PRODUK — UI (v2.20.0, Fase 3)
   Hanya tampilan untuk nilai yang SUDAH dihitung backend (App\Services\ProductStock):
   pilihan Unlimited/Limited di form produk, penanda di daftar produk creator,
   info stok + tombol beli di halaman produk publik, dan penanda kecil di kartu produk.
   Memakai token & komponen yang sudah ada (.badge, .btn, .mini-note, .pf-sec) —
   tidak ada sistem badge/layout baru.
   ========================================================================== */

/* --- form produk: pilihan mode + jumlah ---------------------------------- */
.pf-stock{display:flex;flex-direction:column;gap:10px}
.pf-stock-opt,.pf-notif-opt{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border:1.5px solid var(--line);
  border-radius:13px;background:#fff;cursor:pointer;margin:0;font-weight:600}
.pf-stock-opt:hover,.pf-notif-opt:hover{border-color:rgba(14,165,233,.35)}
.pf-stock-opt input,.pf-notif-opt input{margin:2px 0 0;flex:none}
.pf-stock-opt:has(input:checked),.pf-notif-opt:has(input:checked){border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.pf-stock-opt span,.pf-notif-opt span{display:flex;flex-direction:column;gap:2px;min-width:0}
.pf-stock-opt small,.pf-notif-opt small{font-weight:500;color:var(--mut);font-size:.8rem;line-height:1.4}
/* saat Unlimited dipilih, input jumlah stok dimatikan dan diredam supaya jelas
   bahwa angkanya tidak dipakai */
#stockQtyWrap.is-off{opacity:.6}
#stockQtyWrap.is-off input{background:#F8FAFC;cursor:not-allowed}
#stockQtyWrap input{max-width:200px}
.pf-stock-state{margin:0;font-size:.82rem;font-weight:600;color:#0F766E}
.pf-stock-state.is-zero{color:#B91C1C}

/* --- daftar produk creator ---------------------------------------------- */
.pgrid-stock{margin-top:4px;font-size:.79rem;color:var(--mut)}
.pgrid-stock b{color:var(--ink-2)}

/* --- halaman produk publik --------------------------------------------- */
.pd-stock{margin-top:6px;font-size:.84rem;font-weight:700;color:#0F766E}
.pd-stock b{font-weight:800}
.pd-stock.is-out{color:#B91C1C}
/* tombol "Stok Habis" memakai gaya .btn yang sudah ada; karena bukan <a>/<button>
   aktif, ditandai dengan kelas ini supaya jelas tidak bisa ditekan */
.btn.is-disabled{opacity:.55;cursor:not-allowed;pointer-events:none}

/* --- kartu produk (halaman creator & pratinjau My Page) ------------------ */
.pstock{margin:2px 0 8px;font-size:calc(.74rem * var(--c-text-scale,1));font-weight:700;color:var(--c-sub)}
.pstock.is-out{color:#DC2626}
.phone-page .pstock{font-size:.62rem}

@media(max-width:560px){
  .pf-stock-opt,.pf-notif-opt{padding:10px 11px}
  #stockQtyWrap input{max-width:none}
}

/* ==========================================================================
   FONNTE GATEWAY — panel admin (v2.21.0, Fase 4B)
   Hanya dua penyesuaian kecil yang memang diperlukan:
   1. Badge hasil uji token teksnya panjang ("✕ Token tidak valid / tidak dapat
      diverifikasi") sedangkan `.badge` memakai `white-space:nowrap` → di layar
      sempit badge itu memaksa lebar melebihi panel. Di baris hasil uji saja
      badge boleh membungkus.
   2. Input token memakai font mono supaya token yang sedang ditempel mudah
      dibaca (nilainya sendiri TIDAK pernah dirender ulang oleh server).
   ========================================================================== */
.fonnte-result .badge{white-space:normal;word-break:break-word}
.fonnte-result .rowline{flex-wrap:wrap;gap:6px}
#productForm input[name="token"],
input[name="token"]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.86rem}

/* ==========================================================================
   FONNTE REVENUE — grid status notifikasi (v2.24.0, Fase 4E)
   Hanya penyesuaian kecil untuk 6 kartu status di halaman laporan:
   grid 3 kolom di desktop, 2 di tablet, 1 di HP — memakai token & komponen
   yang sudah ada (.badge, .panel, .mini-note). Tidak ada komponen baru yang
   berdiri sendiri dan tidak ada perubahan pada tabel/panel existing.
   ========================================================================== */
.wa-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.wa-status-item{background:rgba(255,255,255,.7);border:1px solid var(--line);border-radius:14px;padding:12px 14px;min-width:0}
.wa-status-item.is-alert{border-color:rgba(220,38,38,.45);background:rgba(254,226,226,.5)}
.wa-status-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.wa-status-top b{font-size:1.15rem}
.wa-status-item .mini-note{overflow-wrap:anywhere}
@media(max-width:900px){.wa-status{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.wa-status{grid-template-columns:minmax(0,1fr);gap:10px}
  .wa-status-item{padding:11px 12px}}

/* ==========================================================================
   LAMAN CMS (v2.26.0, CMS-2)
   Gaya kecil untuk halaman publik Laman (<main class="wrap prose"> sudah ada),
   plus pratinjau gambar utama di form admin. Tidak ada komponen baru yang
   berdiri sendiri — hanya penyesuaian agar konten hasil editor rapi.
   ========================================================================== */
.page-content > *:first-child{margin-top:0}
.page-content h2{font-size:1.35rem;margin:1.6em 0 .5em}
.page-content h3{font-size:1.12rem;margin:1.4em 0 .4em}
.page-content p{margin:0 0 1em}
.page-content img{display:block;width:auto;max-width:100%;height:auto;border-radius:14px;
  margin:1.2em auto;border:1px solid var(--line)}
.page-content a{text-decoration:underline}
.page-content ul,.page-content ol{padding-left:1.4em;margin:0 0 1em}
.page-content li{margin:.25em 0}
.page-hero{margin:0 0 22px}
.page-hero img{display:block;width:100%;height:auto;border-radius:18px;border:1px solid var(--line)}
.pg-feat{margin:10px 0 4px}
.pg-feat img{display:block;width:100%;max-width:320px;height:auto;border-radius:12px;border:1px solid var(--line)}
.rte-btn svg{width:17px;height:17px}

/* ==========================================================================
   NAVIGASI & FOOTER PUBLIK (v2.28.0, CMS-3)
   Menu header/footer kini dikelola dari Admin → Navigasi. Desain TIDAK berubah —
   tambahan di sini hanya penyesuaian supaya menu yang panjang (jumlah item tak
   terbatas, diisi admin) tetap aman: navbar boleh membungkus ke baris berikutnya
   dan label footer yang panjang tidak menembus kolom.
   ========================================================================== */
.site-nav{flex-wrap:wrap}
.foot-col a{overflow-wrap:anywhere}

/* Form admin: isian dinamis (jenis tautan / lokasi). `hidden` WAJIB diberi
   !important karena `label{display:block}` (aturan penulis) mengalahkan
   display:none dari UA stylesheet. */
#menuForm [data-kind][hidden],#menuForm [data-loc][hidden]{display:none !important}

/* ==========================================================================
   IDENTITAS WEBSITE (v2.29.0, CMS-4)
   Logo yang diunggah admin dipakai di navbar, footer, dan sidebar dashboard.
   Tingginya dikunci dalam `em` agar ikut menyesuaikan ukuran teks di tiap area
   (navbar, footer, sidebar) tanpa membuat tata letak bergeser.
   ========================================================================== */
.ulik-logo-img img{display:block;height:1.5em;width:auto;max-width:190px;object-fit:contain}
.side-brand .ulik-logo-img img{height:1.7em;max-width:150px}
/* Pratinjau di halaman admin: kotak berlatar supaya logo transparan tetap terlihat. */
.id-prev{display:flex;align-items:center;gap:12px;margin:10px 0 4px;padding:12px 14px;
  border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.7);flex-wrap:wrap}
.id-prev img{display:block;height:40px;width:auto;max-width:220px;object-fit:contain}
.id-prev img.id-fav{height:34px;width:34px;border-radius:8px}
@media(max-width:420px){.id-prev img{height:32px;max-width:150px}}

/* ==========================================================================
   SHOP CASE — DESKRIPSI OPSIONAL (v2.32.0, Fase 3)
   Hanya baris deskripsi yang ditambahkan; grid 2 kolom, kartu, gambar, dan CTA
   TIDAK berubah. Elemen ini hanya dirender kalau creator mengisi deskripsi, jadi
   kartu tanpa deskripsi tingginya persis sama seperti sebelumnya.
   ========================================================================== */
.creator-shell .shop-desc{font-size:.74rem;line-height:1.35;color:var(--c-sub);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.phone-page .shop-desc{font-size:.62rem;-webkit-line-clamp:2}

/* ==========================================================================
   FASE 2 — FORM PRODUK: LAYOUT BERTAHAP (UI/UX)
   Susunan baru: navigasi langkah (kiri) · form (tengah) · panduan (kanan).
   Semua gaya di blok ini ADITIF: kelas lama (.pf-sec/.pf-stock/.pf-gal/…)
   dipertahankan supaya uji & perilaku lama tetap jalan. Tanpa JavaScript,
   .pf-type-cards disembunyikan dan <select name="product_type"> aslinya yang dipakai.
   ========================================================================== */

/* --- grid utama: 3 kolom di desktop besar ------------------------------- */
.prod-edit{grid-template-columns:206px minmax(0,1fr) 330px;gap:20px}
/* 1281px ke bawah: panduan turun ke bawah form (kolom penuh) */
@media(max-width:1280px){
  .prod-edit{grid-template-columns:206px minmax(0,1fr)}
  .prod-side{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px}
}
/* 900px ke bawah: satu kolom; langkah jadi deret chip horizontal */
@media(max-width:900px){
  .prod-edit{grid-template-columns:minmax(0,1fr)}
  .prod-side{grid-column:auto;grid-template-columns:minmax(0,1fr)}
}

/* --- navigasi langkah (kiri / horizontal di HP) ------------------------- */
.prod-steps{display:flex;flex-direction:column;gap:2px;position:sticky;top:16px;min-width:0}
.psteps-title{margin:0 0 6px;font-size:.7rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--mut-2)}
.pstep{display:flex;align-items:flex-start;gap:10px;padding:9px 10px;border-radius:12px;color:var(--ink-2);min-width:0}
.pstep:hover{background:#F0F9FF;opacity:1}
.pstep-n{flex:none;width:24px;height:24px;border-radius:999px;background:var(--ulik-sky-tint);color:var(--ind);
  font-size:.74rem;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px}
.pstep-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.pstep-t b{font-size:.86rem;line-height:1.25}
.pstep-t small{font-size:.72rem;color:var(--mut);line-height:1.3}
.pstep.is-on{background:var(--ulik-sky-tint)}
.pstep.is-on .pstep-n{background:var(--grad-soft);color:#fff}
@media(max-width:900px){
  .prod-steps{position:static;flex-direction:row;gap:8px;overflow-x:auto;padding:2px 0 8px;
    scrollbar-width:thin;margin:0 -2px}
  .psteps-title{display:none}
  .pstep{flex:0 0 auto;padding:8px 12px;background:#fff;border:1px solid var(--line);min-height:44px;align-items:center}
  .pstep small{display:none}
  .pstep-t b{font-size:.8rem;white-space:nowrap}
}

/* --- kepala bagian bertahap -------------------------------------------- */
.pf-sec-head{display:flex;align-items:flex-start;gap:11px}
.pf-sec-head .pf-step{flex:none;width:26px;height:26px;border-radius:999px;background:var(--grad-soft);color:#fff;
  font-size:.78rem;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px}
.pf-sec-head b{font-size:1rem;display:block;line-height:1.3}
.pf-sec-head .mini-note{margin:2px 0 0}

/* --- pasangan field sejajar (Nama + Harga) ----------------------------- */
.pf-row2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:14px;align-items:start}
@media(max-width:560px){.pf-row2{grid-template-columns:minmax(0,1fr)}}

/* --- kartu cover (read-only; pengelolaan di langkah 6) ------------------ */
.pf-cover{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);
  border-radius:14px;background:rgba(255,255,255,.7);flex-wrap:wrap}
.pf-cover-pv{flex:none;width:72px;height:72px;border-radius:12px;background:var(--ulik-sky-tint);display:flex;
  align-items:center;justify-content:center;color:var(--ind);overflow:hidden}
.pf-cover-pv.is-empty{border:1.5px dashed rgba(14,165,233,.35)}
.pf-cover-pv img{width:100%;height:100%;object-fit:cover;display:block}
.pf-cover-meta{flex:1 1 160px;min-width:0;display:flex;flex-direction:column;gap:2px}
.pf-cover-meta b{font-size:.9rem}
.pf-cover-meta small{color:var(--mut);font-size:.78rem;line-height:1.4}
@media(max-width:560px){.pf-cover{padding:10px 12px}.pf-cover-pv{width:56px;height:56px}}

/* --- kartu pilihan jenis produk + sumber nilai asli --------------------- */
/* .pf-type-native = <select name="product_type">. Terlihat saat JS mati. */
/* Tanpa JavaScript: kartu & panduan disembunyikan, kontrol native yang dipakai. */
.pf-type-cards{display:none;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:12px}
.pf-js .pf-type-native{display:none}
.pf-js .pf-type-cards{display:grid}
.pf-js .pf-ind-opt.is-hidden{display:none}          /* File Digital: Individual Stock tidak ditampilkan */
.pf-js #indOpt[hidden]{display:none}
.ptype-card{display:flex;align-items:flex-start;gap:11px;padding:13px;border:1.5px solid var(--line);
  border-radius:14px;background:#fff;cursor:pointer;text-align:left;font:inherit;min-height:76px;
  transition:border-color .15s,box-shadow .15s;color:var(--ink-2);position:relative}
.ptype-card:hover{border-color:rgba(14,165,233,.35)}
.ptype-card.is-on{border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.ptype-ic{flex:none;width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:#fff}
.ptype-ic svg{width:19px;height:19px}
.ptype-ic-file{background:linear-gradient(120deg,var(--ulik-sky-main),var(--ulik-sky-light))}
.ptype-ic-external{background:linear-gradient(120deg,#0EA5E9,var(--ulik-sky-main))}
.ptype-ic-text{background:linear-gradient(120deg,#059669,#34D399)}
.ptype-t{display:flex;flex-direction:column;gap:3px;min-width:0}
.ptype-t b{font-size:.9rem;color:var(--ink)}
.ptype-t small{font-size:.77rem;color:var(--mut);line-height:1.4;font-weight:500}
.ptype-ok{position:absolute;right:10px;top:10px;width:20px;height:20px;border-radius:999px;background:var(--grad-soft);
  color:#fff;display:none;align-items:center;justify-content:center}
.ptype-ok svg{width:13px;height:13px}
.ptype-card.is-on .ptype-ok{display:flex}
@media(max-width:560px){
  .pf-type-cards{grid-template-columns:minmax(0,1fr)}
  .ptype-card{padding:12px;min-height:64px}
}

/* --- blok konten kontekstual ------------------------------------------- */
.pf-ctx{display:flex;flex-direction:column;gap:12px}
.pf-ctx>.flex:first-child b{font-size:.9rem}

/* --- kartu opsi (stok unlimited/limited + Individual Stock pratinjau) --- */
/* .pf-stock-opt tetap kelas untuk radio asli; .pf-ind-opt memakai gaya yang sama
   agar ketiganya terbaca satu keluarga, tetapi TIDAK ikut terhitung sebagai opsi
   stok oleh uji/style lama (jumlahnya tetap 2 untuk File Digital). */
#stockModes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:10px}
.pf-opt{display:flex;align-items:flex-start;gap:10px;padding:12px 13px;border:1.5px solid var(--line);
  border-radius:13px;background:#fff;cursor:pointer;text-align:left;font:inherit;font-weight:600;color:var(--ink-2);
  min-height:44px;position:relative}
.pf-opt:hover{border-color:rgba(14,165,233,.35)}
.pf-opt.is-on{border-color:var(--ind);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.pf-opt-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.pf-opt-t b{font-size:.9rem;color:var(--ink)}
.pf-opt-t small{font-weight:500;color:var(--mut);font-size:.79rem;line-height:1.4}
.pf-ind-ic{flex:none;width:30px;height:30px;border-radius:10px;background:linear-gradient(120deg,#F59E0B,#EF4444);
  color:#fff;display:flex;align-items:center;justify-content:center;margin-top:1px}
.pf-ind-ic svg{width:16px;height:16px}
.pf-soon{position:absolute;right:10px;top:10px}

/* --- panel pratinjau Individual Stock (belum tersimpan) ---------------- */
.pf-ind{margin-top:4px;padding:14px;border:1.5px dashed rgba(14,165,233,.4);border-radius:14px;background:rgba(240,249,255,.7)}
.pf-ind-head{display:flex;gap:10px;align-items:flex-start}
.pf-ind-head b{font-size:.92rem}
.pf-ind-head .mini-note{margin:2px 0 0}
.pf-ind-warn{display:flex;gap:8px;align-items:flex-start;margin:10px 0 0;padding:9px 12px;border-radius:11px;
  background:#FFFBEB;border:1px solid #FDE68A;color:#92400E;font-size:.8rem;line-height:1.45}
.pf-ind-warn .ic{flex:none;margin-top:2px}
.ind-list{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.ind-item{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.ind-item.is-sold{background:#F8FAFC;border-style:dashed}
.ind-item summary{display:flex;align-items:center;gap:10px;padding:11px 12px;cursor:pointer;min-height:44px;list-style:none}
.ind-item summary::-webkit-details-marker{display:none}
.ind-n{font-weight:700;font-size:.88rem;color:var(--ink);flex:1;min-width:0}
.ind-caret{color:var(--mut);display:flex;transition:transform .15s}
.ind-item[open] .ind-caret{transform:rotate(180deg)}
.ind-body{padding:0 12px 12px;display:flex;flex-direction:column;gap:9px}
.ind-body textarea{min-height:74px;font-size:.86rem;margin-top:0}
.ind-actions{display:flex;gap:6px;flex-wrap:wrap}
.ind-btn{display:inline-flex;align-items:center;gap:5px;min-height:36px;padding:0 11px;border:1px solid var(--line);
  border-radius:10px;background:#fff;color:var(--ink-2);font:inherit;font-size:.78rem;font-weight:700;cursor:pointer}
.ind-btn:hover{background:#F0F9FF}
.ind-btn svg{width:14px;height:14px}
.ind-btn.is-del{color:#B91C1C}
.ind-btn[disabled]{opacity:.45;cursor:not-allowed}
@media(max-width:560px){
  .pf-ind{padding:12px}
  .ind-btn{flex:1 1 auto;justify-content:center}
}

/* --- Pengaturan Lain: accordion --------------------------------------- */
.pf-more{border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.6)}
.pf-more>summary{display:flex;align-items:center;gap:9px;padding:13px 14px;cursor:pointer;min-height:44px;list-style:none}
.pf-more>summary::-webkit-details-marker{display:none}
.pf-more>summary b{font-size:.92rem}
.pf-more-tag{margin-left:auto}
.pf-more[open]>summary{border-bottom:1px solid var(--line)}
.pf-sub{padding:14px;display:flex;flex-direction:column;gap:10px}
.pf-sub+.pf-sub{border-top:1px solid var(--line)}
.pf-sub>b{font-size:.9rem}

/* --- panel panduan kontekstual (kanan) --------------------------------- */
/* Tanpa JavaScript semua panduan tampil (informatif); dengan JS hanya yang relevan. */
.pg-item{display:block}
.pg-item+.pg-item{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.pf-js .pg-item{display:none}
.pf-js .pg-item.is-on{display:block}
.pg-item-head b{font-size:.92rem}
.pg-modes{margin:6px 0 0;padding-left:18px;font-size:.81rem;color:var(--ink-2)}
.pg-modes li{margin:3px 0}
.pg-title{font-size:.95rem}
.pg-body{margin-top:10px}

/* --- pratinjau ringkas tampilan pembeli (panel kanan) ------------------- */
.pv-card{display:flex;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:14px;background:#fff}
.pv-cover{flex:none;width:56px;height:56px;border-radius:11px;background:var(--ulik-sky-tint);color:var(--ind);
  display:flex;align-items:center;justify-content:center;overflow:hidden}
.pv-cover img{width:100%;height:100%;object-fit:cover;display:block}
.pv-meta{display:flex;flex-direction:column;gap:2px;min-width:0}
.pv-meta b{font-size:.9rem;line-height:1.3}
.pv-price{font-size:.94rem;font-weight:900;color:var(--ink)}
.pv-type{font-size:.75rem;color:var(--mut);font-weight:600}
.pv-type b{font-weight:700;color:var(--ink-2)}

/* ======================================================================
   FASE 3 — INDIVIDUAL STOCK (NYATA)
   ----------------------------------------------------------------------
   Panel unit stok yang benar-benar tersimpan. Ditulis PALING AKHIR supaya
   aturan di sini menang atas gaya pratinjau Fase 2 (spesifisitas sama).

   Dua hal penting:
   1. `.pf-stock-opt[hidden]` WAJIB `!important` — gaya dasarnya `display:flex`,
      dan itu mengalahkan atribut `hidden` bawaan browser (pelajaran lama:
      `label{display:block}` vs `hidden`). JS memakai atribut ini untuk
      menyembunyikan opsi Individual saat jenis produk = File Digital
      (nilai radio yang sudah terpilih TETAP ikut terkirim — server yang
      menolaknya dengan pesan jelas, lihat ProductController::save).
   2. Form-unit berada di wadah tersembunyi (#indForms) di LUAR form produk,
      jadi CSS-nya tidak boleh memberi `display` apa pun yang membuatnya
      tampil kembali.
   ====================================================================== */
.pf-stock-opt[hidden],.pf-opt[hidden]{display:none!important}
.pf-js .pf-ind-opt.is-off{display:none!important}
.pf-opt[disabled]{opacity:.6;cursor:not-allowed}
.pf-stock-opt .pf-ind-count{margin-left:auto;align-self:center;flex:none}
.ind-forms{display:none!important}

/* --- ringkasan jumlah unit ------------------------------------------- */
.ind-counts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0 0}
.ind-count{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;
  border:1px solid var(--line);background:#fff;font-size:.78rem;font-weight:600;color:var(--ink-2);white-space:nowrap}
.ind-count b{font-weight:900;color:var(--ink)}
.ind-count.is-ok{border-color:rgba(16,185,129,.4);background:#ECFDF5;color:#047857}
.ind-count.is-ok b{color:#047857}
.ind-count-max{margin-left:auto;background:transparent;border-style:dashed;color:var(--mut);font-weight:600}
@media(max-width:560px){.ind-count-max{margin-left:0}}

/* --- peringatan lembut (unit tersimpan tapi mode stok lain) ---------- */
.pf-ind-warn.is-soft{background:var(--ulik-sky-tint);border-color:var(--ulik-sky-border);color:#075985}

/* --- unit terjual: terkunci, tanpa kontrol apa pun ------------------- */
.ind-locked{margin:0;padding:10px 12px;border-radius:11px;background:#fff;border:1px solid var(--line);
  font-family:inherit;font-size:.84rem;line-height:1.5;color:var(--ink-2);
  white-space:pre-wrap;overflow-wrap:anywhere}

/* --- tombol simpan unit (aksi utama di dalam kartu unit) ------------- */
.ind-btn.is-save{background:var(--grad-soft);border-color:transparent;color:#fff}
.ind-btn.is-save:hover{background:var(--grad)}
.ind-btn{min-height:44px}

/* --- konfirmasi hapus (native <details>, jalan tanpa JavaScript) ------ */
.ind-del{position:relative}
.ind-del>summary{list-style:none}
.ind-del>summary::-webkit-details-marker{display:none}
.ind-del[open]>summary{background:#FEF2F2;border-color:#FECACA}
.ind-del-box{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;padding:10px 12px;
  border:1px solid #FECACA;border-radius:11px;background:#FEF2F2;font-size:.8rem;color:#991B1B;font-weight:600}
.ind-del-box span{flex:1;min-width:120px}

/* --- bagian "Tambah Konten" ------------------------------------------ */
.ind-add{margin-top:10px;border:1.5px dashed rgba(14,165,233,.4);border-radius:12px;background:rgba(255,255,255,.7)}
.ind-add>summary{display:flex;align-items:center;gap:8px;padding:12px 13px;cursor:pointer;min-height:44px;
  list-style:none;font-size:.84rem;font-weight:700;color:var(--ind)}
.ind-add>summary::-webkit-details-marker{display:none}
.ind-add[open]>summary{border-bottom:1px solid var(--line)}
.ind-add .ind-body{padding:12px 13px}
@media(max-width:560px){
  .ind-btn{flex:1 1 auto;justify-content:center}
  .ind-del{flex:1 1 100%}
  .ind-del>summary{width:100%;justify-content:center}
}
/* Panel unit = alat pengelolaan: `hidden` harus menang atas display bawaan
   <details>/<div> (pelajaran yang sama dengan .pf-stock-opt[hidden]). */
.ind-add[hidden],.ind-counts[hidden]{display:none!important}

/* ======================================================================
   UX PATCH — LANGKAH 3 DILEWATI SAAT INDIVIDUAL STOCK
   ----------------------------------------------------------------------
   Saat mode stok Individual aktif, konten pembeli berasal dari DAFTAR UNIT,
   jadi bagian "3. Konten Produk" disembunyikan. Ditulis PALING AKHIR supaya
   aturannya menang atas gaya dasar `.pf-sec` (yang memakai display:flex —
   itu mengalahkan atribut `hidden` bawaan browser, pelajaran lama proyek ini).

   Field di dalamnya TIDAK di-`disabled`: nilainya harus tetap terkirim supaya
   menyimpan produk individual tidak mengosongkan konten lama dan tidak
   memicu error validasi untuk field yang tidak terlihat.
   ====================================================================== */
.pf-sec[hidden],.pf-sec.is-skipped{display:none!important}
.pstep.is-skipped{opacity:.62}
.pstep.is-skipped .pstep-n{background:#F1F5F9;color:var(--mut)}
.pstep.is-skipped .pstep-t small{color:var(--mut);font-style:italic}

/* Penjelasan pengganti di tempat langkah 3 disembunyikan (jujur: konten ada di daftar
   unit, data lama tidak dihapus). */
.pf-skip-note{display:flex;gap:9px;align-items:flex-start;margin:0;padding:11px 13px;border-radius:12px;
  background:var(--ulik-sky-tint);border:1px solid var(--ulik-sky-border);color:#075985;font-size:.82rem;line-height:1.5}
.pf-skip-note .ic{flex:none;margin-top:2px}
.pf-skip-note[hidden]{display:none!important}

/* Helper text satu baris di langkah Stok saat mode Individual dipilih (§4 UX patch). */
.pf-ind-hint{display:flex;gap:9px;align-items:flex-start;margin:0;padding:10px 13px;border-radius:12px;
  background:#F0F9FF;border:1px solid var(--ulik-sky-border);color:#0C4A6E;font-size:.82rem;line-height:1.5}
.pf-ind-hint .ic{flex:none;margin-top:2px}
.pf-ind-hint[hidden]{display:none!important}
@media(max-width:560px){.pf-ind-hint,.pf-skip-note{font-size:.79rem;padding:10px 11px}}

/* ======================================================================
   RTE — PERBAIKAN FOKUS/KLIK + GAMBAR (perbaikan rich text editor Laman)
   ----------------------------------------------------------------------
   Ditulis PALING AKHIR agar tidak mengubah aturan editor yang sudah ada.

   1. `[data-rte]{display:block}` — pembungkus editor sebelumnya berupa <span>
      (inline). Dipakai sebagai <span> di form Laman, sehingga toolbarnya hidup di
      dalam inline formatting context. Dibuat block supaya tata letaknya sama di
      kedua pemakai (form Laman & blok teks My Page yang memakai <div>).
   2. Label tidak lagi membungkus editor (root cause klik → Bold), jadi tinggi baris
      label diatur di sini supaya jarak label→toolbar tetap rapat seperti sebelumnya.
   3. Gambar di dalam editor WAJIB responsif: tanpa ini gambar besar meluber keluar
      kotak editor (dan di HP membuat halaman bisa digeser ke samping).
   ====================================================================== */
[data-rte]{display:block}
.rte-field{display:block}
.rte-field > label{display:block}
.rte-field > [data-rte]{margin-top:6px}
.rte-edit img{display:block;width:auto;max-width:100%;height:auto;border-radius:10px;margin:.35em 0}
@media(max-width:560px){.rte-edit img{border-radius:8px}}

/* ======================================================================
   BLOK PRODUK — KONFIGURASI (Phase 1)
   ----------------------------------------------------------------------
   Ditulis PALING AKHIR (pola yang sama dengan blok face lain) dan bersifat
   ADITIF: tidak ada satu pun aturan di sini yang mengenai blok produk LAMA,
   karena seluruh kelas `.pb-prod*`/`.pbp*` hanya muncul pada blok yang benar-
   benar dikonfigurasi. Blok lama (tanpa payload) tetap dirender persis seperti
   sebelumnya → paritas screenshot tetap terjaga.

   Warna/radius/bayangan TIDAK ditulis di sini: kartu memakai
   `.creator-shell` / `.phone-page` (token `--c-*`) yang sudah ada, jadi semua
   tema & override Appearance tetap bekerja tanpa perubahan.
   ====================================================================== */

/* ---------- panel konfigurasi (form Add Block & panel edit blok) ---------- */
.pbp{display:flex;flex-direction:column;gap:10px}
.pbp-h{display:block;font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:var(--mut);margin-top:4px}
.pbp-h:first-child{margin-top:0}
.pbp-when-single,.pbp-when-all{display:flex;flex-direction:column;gap:10px}
.pbp .bp-picklist{max-height:260px}
.pbp-warn{display:flex;gap:9px;align-items:flex-start;margin:0;padding:10px 12px;border-radius:12px;
  background:#FFFBEB;border:1px solid #FDE68A;color:#92400E;font-size:.8rem;line-height:1.5}
.pbp-warn .ic{flex:none;margin-top:2px}
.pbp-radio > span{flex:1;min-width:0}

/* ---------- pilihan produk (mode "Produk tertentu") ----------
   Checkbox `product_ids[]`: creator boleh memilih satu atau berapa pun. Daftar
   panjang digulir di dalam kotaknya sendiri supaya tombol Simpan tidak terdorong
   jauh ke bawah, dan penghitung `.pick-n` mengikuti pilihan secara langsung. */
.pb-pick{display:flex;flex-direction:column;gap:8px}
.pb-pick .bp-picklist{gap:4px}
.pb-pick .pbp-pick{gap:9px}
.pb-pick .pbp-pick > span{flex:1;min-width:0}
.pb-pick .pbp-pick input{flex:none;margin-top:2px}
.pb-pick .pick-n{font-weight:800;color:var(--ink)}
.pb-pick.is-empty .pick-n{color:#B91C1C}

/* Mode "Produk ini" ⇄ "Semua produk" menyembunyikan kelompok yang tidak relevan
   TANPA JavaScript. Kalau peramban tidak mendukung `:has()`, semua field tetap
   terlihat dan server tetap membaca nilainya dengan benar (tidak ada yang rusak).
   Phase 2: blok produk pindah ke editor (`#blockEditor .be-form`), jadi pemilihnya
   ditambahkan di sini — pemilih lama (picker Add Block) tidak diubah. */
.bp-step2[data-bp-form="product"]:has(input[name="product_mode"][value="single"]:checked) .pbp-when-all,
.be-form:has(input[name="product_mode"][value="single"]:checked) .pbp-when-all{display:none}
.bp-step2[data-bp-form="product"]:has(input[name="product_mode"][value="all"]:checked) .pbp-when-single,
.be-form:has(input[name="product_mode"][value="all"]:checked) .pbp-when-single{display:none}

/* Baris blok yang sedang diedit (`/my-page?edit=<id>`) diberi penanda visual. */
.block-item.is-editing{border-color:rgba(14,165,233,.55);box-shadow:0 10px 26px -16px rgba(14,165,233,.6)}

/* ---------- renderer publik: section + banyak produk dalam satu blok -------- */
.creator-shell .pb-prod{display:flex;flex-direction:column;gap:12px}
.creator-shell .pb-sec-title{font-size:calc(1.02rem * var(--c-text-scale,1));font-weight:800;
  color:var(--c-ink);margin:0 2px;overflow-wrap:anywhere}
.creator-shell[data-title="1"] .pb-sec-title{font-family:var(--c-head-font)}
.creator-shell .pb-pitems{display:flex;flex-direction:column;gap:12px}

/* ======================================================================
   KARTU PRODUK PORTRAIT (dipakai `grid` · `featured` · `hscroll` · `masonry`)
   ----------------------------------------------------------------------
   Sebelumnya seluruh aturan ini di-scope ke `.pb-prod-grid`, sehingga layout
   lain yang juga memakai kartu portrait (featured/hscroll/masonry) TIDAK
   mendapat struktur kartunya (cover tanpa rasio → kartu rusak). Sekarang
   di-scope ke kelas KARTUNYA (`.pbg-card`) supaya SATU definisi berlaku untuk
   semua layout portrait; tiap layout hanya mengatur kontainer & ukurannya.

   Isi kartu tetap memakai kelas lama (`.pcard`, `.pinfo`, `.pdesc`, `.pmeta`,
   `.price`, `.view-detail`, `.pthumb-ph`) sehingga token tema `--c-*`, aturan
   tema khusus, dan override Tombol user tetap berlaku tanpa perubahan.
   ====================================================================== */
.creator-shell .pbg-card{flex-direction:column;align-items:stretch;gap:0;padding:0;
  overflow:hidden;text-decoration:none;color:inherit;transition:transform .14s ease;
  /* Aturan lama `@media(max-width:380px){.pcard{flex-wrap:wrap}}` dibuat untuk kartu
     LIST (thumbnail & info boleh turun ke baris berikutnya). Pada kartu portrait —
     yang memang sudah kolom — `wrap` membuat isi kartu PECAH JADI DUA KOLOM
     BERDAMPINGAN di ≤380px (diukur: cover 156px + info 156px di kartu 158px).
     Karena itu wrap dinetralkan di sini, untuk semua kartu portrait. */
  flex-wrap:nowrap}
.creator-shell .pbg-card .pbg-body{flex:1 1 auto}
/* Bayangan hover sengaja TIDAK ditulis: biarkan aturan tema yang berlaku (mis. hard
   shadow `neo`) supaya kartu tidak kehilangan ciri temanya. */
.creator-shell .pbg-card:hover{transform:translateY(-2px);opacity:1}
.creator-shell .pbg-media{position:relative;display:block;width:100%;
  aspect-ratio:1 / 1;overflow:hidden;background:var(--c-card)}
.creator-shell .pbg-img{display:block;width:100%;height:100%;object-fit:cover}
/* Tanpa gambar: kotak aksen + ikon jenis produk (token yang sama dengan .pthumb-ph). */
.creator-shell .pbg-media-ph{display:flex;align-items:center;justify-content:center;
  width:100%;height:100%;background:var(--c-acc);color:var(--c-acc-ink)}
.creator-shell .pbg-body{padding:12px;overflow-wrap:anywhere}
.creator-shell .pbg-card .pinfo h3{font-size:calc(.9rem * var(--c-text-scale,1))}
.creator-shell .pbg-card .pinfo .pdesc{-webkit-line-clamp:2}
.creator-shell .pbg-card .pmeta{margin-top:8px;flex-wrap:wrap;gap:8px}
.creator-shell .pbg-card .view-detail{padding:7px 13px;font-size:calc(.76rem * var(--c-text-scale,1))}
/* Tanpa harga, baris `.pmeta` tidak ditinggalkan menggantung di kiri. */
.creator-shell .pmeta.is-noprice{justify-content:flex-end}

/* ======================================================================
   ENAM LAYOUT BLOK PRODUK (Langkah 3)
   ----------------------------------------------------------------------
   `.pb-pitems` adalah SATU-SATUNYA kontainer; tiap layout hanya mengubah
   `display`/kolom/arah di sini, jadi tidak ada cabang markup tambahan:

     list     → kolom (perilaku lama, TIDAK diubah — lihat `.pb-pitems` di atas)
     grid     → 2 kolom kartu portrait
     compact  → kolom, kartu List yang lebih rapat & thumbnail lebih kecil
     featured → kartu pertama lebar penuh (kartu utama), sisanya 2 kolom
     hscroll  → baris yang digeser ke samping; HANYA kontainer ini yang scroll
     masonry  → CSS `columns` (konsekuensi yang disepakati: urutan baca
                turun-per-kolom, urutan produk di dalam kolom tetap dari `order`)

   Warna/radius/bayangan TIDAK ditulis di sini (token tema & aturan tema tetap
   berlaku seperti sebelumnya). Tidak ada aturan baru yang menyentuh kartu LIST
   selain layout `compact` (yang memang berbasis List).
   ====================================================================== */

/* ---------- GRID: 2 kolom kartu portrait ---------- */
.creator-shell .pb-prod-grid .pb-pitems{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;align-items:stretch}

/* ---------- COMPACT: versi padat dari List ---------- */
.creator-shell .pb-prod-compact .pb-pitems{gap:8px}
.creator-shell .pb-prod-compact .pcard{padding:9px 11px;gap:10px}
.creator-shell .pb-prod-compact .pthumb{width:52px;height:52px;border-radius:10px}
.creator-shell .pb-prod-compact .ptype-tag{font-size:calc(.66rem * var(--c-text-scale,1));margin-bottom:2px}
.creator-shell .pb-prod-compact .pinfo h3{font-size:calc(.86rem * var(--c-text-scale,1))}
.creator-shell .pb-prod-compact .pinfo .pdesc{-webkit-line-clamp:1;font-size:calc(.76rem * var(--c-text-scale,1))}
.creator-shell .pb-prod-compact .pmeta{margin-top:4px}
.creator-shell .pb-prod-compact .price{font-size:calc(.9rem * var(--c-text-scale,1))}
.creator-shell .pb-prod-compact .price-note{font-size:calc(.66rem * var(--c-text-scale,1))}
.creator-shell .pb-prod-compact .view-detail{padding:5px 11px;font-size:calc(.72rem * var(--c-text-scale,1))}

/* ---------- FEATURED: kartu pertama jadi kartu utama ---------- */
.creator-shell .pb-prod-featured .pb-pitems{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;align-items:start}
.creator-shell .pb-prod-featured .pbg-card:first-child{grid-column:1 / -1}
/* Cover kartu utama dibiarkan 16:9 agar tidak menjulang setinggi kartu biasa (1:1) —
   inilah yang membuat Featured terlihat jelas berbeda dari Grid. */
.creator-shell .pb-prod-featured .pbg-card:first-child .pbg-media{aspect-ratio:16 / 9}
.creator-shell .pb-prod-featured .pbg-card:first-child .pbg-body{padding:14px}
.creator-shell .pb-prod-featured .pbg-card:first-child .pinfo h3{font-size:calc(1.02rem * var(--c-text-scale,1))}
.creator-shell .pb-prod-featured .pbg-card:first-child .pinfo .pdesc{-webkit-line-clamp:3}
.creator-shell .pb-prod-featured .pbg-card:first-child .view-detail{padding:8px 16px;font-size:calc(.8rem * var(--c-text-scale,1))}

/* ---------- HORIZONTAL SCROLL: hanya kontainer ini yang bergeser ----------
   Pembungkus `.pb-prod-hscroll` diberi `overflow:hidden` sebagai jaring aman supaya
   halaman publik TIDAK PERNAH bisa digeser ke samping; yang scroll adalah
   `.pb-pitems` (overflow-x:auto). Padding vertikal disediakan agar bayangan kartu
   tidak terpotong oleh `overflow-y:hidden` di kontainer scroll. */
.creator-shell .pb-prod-hscroll{overflow:hidden}
.creator-shell .pb-prod-hscroll .pb-pitems{display:flex;flex-direction:row;flex-wrap:nowrap;gap:12px;
  overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;padding:6px 4px 14px;scrollbar-width:thin}
.creator-shell .pb-prod-hscroll .pbg-card{flex:0 0 58%;scroll-snap-align:start}
/* Layar sempit: kartu lebih lebar supaya 1–2 kartu tetap terbaca. */
@media(max-width:560px){.creator-shell .pb-prod-hscroll .pbg-card{flex:0 0 76%}}

/* ---------- MASONRY: CSS columns ---------- */
.creator-shell .pb-prod-masonry .pb-pitems{display:block;columns:2;column-gap:12px}
.creator-shell .pb-prod-masonry .pbg-card{display:inline-block;width:100%;vertical-align:top;
  break-inside:avoid;-webkit-column-break-inside:avoid;margin:0 0 12px}
/* Tinggi cover dibuat berbeda-beda supaya pola masonry-nya benar-benar terlihat. */
.creator-shell .pb-prod-masonry .pbg-card:nth-child(3n+2) .pbg-media{aspect-ratio:4 / 5}
.creator-shell .pb-prod-masonry .pbg-card:nth-child(3n) .pbg-media{aspect-ratio:5 / 4}

/* ---------- pratinjau HP: skala mengikuti bingkai (pola yang sudah dipakai) ---
   Pratinjau WAJIB mengikuti keenam layout, kalau tidak preview terlihat berantakan
   padahal halaman publiknya benar. Bingkai HP ~276px — lebih sempit dari halaman
   asli — jadi ambang kolomnya lebih kecil, tetapi jumlah kolomnya tetap sama. */
.phone-page .pb-sec-title{font-size:calc(.9rem * var(--c-text-scale,1))}
.phone-page .pb-pitems{gap:8px}
.phone-page .pbg-body{padding:9px}
.phone-page .pbg-card .pinfo h3{font-size:calc(.76rem * var(--c-text-scale,1))}
.phone-page .pbg-card .view-detail{padding:5px 9px;font-size:calc(.66rem * var(--c-text-scale,1))}
.phone-page .pb-prod-grid .pb-pitems{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.phone-page .pb-prod-featured .pb-pitems{gap:8px}
.phone-page .pb-prod-featured .pbg-card:first-child .pbg-body{padding:9px}
.phone-page .pb-prod-featured .pbg-card:first-child .pinfo h3{font-size:calc(.86rem * var(--c-text-scale,1))}
.phone-page .pb-prod-featured .pbg-card:first-child .view-detail{padding:6px 11px;font-size:calc(.7rem * var(--c-text-scale,1))}
.phone-page .pb-prod-hscroll .pb-pitems{gap:8px;padding:5px 3px 12px}
.phone-page .pb-prod-hscroll .pbg-card{flex:0 0 72%}
.phone-page .pb-prod-masonry .pb-pitems{column-gap:8px}
.phone-page .pb-prod-masonry .pbg-card{margin:0 0 8px}
.phone-page .pb-prod-compact .pb-pitems{gap:6px}
.phone-page .pb-prod-compact .pcard{padding:7px 9px;gap:8px}
.phone-page .pb-prod-compact .pthumb{width:44px;height:44px}
.phone-page .pb-prod-compact .pinfo h3{font-size:calc(.74rem * var(--c-text-scale,1))}

/* ======================================================================
   EDITOR BLOK (Phase 2)
   ----------------------------------------------------------------------
   Mengubah pengalaman mengedit blok: konfigurasi yang sebelumnya tersembunyi di menu
   ⋯ kini berada di panel tersendiri dengan kategori yang mudah dipindai + header yang
   jelas ("saya sedang mengedit blok apa").

   TATA LETAK: saat sebuah blok sedang diedit (`?edit=<id>`), `.builder` mendapat kelas
   `is-editing` dan di desktop menjadi TIGA kolom (Daftar blok · Editor · Preview).
   Posisi kolom diatur lewat grid-column/grid-row supaya urutan DOM
   (left → editor → right) tidak perlu diubah dan layar kecil tetap membacanya berurutan.

   CATATAN: blok ini pernah IKUT TERHAPUS saat mengganti blok CSS lain dengan cara
   memotong berdasarkan penanda teks (rentangnya membentang melewatinya). Kalau menyunting
   berkas ini, JANGAN memotong dengan index penanda — periksa batasnya dulu.
   ====================================================================== */
@media(min-width:1280px){
  .builder.is-editing{grid-template-columns:270px minmax(0,1fr) 300px}
  .builder.is-editing .builder-left{grid-column:1;grid-row:1}
  .builder.is-editing .builder-editor{grid-column:2;grid-row:1}
  .builder.is-editing .builder-right{grid-column:3;grid-row:1}
}
/* Ruang antara 1120–1279px belum cukup untuk tiga kolom: daftar blok naik ke atas
   (satu baris penuh), lalu editor & preview berdampingan. */
@media(min-width:1120px) and (max-width:1279px){
  .builder.is-editing{grid-template-columns:minmax(0,1fr) 300px}
  .builder.is-editing .builder-left{grid-column:1 / -1;grid-row:1}
  .builder.is-editing .builder-editor{grid-column:1;grid-row:2}
  .builder.is-editing .builder-right{grid-column:2;grid-row:2}
}

/* ---------- panel editor ---------- */
.builder-editor{min-width:0}
.be-panel{padding:0;overflow:visible}
.be-head{position:relative;padding:16px 16px 12px;border-bottom:1px solid var(--line)}
.be-crumb{display:flex;align-items:center;gap:6px;font-size:.76rem;font-weight:700;color:var(--mut-2)}
.be-crumb a{color:var(--ind)}
.be-sep{opacity:.6}
.be-title{margin:4px 0 0;font-size:1.05rem;font-weight:800;color:var(--ink);overflow-wrap:anywhere}
.be-close{position:absolute;top:12px;right:12px;width:34px;height:34px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;color:var(--mut);background:#F0F9FF}
.be-close:hover{background:var(--ulik-sky-tint);color:var(--ind);opacity:1}

/* ---------- navigasi kategori ---------- */
.be-nav{display:flex;gap:6px;padding:10px 12px;border-bottom:1px solid var(--line);overflow-x:auto;
  scrollbar-width:thin}
.be-tab{flex:none;display:inline-flex;align-items:center;gap:7px;padding:8px 11px;border-radius:10px;
  font-size:.82rem;font-weight:700;color:var(--ink-2);background:#F7FAFC;border:1px solid transparent;
  white-space:nowrap;transition:background .15s,color .15s}
.be-tab:hover{background:var(--ulik-sky-tint);color:var(--ind);opacity:1}
.be-tab.is-active{background:var(--grad-soft);color:#fff;box-shadow:0 8px 18px -10px rgba(14,165,233,.7)}
.be-tab .ic{width:16px;height:16px;flex:none}
.be-tab:focus-visible{outline:2px solid var(--ind);outline-offset:2px}

/* ---------- bagian (kategori) ---------- */
.be-form{display:flex;flex-direction:column}
.be-sec{display:flex;flex-direction:column;gap:10px;padding:16px}
.be-sec[hidden]{display:none!important}
.be-sec-t{display:flex;align-items:center;gap:8px;margin:0;font-size:.92rem;font-weight:800;color:var(--ink)}
.be-sec-t .ic{color:var(--ind)}
.be-sec-d{margin:0;font-size:.8rem;color:var(--mut-2);line-height:1.5}
.be-sec label{display:flex;flex-direction:column;gap:6px;font-size:.84rem;font-weight:700;color:var(--ink-2)}
.be-sec .check-line{flex-direction:row;align-items:center;gap:9px}
.be-sec input[type=text],.be-sec input[type=number],.be-sec select,.be-sec textarea{width:100%}
.be-sec .bp-picklist{max-height:300px}

/* ---------- aksi simpan/batal ---------- */
.be-actions{display:flex;gap:8px;flex-wrap:wrap;padding:14px 16px;border-top:1px solid var(--line);
  background:#FCFDFF;position:sticky;bottom:0;
  border-radius:0 0 var(--rad,16px) var(--rad,16px)}
.be-actions .btn{min-width:150px;justify-content:center}

/* ---------- aksi lain (tautan ke data produk) ---------- */
.be-extra{display:flex;flex-direction:column;gap:6px;padding:0 16px 14px}

/* ---------- zona hapus (sengaja terpisah) ---------- */
.be-danger{margin:0 16px 16px;padding:12px 14px;border-radius:12px;background:#FEF2F2;
  border:1px dashed rgba(220,38,38,.35);display:flex;flex-direction:column;gap:8px}
.be-danger b{display:flex;align-items:center;gap:7px;font-size:.86rem;color:#B91C1C}
.be-danger .ic{color:#DC2626}
.be-danger form{margin:0}
.be-danger .btn{min-width:150px;justify-content:center}

/* ---------- daftar blok saat sebuah blok sedang diedit ---------- */
.builder.is-editing .builder-left .panel{margin-bottom:0}
.block-editing-flag{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:800;
  color:var(--ind);background:var(--ulik-sky-tint);border-radius:999px;padding:4px 10px}
.block-item.is-editing{background:var(--ulik-sky-tint)}

/* Baris blok jadi lebih ringkas saat kolomnya menyempit (3 kolom): hanya badge & menu. */
@media(min-width:1280px){
  .builder.is-editing .block-item .btn-soft,
  .builder.is-editing .block-item .btn-ghost{font-size:.74rem;padding:7px 10px}
}

/* ---------- layar sempit ---------- */
@media(max-width:1119px){
  .builder-editor{grid-column:1}
  .be-actions{position:static}
  .be-actions .btn{min-width:0;flex:1 1 auto}
  .be-danger .btn{min-width:0;width:100%}
}
@media(max-width:560px){
  .be-head{padding:14px 13px 11px}
  .be-nav{padding:9px 10px}
  .be-tab{padding:7px 10px;font-size:.79rem}
  .be-sec{padding:14px 13px}
  .be-danger{margin:0 13px 13px}
}

/* Tombol "Atur" (ikon) di baris blok PRODUK — Phase 2.
   Sengaja kecil & selalu terlihat: inilah penanda bahwa blok punya pengaturan
   (sebelumnya tersembunyi di menu ⋯ sehingga creator tidak tahu). */
.block-actions .block-at{width:34px;height:34px;min-width:34px;padding:0;display:inline-flex;
  align-items:center;justify-content:center;border-radius:10px}
.block-actions .block-at .ic{width:15px;height:15px}

/* ======================================================================
   JUMLAH PRODUK PER BREAKPOINT (Langkah 4)
   ----------------------------------------------------------------------
   Kartu yang melewati batas ditandai renderer (`PageBlocks::productLimitClass()`):
     .pb-lim-mobile-extra   → indeks >= limit_mobile
     .pb-lim-desktop-extra  → indeks >= limit_desktop
   Query sudah mengambil angka TERBESAR sejak awal (`productQueryLimit()`), jadi tidak
   ada query kedua saat breakpoint berubah.

   ISI BLOK INI HANYA VISIBILITAS — tidak ada satu pun aturan bentuk/ukuran/kolom
   keenam layout di sini, dan tidak ada CSS Langkah 3 yang disentuh. `display:none`
   tanpa mengubah properti lain sehingga saat penanda tidak aktif, kartu memakai
   tampilan normalnya (flex untuk List/portrait, inline-block untuk masonry).

   BREAKPOINT: 560px (yang sudah dipakai sistem & disepakati di langkah sebelumnya).
     width <= 560px → berlaku limit MOBILE
     width >  560px → berlaku limit DESKTOP
   ====================================================================== */
/* .pb-lim-mobile-extra  = kartu di luar batas MOBILE  -> disembunyikan saat <=560px
   .pb-lim-desktop-extra = kartu di luar batas DESKTOP -> disembunyikan saat > 560px
   PENTING: jangan tertukar — kartu di luar batas mobile HARUS tetap tampil di desktop. */
@media(max-width:560px){.creator-shell .pb-lim-mobile-extra{display:none!important}}
@media(min-width:561px){.creator-shell .pb-lim-desktop-extra{display:none!important}}

/* PRATINJAU HP di My Page: bingkai ponsel selalu berarti pengalaman MOBILE, apa pun
   lebar jendela dashboard-nya (media query mengikuti viewport browser, bukan lebar
   bingkai). Jadi di dalam `.phone-page` yang berlaku adalah limit MOBILE.
   Dua baris `display` di bawah HANYA untuk mengembalikan kartu yang di-hide oleh
   media query desktop-sempit — nilainya sama dengan tampilan normal kartu tersebut. */
.phone-page .pb-lim-mobile-extra{display:none!important}
.phone-page .pb-lim-desktop-extra{display:flex!important}
.phone-page .pb-prod-masonry .pbg-card.pb-lim-desktop-extra{display:inline-block!important}

/* ======================================================================
   TAMPILAN PRODUK — panel Edit Block (Langkah 2)
   ----------------------------------------------------------------------
   Hanya UI EDITOR: pemilih layout (kartu + mini-preview) dan dua baris jumlah
   produk (Mobile/Desktop). Ditulis PALING AKHIR & bersifat aditif.

   TIDAK ada aturan di sini yang mengenai kartu produk di halaman publik
   (`.pcard`, `.pbg-card`, `.pthumb`) maupun Design global — desain keenam
   layout dikerjakan di langkah berikutnya.

   Warna memakai token yang sudah ada (--ind, --line, --mut-2, --ink-2,
   --grad-soft, #F0F9FF/var(--ulik-sky-tint) yang sudah dipakai panel lain).
   ====================================================================== */

/* ---------- penanda langkah (① ② seperti sketsa) ---------- */
.be-step{display:flex;align-items:center;gap:9px;margin:4px 0 0;font-size:.9rem;color:var(--ink)}
.be-step-n{width:22px;height:22px;border-radius:50%;flex:none;display:inline-flex;align-items:center;
  justify-content:center;background:var(--grad-soft);color:#fff;font-size:.72rem;font-weight:800}

/* ---------- grid kartu pemilih layout ---------- */
.lp-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:900px){.lp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.lp-grid{grid-template-columns:minmax(0,1fr)}}

/* Kartu = <label> pembungkus radio. Spesifisitas `.lp-grid .lp-card` sengaja lebih
   tinggi dari `.be-sec label` (dan ditulis belakangan) supaya tampilannya seragam di
   editor MAUPUN di modal Add Block. */
.lp-grid .lp-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:10px 8px;border:1.5px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;
  text-align:center;transition:border-color .14s,box-shadow .14s,background .14s}
.lp-grid .lp-card:hover{border-color:rgba(14,165,233,.45)}
.lp-grid .lp-card input{position:absolute;opacity:0;width:1px;height:1px;margin:0;padding:0;border:0}
.lp-grid .lp-card.is-active,
.lp-grid .lp-card:has(input:checked){border-color:var(--ind);background:#F0F9FF;
  box-shadow:0 0 0 3px rgba(14,165,233,.13)}
.lp-grid .lp-card:has(input:focus-visible),
.lp-grid .lp-card input:focus-visible{outline:2px solid var(--ind);outline-offset:2px}
.lp-name{font-size:.82rem;font-weight:800;color:var(--ink-2);line-height:1.2}
.lp-desc{font-size:.72rem;font-weight:500;color:var(--mut-2);line-height:1.35}
.lp-grid .lp-card.is-active .lp-name,
.lp-grid .lp-card:has(input:checked) .lp-name{color:var(--ind)}
.lp-grid .lp-card.is-active .lp-desc,
.lp-grid .lp-card:has(input:checked) .lp-desc{color:var(--ind);opacity:.85}

/* ---------- mini-preview layout (representasi sederhana, bukan halaman publik) ---------- */
.lp-prev{display:block;width:100%;height:46px;flex:none}
.lpv{display:block;width:100%;height:100%;--lpv:#CBD5E1;--lpv-2:#E2E8F0}
.lpv i{display:block;background:var(--lpv);border-radius:2px;min-height:0}
.lp-grid .lp-card.is-active .lpv,
.lp-grid .lp-card:has(input:checked) .lpv{--lpv:var(--ulik-sky-light);--lpv-2:var(--ulik-sky-border)}
/* Grid: 2×2 kotak */
.lpv-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:3px}
/* List: 3 baris, tiap baris punya "gambar" kecil di kiri */
.lpv-list{display:flex;flex-direction:column;gap:4px}
.lpv-list i{position:relative;flex:1;background:var(--lpv-2);border-radius:3px;overflow:hidden}
.lpv-list i::before{content:'';position:absolute;inset:0 68% 0 0;background:var(--lpv);border-radius:3px}
/* Compact: 4 baris rapat (tanpa "gambar") */
.lpv-compact{display:flex;flex-direction:column;gap:3px}
.lpv-compact i{flex:1;border-radius:2px;background:var(--lpv-2)}
.lpv-compact i:first-child{background:var(--lpv)}
/* Featured: 1 kartu besar di atas + 2 kecil di bawah */
.lpv-featured{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:2fr 1fr;gap:3px}
.lpv-featured i:first-child{grid-column:1 / -1}
/* Horizontal Scroll: 3 kolom berjejer, kolom terakhir terpotong tepi */
.lpv-hscroll{display:flex;gap:3px;overflow:hidden;padding-right:8px}
.lpv-hscroll i{flex:0 0 34%;border-radius:3px}
/* Masonry: 2 kolom dengan tinggi batang berbeda (kolom tidak beraturan) */
.lpv-masonry{columns:2;column-gap:3px}
.lpv-masonry i{break-inside:avoid;margin-bottom:3px;height:16px}
.lpv-masonry i:nth-child(2){height:24px}
.lpv-masonry i:nth-child(4){height:22px}

/* ---------- baris jumlah produk (Mobile / Desktop) ---------- */
.lp-limit{display:grid;align-items:center;gap:10px;
  grid-template-columns:22px minmax(62px,auto) minmax(0,1fr) 74px auto;
  padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}
.lp-limit-ic{display:inline-flex;align-items:center;justify-content:center;color:var(--ind)}
.lp-limit-lb{font-size:.84rem;font-weight:700;color:var(--ink-2)}
.lp-limit-sf{font-size:.76rem;color:var(--mut-2)}
.lp-limit input[type=range]{width:100%;accent-color:var(--ind);margin:0}
.lp-limit input[type=number]{width:100%;text-align:center;margin:0}
@media(max-width:560px){
  /* Di layar sempit: label di barisnya sendiri, slider & angka di bawahnya. */
  .lp-limit{grid-template-columns:22px minmax(0,1fr) 74px;row-gap:8px}
  .lp-limit .lp-limit-sf{grid-column:3;text-align:center}
  .lp-limit input[type=range]{grid-column:1 / 3}
  .lp-limit input[type=number]{grid-column:3}
  .lp-limit-ic{grid-row:1}
  .lp-limit-lb{grid-row:1}
}

/* ==========================================================================
   PENGUMUMAN — Fase 2 (banner dashboard + halaman /announcements)
   --------------------------------------------------------------------------
   Komponen ini memakai token & komponen yang SUDAH ADA (aksen indigo→violet,
   --line/--mut/--ink, radius & bayangan kartu studio) supaya terasa native dengan
   UI ULik.me — bukan sistem desain baru.

   VARIASI VISUAL (Penting/Promo/Update) SENGAJA BELUM ADA: Fase 1 tidak punya kolom
   tipe pengumuman, jadi mewarnai banner seolah-olah ada tipe = mengarang status.
   Bentuknya satu gaya "Pengumuman" yang konsisten sampai ada sumber data tipe.
   ========================================================================== */

/* ---------- badge jumlah di sidebar (dipakai menu Pengumuman) ---------- */
.sn-badge{margin-left:auto;min-width:22px;height:22px;padding:0 7px;border-radius:999px;
  background:var(--grad-soft);color:#fff;font-size:.72rem;font-weight:800;
  display:inline-flex;align-items:center;justify-content:center;flex:none}
.sn.active .sn-badge{background:#fff;color:var(--ind)}

/* ---------- kartu pengumuman (v36 — pengumuman mandiri, teks lengkap) ----------
   Satu markup (`ui_announcement_card()`) untuk tiga tempat: banner dashboard
   (.ann-card-banner, latar biru), daftar `/announcements` (.ann-card-item, putih), dan
   pratinjau admin (.ann-card-preview). Isi panjang dilipat app.js (`.is-folded`) dan
   dibuka di tempat — tanpa JS teksnya tampil penuh. `.ann-close`/`data-ann-close`
   dipertahankan untuk dismiss per-ID (kunci `announcement_dismissed_<id>`). */
.ann-card{position:relative;display:flex;align-items:flex-start;gap:14px;padding:16px 18px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius-bento,18px)}
.ann-card[hidden]{display:none!important}
.ann-card-banner,.ann-card-preview{background:var(--ulik-sky-tint);border-color:var(--ulik-sky-border)}
.ann-card-banner{margin-bottom:16px}
.ann-card-ic{width:38px;height:38px;border-radius:11px;background:#fff;display:flex;align-items:center;
  justify-content:center;flex:none;font-size:1.05rem;line-height:1}
.ann-card-item .ann-card-ic{background:var(--ulik-sky-tint)}
.ann-card-body{flex:1 1 auto;min-width:0}
.ann-card-banner .ann-card-body,.ann-card-preview .ann-card-body{padding-right:30px}
.ann-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ann-card-tag{font-size:.64rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--ulik-sky-main)}
.ann-card-new{font-size:.62rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  background:var(--ulik-sky-main);color:#fff;border-radius:999px;padding:2px 7px}
.ann-card-date{font-size:.72rem;font-weight:600;color:var(--ulik-slate-muted)}
.ann-card-title{margin:3px 0 6px;font-size:1.02rem;font-weight:800;color:var(--ulik-slate-main);overflow-wrap:anywhere}
.ann-card-content{position:relative;font-size:.88rem;line-height:1.6;color:var(--ink-2,#334155);overflow-wrap:anywhere}
.ann-card-content[hidden]{display:none}
.ann-card-content>:last-child{margin-bottom:0}
.ann-card-content p,.ann-card-content div{margin:0 0 8px}
.ann-card-content ul,.ann-card-content ol{margin:0 0 8px;padding-left:20px}
.ann-card-content li{margin:2px 0}
.ann-card-content a{color:var(--ulik-sky-main);font-weight:600;text-decoration:underline}
.ann-card-content.is-folded{max-height:6.4em;overflow:hidden}
.ann-card-content.is-folded::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2.2em;
  background:linear-gradient(to bottom,rgba(255,255,255,0),#fff)}
.ann-card-banner .ann-card-content.is-folded::after,.ann-card-preview .ann-card-content.is-folded::after{
  background:linear-gradient(to bottom,rgba(234,246,255,0),var(--ulik-sky-tint))}
.ann-card-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px}
.ann-card-foot:not(:has(>:not([hidden]))){display:none}
.ann-card-toggle{border:0;background:none;padding:0;color:var(--ulik-sky-main);font-weight:700;font-size:.84rem;
  cursor:pointer;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.ann-card-toggle[hidden],.ann-card-cta[hidden]{display:none}
.ann-card-cta{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:8px 14px;
  border-radius:var(--radius-button,10px);background:var(--ulik-sky-light);color:#fff;font-weight:700;font-size:.82rem}
.ann-card-cta:hover{opacity:.92;color:#fff}
.ann-card-x{position:absolute;top:10px;right:10px;width:32px;height:32px;border-radius:var(--radius-button,9px);
  border:1px solid transparent;background:transparent;color:var(--ulik-slate-muted);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center}
.ann-card-x:hover{background:#fff;border-color:var(--ulik-sky-border);color:var(--ulik-slate-main)}

/* ---------- daftar pengumuman (/announcements) ---------- */
.ann-list{display:flex;flex-direction:column;gap:12px}

/* ---------- admin: tulis pengumuman ---------- */
/* Kolom pratinjau turun ke bawah form bila ruang konten < ±760px (bukan lebar layar:
   sidebar admin ikut memakan ruang). */
.ann-admin-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));align-items:start}
.ann-cta-box{border:1px dashed var(--line);border-radius:12px;padding:12px}
.ann-cta-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.ann-cta-fields[hidden]{display:none}
.ann-cta-box .check-line span{display:block}

@media(max-width:560px){
  .ann-card{gap:11px;padding:14px}
  .ann-card-ic{width:34px;height:34px;border-radius:10px}
  .ann-cta-fields{grid-template-columns:1fr}
}

/* ==========================================================================
   DASHBOARD BENTO — FASE 2 (Hero Saldo Card + Triplet Metrik)
   --------------------------------------------------------------------------
   Dua modul:
     1. `.ulik-saldo-card`  — kartu saldo gradient sky (60:40 bersama Creator Studio
        Hub dari Fase 1 lewat `.ulik-bento-row`).
     2. `.ulik-metric-card` — 3 kartu indikator di baris bawah bento header.
   Seluruh warna/radius memakai design token Fase 0 (`--ulik-*`, `--radius-*`).

   KENAPA CONTAINER QUERY (`@container`) untuk proporsi 60:40:
   lebar kolom di dashboard bergantung pada sidebar + padding, bukan pada lebar
   viewport — dengan breakpoint viewport, kartu Hub bisa dapat kolom ~430px di laptop
   1280px dan isinya berdesakan. Container query mengukur RUANG YANG BENAR-BENAR
   TERSEDIA, jadi keputusan 2-kolom/bertumpuk selalu tepat. Peramban lama yang belum
   mendukung @container hanya melihat versi bertumpuk (aman, tanpa gulir horizontal).
   ========================================================================== */

/* ---------- baris bento 1: Hub (60%) + Saldo (40%) ---------- */
.ulik-bento-outer{container-type:inline-size}
.ulik-bento-row{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin-bottom:20px;align-items:stretch}
/* Di dalam baris, kartu Hub tidak lagi punya margin bawah sendiri (jarak diatur `gap`). */
.ulik-bento-row .ulik-creator-hub{margin-bottom:0}
/* Ruang ≥1000px → proporsi 60% : 40% seperti mockup desktop. */
@container (min-width:1000px){
  .ulik-bento-row{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
}
/* Kolom Hub menyempit (<820px) → Hub kembali ke susunan satu kolom (versi mobile-nya),
   supaya teks dan tombol tidak berdesakan. */
@container (max-width:820px){
  .ulik-bento-row .ulik-creator-hub{grid-template-columns:minmax(0,1fr);gap:16px}
  .ulik-bento-row .ulik-creator-hub .uh-right{align-items:stretch}
  .ulik-bento-row .ulik-creator-hub .uh-btns,
  .ulik-bento-row .ulik-creator-hub .uh-quick{justify-content:flex-start}
}

/* ---------- kartu saldo ---------- */
.ulik-saldo-card{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:14px;
  padding:20px;border-radius:var(--radius-bento);
  background-color:var(--ulik-sky-main);
  background-image:linear-gradient(135deg,var(--ulik-sky-main) 0%,var(--ulik-sky-light) 100%)}
/* Ornamen vektor: siluet dompet sebagai watermark di pojok kanan kartu (dekoratif). */
.ulik-saldo-card .us-mark{position:absolute;right:-18px;bottom:-22px;width:150px;height:150px;
  fill:#FFFFFF;fill-opacity:.2;pointer-events:none}
.ulik-saldo-card .us-top{position:relative;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
/* Box persegi tumpul transparan berisi ikon dompet + label. */
.ulik-saldo-card .us-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;
  border-radius:var(--radius-button);background:rgba(255,255,255,.25);color:#F0F9FF;
  font-size:.8rem;font-weight:700}
.ulik-saldo-card .us-chip .ic{color:#F0F9FF}
.ulik-saldo-card .us-eye{border:0;background:transparent;padding:0 0 0 2px;margin:0;cursor:pointer;
  font-size:.95rem;line-height:1;color:#F0F9FF}
.ulik-saldo-card .us-eye:hover{opacity:.8}
.ulik-saldo-card .us-value{position:relative;color:#FFFFFF;font-size:clamp(1.6rem,3.4vw,2.1rem);
  font-weight:800;line-height:1.1;letter-spacing:-.02em;overflow-wrap:anywhere}
.ulik-saldo-card .us-mask{display:none;letter-spacing:.12em}
/* Sembunyikan nominal (tombol 👁️) — nilai ASLI tetap ada di DOM, hanya tidak terlihat. */
.ulik-saldo-card.is-hidden .us-value{display:none}
.ulik-saldo-card.is-hidden .us-mask{display:block}
.ulik-saldo-card .us-actions{position:relative;display:flex;gap:10px;flex-wrap:wrap;margin-top:auto}
.ulik-saldo-card .us-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;
  min-height:42px;flex:1 1 auto;padding:10px 16px;border:1px solid transparent;
  border-radius:var(--radius-button);font-weight:800;font-size:.84rem;text-align:center}
.ulik-saldo-card .us-btn-solid{background:#FFFFFF;color:var(--ulik-sky-main)}
.ulik-saldo-card .us-btn-solid:hover{color:var(--ulik-sky-main);opacity:.92}
.ulik-saldo-card .us-btn-ghost{background:rgba(255,255,255,.2);border-color:#FFFFFF;color:#FFFFFF}
.ulik-saldo-card .us-btn-ghost:hover{background:rgba(255,255,255,.3);color:#FFFFFF}
/* Tautan loncat ke panel riwayat di halaman Penarikan tidak tertutup topbar. */
#riwayat{scroll-margin-top:90px}

/* ---------- baris bento 2: triplet metrik ---------- */
.ulik-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:20px}
.ulik-metric-card{display:flex;flex-direction:column;gap:10px;padding:18px;
  background:#FFFFFF;border:1px solid #F1F5F9;border-radius:16px;
  box-shadow:0 12px 30px -26px rgba(15,23,42,.4)}
.ulik-metric-card .um-head{display:flex;align-items:center;gap:10px;min-width:0}
/* Lingkaran ikon soft-blue (token sky-tint). */
.ulik-metric-card .um-ic{width:40px;height:40px;border-radius:50%;background:var(--ulik-sky-tint);
  display:inline-flex;align-items:center;justify-content:center;font-size:1.05rem;line-height:1;flex:none}
.ulik-metric-card .um-title{font-size:.84rem;font-weight:700;color:var(--ulik-slate-muted);
  min-width:0;overflow-wrap:anywhere}
.ulik-metric-card .um-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ulik-metric-card .um-value{font-size:1.5rem;font-weight:800;color:var(--ulik-slate-main);
  line-height:1.15;letter-spacing:-.02em;overflow-wrap:anywhere}
.ulik-metric-card .um-link{font-size:.8rem;font-weight:700;color:var(--ulik-sky-main);white-space:nowrap}
.ulik-metric-card .um-sub{font-size:.78rem;color:var(--ulik-slate-muted)}
/* Badge tren memakai komponen yang SUDAH ADA (`.trend-chip`, ui_trend_chip) supaya
   warnanya konsisten dengan dashboard; hanya ukurannya disesuaikan sedikit. */
.ulik-metric-card .trend-chip{font-size:.72rem}
/* Overview v2 (v1.32): 4 kartu angka; ikon garis SVG berwarna sky di lingkaran tint. */
.ulik-metrics.ulik-metrics-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.ulik-metric-card .um-ic .ic{color:var(--ulik-sky-main)}
@media(max-width:1100px){
  .ulik-metrics.ulik-metrics-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
  /* 4 kartu tetap 2×2 di HP (lebih ringkas daripada 4 baris bertumpuk). */
  .ulik-metrics.ulik-metrics-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .ulik-metrics-4 .ulik-metric-card{padding:14px}
  .ulik-metrics-4 .ulik-metric-card .um-value{font-size:1.2rem}
}
/* Tombol Bagikan (ikon) di chip tautan hub + ikon tombol hub & mata saldo. */
.ulik-creator-hub .uh-link{min-width:min(100%,280px)}
.ulik-creator-hub .uh-link .uh-share{display:inline-flex;align-items:center;padding:6px 9px;
  background:#FFFFFF;border:1px solid var(--ulik-sky-border);color:var(--ulik-sky-main)}
.ulik-creator-hub .uh-btn .ic{color:inherit}
.ulik-saldo-card .us-eye .ic{color:#F0F9FF;vertical-align:-3px}

@media(max-width:900px){
  /* Tablet: 2 kolom, kartu ketiga turun ke baris berikutnya. */
  .ulik-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
  /* Mobile: bertumpuk penuh. */
  .ulik-metrics{grid-template-columns:minmax(0,1fr);gap:12px}
  .ulik-saldo-card{padding:18px}
  .ulik-saldo-card .us-mark{width:120px;height:120px;right:-16px;bottom:-18px}
}

/* ==========================================================================
   COMMERCE STREAM — FASE 3: panel "Transaksi Terbaru" dashboard creator
   --------------------------------------------------------------------------
   Kelas baru: `.ulik-transaksi-panel` (+ header & strip ekspor) dan
   `.ulik-transaksi-item` (+ `.ut-*`). Seluruh warna/radius memakai design token
   Fase 0; warna badge status memang literal sesuai spesifikasi (hijau/merah).

   KENAPA LIST, BUKAN <table>: struktur yang diminta (kotak ikon + nama + tanggal
   bertingkat + pembeli + nominal + badge) adalah baris kartu, dan di layar kecil
   harus menjadi kartu bertumpuk. Dengan <table> kita harus melawan aturan responsif
   `.tbl` global (≤720px) yang dipakai puluhan halaman lain; dengan list, perilaku
   panel ini berdiri sendiri dan TIDAK menyentuh tabel mana pun.
   ========================================================================== */

/* ---------- container panel ---------- */
.ulik-transaksi-panel{background:#FFFFFF;border:1px solid #F1F5F9;border-radius:var(--radius-bento);
  padding:20px;margin-bottom:22px;box-shadow:0 12px 30px -26px rgba(15,23,42,.4)}
.ulik-transaksi-panel .ut-head{display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex-wrap:wrap;margin-bottom:14px}
.ulik-transaksi-panel .ut-head-title{font-size:16px;font-weight:800;color:var(--ulik-slate-main)}
.ulik-transaksi-panel .ut-head-link{font-size:.82rem;font-weight:700;color:var(--ulik-sky-main);white-space:nowrap}

/* ---------- daftar transaksi ---------- */
.ulik-transaksi-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ulik-transaksi-item{display:grid;align-items:center;gap:12px;
  grid-template-columns:36px minmax(0,1fr) minmax(0,180px) auto auto;
  grid-template-areas:"thumb main buyer total status";
  padding:11px 4px;border-bottom:1px solid #F1F5F9}
.ulik-transaksi-item .ut-thumb{grid-area:thumb}
.ulik-transaksi-item .ut-main{grid-area:main}
.ulik-transaksi-item .ut-buyer{grid-area:buyer}
.ulik-transaksi-item .ut-total{grid-area:total}
.ulik-transaksi-item .ut-status{grid-area:status}
.ulik-transaksi-item:last-child{border-bottom:0}
/* Kotak ikon produk 36×36 (gambar asli produk bila ada). */
.ulik-transaksi-item .ut-thumb{width:36px;height:36px;border-radius:8px;background:var(--ulik-sky-tint);
  color:var(--ulik-sky-main);display:flex;align-items:center;justify-content:center;flex:none;
  font-size:1.05rem;line-height:1;overflow:hidden}
.ulik-transaksi-item .ut-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ulik-transaksi-item .ut-main{min-width:0}
.ulik-transaksi-item .ut-title{display:block;font-weight:700;color:var(--ulik-slate-main);
  font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ulik-transaksi-item .ut-date{display:block;color:var(--ulik-slate-muted);font-size:11px}
.ulik-transaksi-item .ut-buyer{min-width:0}
.ulik-transaksi-item .ut-buyer-name{display:block;font-size:.82rem;font-weight:600;color:var(--ulik-slate-main);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ulik-transaksi-item .ut-buyer-email{display:block;font-size:11px;color:var(--ulik-slate-muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ulik-transaksi-item .ut-total{font-weight:800;color:var(--ulik-slate-main);font-size:.9rem;
  white-space:nowrap;text-align:right}
/* Badge status: hijau untuk lunas, merah untuk gagal/kadaluarsa (literal sesuai spec). */
.ulik-transaksi-item .ut-status{justify-self:end}
.ut-badge{display:inline-block;padding:3px 11px;border-radius:999px;font-size:.72rem;font-weight:800;white-space:nowrap}
.ut-badge-ok{background:#DCFCE7;color:#15803D}
.ut-badge-bad{background:#FEE2E2;color:#B91C1C}

/* ---------- MOBILE (<768px): daftar horizontal → kartu bertumpuk ---------- */
@media(max-width:767px){
  .ulik-transaksi-panel{padding:16px}
  /* Susunan kartu: (1) ikon + nama/tanggal, (2) pembeli, (3) nominal di kiri &
     badge status di kanan. Semua kolom di dalam lebar kartu → tidak ada gulir horizontal. */
  .ulik-transaksi-item{grid-template-columns:36px minmax(0,1fr) auto;gap:8px 12px;padding:12px 2px;
    grid-template-areas:
      "thumb main  main"
      "buyer buyer buyer"
      "total total status"}
  .ulik-transaksi-item .ut-title{white-space:normal}
  .ulik-transaksi-item .ut-total{text-align:left;align-self:center}
  .ulik-transaksi-item .ut-status{justify-self:end;align-self:center}
}

/* ==========================================================================
   FASE 4 — ANALITIK (line+area) & NAVIGASI BAWAH MOBILE
   --------------------------------------------------------------------------
   Kelas baru: `.ulik-analytics-panel` (+ `.ua-*`) dan `.ulik-mobile-nav` (+ `.umn-*`).
   Semua warna/radius memakai design token Fase 0; warna badge tren memakai komponen
   `.trend-chip` yang sudah ada supaya konsisten dengan sisa dashboard.
   ========================================================================== */

/* ---------- panel analitik ---------- */
.ulik-analytics-panel{background:#FFFFFF;border:1px solid #F1F5F9;border-radius:var(--radius-bento);
  padding:20px;margin-bottom:22px;box-shadow:0 12px 30px -26px rgba(15,23,42,.4)}
.ulik-analytics-panel .ua-head{display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex-wrap:wrap;margin-bottom:14px}
.ulik-analytics-panel .ua-head-title{font-size:16px;font-weight:800;color:var(--ulik-slate-main)}
/* Pill filter rentang: tampil sebagai satu pill walau isinya <select> asli (tetap
   bisa dipakai tanpa JavaScript — tidak ada menu buatan sendiri yang perlu JS). */
.ulik-analytics-panel .ua-range{margin:0;display:flex;align-items:center;gap:6px}
.ulik-analytics-panel .ua-pill{display:inline-flex;align-items:center;gap:6px;background:#F8FAFC;
  border:1px solid #E2E8F0;border-radius:999px;padding:5px 10px 5px 12px}
.ulik-analytics-panel .ua-pill-label{font-size:11px;font-weight:700;color:var(--ulik-slate-muted)}
.ulik-analytics-panel .ua-pill select{border:0;background:transparent;font:inherit;font-size:11px;
  font-weight:800;color:var(--ulik-sky-main);padding:0 2px;margin:0;cursor:pointer;
  appearance:none;-webkit-appearance:none}
.ulik-analytics-panel .ua-pill-caret{font-size:10px;color:var(--ulik-slate-muted);line-height:1}
.ulik-analytics-panel .ua-pill-btn{cursor:pointer;font-size:11px;font-weight:800;
  color:var(--ulik-sky-main);margin:0}

/* ---------- grafik garis + area ---------- */
.ulik-analytics-panel .ua-chart-box{margin:2px 0 14px}
.ulik-analytics-panel .ua-chart-total{font-weight:700}
.ulik-analytics-panel .ua-chart-wrap{position:relative}
.ulik-analytics-panel .ua-chart{display:block;width:100%;height:190px;overflow:visible}
.ulik-analytics-panel .ua-chart-empty{display:flex;align-items:center;justify-content:center;
  background:#F8FAFC;border:1px dashed #E2E8F0;border-radius:12px;color:var(--ulik-slate-muted);
  font-size:.82rem;text-align:center;padding:18px}
.ulik-analytics-panel .ua-axis{stroke:#E2E8F0;stroke-width:1}
.ulik-analytics-panel .ua-line{fill:none;stroke:var(--ulik-sky-light);stroke-width:3;
  stroke-linejoin:round;stroke-linecap:round}
.ulik-analytics-panel .ua-area{stroke:none}
.ulik-analytics-panel .ua-fill-a{stop-color:var(--ulik-sky-tint);stop-opacity:.95}
.ulik-analytics-panel .ua-fill-b{stop-color:var(--ulik-sky-tint);stop-opacity:0}
.ulik-analytics-panel .ua-dot{fill:#FFFFFF;stroke:var(--ulik-sky-light);stroke-width:2}
/* Garis kedua (klik link): putus-putus sky-main tanpa area. */
.ulik-analytics-panel .ua-line2{stroke:var(--ulik-sky-main);stroke-width:2;stroke-dasharray:6 5}
.ulik-analytics-panel .ua-dot2{stroke:var(--ulik-sky-main)}
/* Legenda + total rentang di atas grafik. */
.ulik-analytics-panel .ua-legend{display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;margin:0 0 6px;
  font-size:.82rem;font-weight:600;color:var(--ulik-slate-muted)}
.ulik-analytics-panel .ua-legend b{margin-left:4px;font-size:1.05rem;font-weight:800;color:var(--ulik-slate-main)}
.ulik-analytics-panel .ua-legend .ua-chart-total{margin-left:auto;font-size:.78rem}
.ulik-analytics-panel .ua-key{display:inline-flex;align-items:center;gap:6px}
.ulik-analytics-panel .ua-sw{display:inline-block;width:18px;height:0;border-top:3px solid var(--ulik-sky-light);border-radius:2px}
.ulik-analytics-panel .ua-sw2{border-top:3px dashed var(--ulik-sky-main)}
.ulik-analytics-panel .ua-axis-x{display:flex;justify-content:space-between;gap:4px;margin-top:4px;
  font-size:.68rem;color:var(--ulik-slate-muted)}
.ulik-analytics-panel .ua-axis-x span{white-space:nowrap}

/* ---------- widget sumber trafik utama ---------- */
.ulik-analytics-panel .ua-traffic{margin-top:16px;background:#F8FAFC;border:1px solid #F1F5F9;
  border-radius:12px;padding:14px}
.ulik-analytics-panel .ua-traffic-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  color:var(--ulik-slate-main);margin-bottom:10px}
.ulik-analytics-panel .ua-traffic-head .ic{color:var(--ulik-sky-main)}
.ulik-analytics-panel .ua-traffic-head b{font-size:.85rem}
.ulik-analytics-panel .ua-traffic-note{margin-left:auto;font-size:.72rem;color:var(--ulik-slate-muted)}
.ulik-analytics-panel .ua-trow{display:grid;grid-template-columns:96px minmax(0,1fr) 44px;
  align-items:center;gap:10px;padding:5px 0}
.ulik-analytics-panel .ua-tlabel{font-size:.78rem;font-weight:700;color:var(--ulik-slate-muted);
  overflow-wrap:anywhere}
.ulik-analytics-panel .ua-tbar{height:9px;border-radius:999px;background:#E2E8F0;overflow:hidden}
.ulik-analytics-panel .ua-tfill{display:block;height:100%;border-radius:999px;min-width:2px}
.ulik-analytics-panel .ua-tfill-light{background:var(--ulik-sky-light)}
.ulik-analytics-panel .ua-tfill-main{background:var(--ulik-sky-main)}
.ulik-analytics-panel .ua-tval{font-size:.74rem;font-weight:800;color:var(--ulik-slate-main);text-align:right}
.ulik-analytics-panel .ua-traffic-empty{margin:6px 0 0}

@media(max-width:767px){
  .ulik-analytics-panel{padding:16px}
  .ulik-analytics-panel .ua-chart{height:150px}
  .ulik-analytics-panel .ua-trow{grid-template-columns:80px minmax(0,1fr) 40px;gap:8px}
}

/* ---------- NAVIGASI BAWAH (khusus mobile <768px) ---------- */
/* Selalu ada di DOM; CSS yang menyembunyikannya di layar besar. */
.ulik-mobile-nav{display:none}
@media(max-width:767px){
  /* WAJIB menetapkan display di sini — tanpa ini `display:none` bawaan di atas tetap
     berlaku dan nav-nya tidak pernah terlihat (bug yang tertangkap uji browser:
     tinggi nav 0 px padahal warna/border-nya sudah benar). */
  .ulik-mobile-nav{display:block;position:fixed;left:0;right:0;bottom:0;z-index:50;background:#FFFFFF;
    border-top:1px solid #E2E8F0;height:60px;
    /* iOS: hormati area aman bawah supaya tidak tertimpa home-indicator. */
    padding-bottom:env(safe-area-inset-bottom)}
  .ulik-mobile-nav ul{list-style:none;margin:0;padding:0;height:60px;
    display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
  .ulik-mobile-nav li{min-width:0}
  .ulik-mobile-nav .umn-item{display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:2px;height:100%;color:var(--ulik-slate-muted);font-weight:700;text-decoration:none}
  .ulik-mobile-nav .umn-ic{display:inline-flex;align-items:center;justify-content:center;
    width:30px;height:22px;border-radius:8px;font-size:1rem;line-height:1}
  .ulik-mobile-nav .umn-label{font-size:10px;line-height:1.1;max-width:100%;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ulik-mobile-nav .umn-item.is-active{color:var(--ulik-sky-main)}
  .ulik-mobile-nav .umn-item.is-active .umn-ic{background:var(--ulik-sky-tint)}
  /* Ruang bawah ekstra supaya konten terakhir tidak tertutup nav (60px + aman bawah). */
  body.pg-dash .app-content{padding-bottom:calc(72px + env(safe-area-inset-bottom))}
  body.pg-dash .app-shell{min-height:100vh}
}

/* ==========================================================================
   ADMIN DASHBOARD — FASE 1: Hero + KPI grid 2×4
   --------------------------------------------------------------------------
   Kelas baru: `.ulik-adm-hero` (+ `.adh-*`) dan `.ulik-adm-kpi`.
   • Semua nilai memakai design token Fase 0 (`--ulik-*`, `--radius-*`) + token brand
     yang sudah ada, jadi bahasa visualnya sama dengan creator dashboard.
   • SCOPE: kedua kelas ini HANYA dipakai di /admin/dashboard (tidak ada halaman lain
     yang memakainya), sehingga 17 halaman admin lain dan creator studio tidak
     terpengaruh. Tidak ada satu pun aturan lama yang diubah.
   ========================================================================== */

/* ---------- hero ---------- */
.ulik-adm-hero{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:20px;
  align-items:center;padding:22px 24px;margin-bottom:20px;
  background-color:#fff;
  /* gradasi tipis dari token sky-tint di kiri (pola yang sama dengan kartu Creator Studio Hub) */
  background-image:linear-gradient(135deg,var(--ulik-sky-tint) 0%,rgba(224,242,254,0) 52%);
  border:1px solid #F1F5F9;border-radius:var(--radius-bento);
  box-shadow:0 12px 30px -26px rgba(15,23,42,.45)}
.ulik-adm-hero .adh-left{min-width:0}
.ulik-adm-hero .adh-title{margin:0 0 4px;font-size:1.45rem;font-weight:800;
  color:var(--ulik-slate-main);letter-spacing:-.02em}
.ulik-adm-hero .adh-sub{margin:0;font-size:.9rem;color:var(--ulik-slate-muted);max-width:56ch}
.ulik-adm-hero .adh-date{display:inline-flex;align-items:center;gap:7px;margin:10px 0 0;
  font-size:.8rem;font-weight:600;color:var(--ulik-slate-muted)}
.ulik-adm-hero .adh-date .ic{color:var(--ulik-sky-main)}

/* ---------- penyesuaian kartu KPI (SCOPED, hasil micro-revision) ----------
   Kartu target lebih padat daripada kartu default. Penyumbang terbesar adalah
   `line-height:1.55` bawaan body pada angka 24px (37px untuk teks 24px) — angka
   seharusnya rapat. Semua aturan di bawah di-scope ke `.ulik-adm-kpi` sehingga
   halaman lain (Users/Orders/Sales/Penarikan) yang memakai `.stat-card` TIDAK
   terpengaruh.
     element          → selector                  property      current → target
     kartu KPI        → .ulik-adm-kpi .stat-card  padding       18px 20px → 16px 18px
     container ikon   → .ulik-adm-kpi .stat-ic    width/height  38px → 34px
     angka KPI        → .ulik-adm-kpi .stat-big   line-height   1.55 → 1.15
     angka KPI        → .ulik-adm-kpi .stat-big   margin-top    10px → 8px
     baris catatan    → .ulik-adm-kpi .stat-foot  margin-top    8px → 6px
   Ukuran font angka (1.5rem) dan warna TIDAK diubah: angka tetap focal point. */
.ulik-adm-kpi .stat-card{padding:16px 18px}
.ulik-adm-kpi .stat-ic{width:34px;height:34px}
.ulik-adm-kpi .stat-big{line-height:1.15;margin-top:8px}
.ulik-adm-kpi .stat-foot{margin-top:6px}

/* ---------- KPI grid 2×4 (khusus halaman ini) ---------- */
.ulik-adm-kpi{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:20px}

/* ---------- responsif ---------- */
@media(max-width:1200px){
  /* Ruang di bawah ~1200px tidak cukup untuk 4 kolom angka rupiah → 2 kolom. */
  .ulik-adm-kpi{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:1000px){
  /* Tablet: hero jadi satu kolom (selaras dengan breakpoint .dash-grid di halaman ini). */
  .ulik-adm-hero{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px}
  .ulik-adm-hero .adh-title{font-size:1.28rem}
}
@media(max-width:620px){
  /* HP: satu KPI per baris supaya angka & label tidak terpotong. */
  .ulik-adm-kpi{grid-template-columns:minmax(0,1fr)}
  .ulik-adm-hero{padding:18px}
  .ulik-adm-hero .adh-sub{font-size:.86rem}
}

/* ==========================================================================
   ADMIN DASHBOARD — FASE 2: Panel Analitik + Aktivitas
   --------------------------------------------------------------------------
   Kelas: `.ulik-adm-activity` (+ `.adm-act*`). Panel analitik lama (`.aa-*`) diganti grafik Tren platform (v1.33).
   Keduanya dipakai HANYA di /admin/dashboard (dipasang bersama `.panel` supaya gaya dasar
   kartu di-reuse) sehingga 17 halaman admin lain dan creator dashboard tidak terpengaruh.
   CATATAN: pill di sini punya deklarasi sendiri (bukan menumpang kelas creator
   `.ua-pill`) supaya CSS creator tetap BYTE-IDENTIK — beberapa suite mengunci teks
   aturan itu. Duplikasi kecil ini disengaja.
   ========================================================================== */

/* ---------- micro-revision Fase 2 (scoped) ----------
   element          → selector                         property  current            → target
   panel aktivitas  → .ulik-adm-activity                border    1px var(--line)    → 1px #F1F5F9
   Alasan: border #F1F5F9 = bahasa visual kartu target (sama dengan hero Fase 1 &
   panel transaksi), dan 12,48px termasuk "font terlalu kecil" yang dilarang direktif.
   Hanya dua panel ini yang disentuh (halaman lain tetap memakai var(--line)). */
.ulik-adm-activity{border-color:#F1F5F9}


/* ---------- panel aktivitas ---------- */
.ulik-adm-activity .adm-act-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ulik-adm-activity .adm-act{display:grid;grid-template-columns:auto minmax(0,1fr) auto;
  align-items:start;gap:12px;padding:12px 2px;border-bottom:1px dashed var(--line)}
.ulik-adm-activity .adm-act:last-child{border-bottom:0}
.ulik-adm-activity .adm-act-ic{width:32px;height:32px;border-radius:10px}
.ulik-adm-activity .adm-act-main{min-width:0;font-size:.85rem;color:var(--ink-2);line-height:1.45;
  overflow-wrap:anywhere}
.ulik-adm-activity .adm-act-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;
  flex:none;text-align:right}
.ulik-adm-activity .adm-act-time{font-size:.72rem;color:var(--mut-2);white-space:nowrap}
.ulik-adm-activity .badge{font-size:.7rem}

@media(max-width:620px){
  /* HP: kolom status pindah ke bawah blok teks supaya tidak ada teks yang terjepit. */
  .ulik-adm-activity .adm-act{grid-template-columns:auto minmax(0,1fr);gap:10px}
  .ulik-adm-activity .adm-act-side{grid-column:2;flex-direction:row;align-items:center;
    justify-content:flex-start;gap:8px;text-align:left}
}

/* ==========================================================================
   ADMIN DASHBOARD — FASE 3: Data Sections (creator / produk / pesanan)
   --------------------------------------------------------------------------
   Semua aturan di bawah di-scope ke kelas pembungkus panel:
     `.ulik-adm-creators` · `.ulik-adm-products` · `.ulik-adm-orders`
   jadi TIDAK ada selector global (`table`, `th`, `td`, `.tbl`, `.badge`, `.panel`)
   yang disentuh — 17 halaman admin lain yang memakai `.tbl` tetap sama.
   Markup tabel + `data-label` per sel DIPERTAHANKAN supaya mekanisme responsif
   existing (stacking ≤720px) tetap bekerja.
   ========================================================================== */

/* ---------- A. Penjualan per creator ---------- */
.ulik-adm-creators .tbl th,.ulik-adm-orders .tbl th{color:var(--ulik-slate-muted);
  font-size:.7rem;letter-spacing:.06em;padding-bottom:11px;border-bottom:1px solid var(--line)}
.ulik-adm-creators .tbl td,.ulik-adm-orders .tbl td{padding:13px 16px;
  border-bottom:1px solid rgba(15,23,42,.06)}
.ulik-adm-creators .tbl tr:last-child td,.ulik-adm-orders .tbl tr:last-child td{border-bottom:0}
.ulik-adm-creators .tbl tr:hover td,.ulik-adm-orders .tbl tr:hover td{background:rgba(14,165,233,.03)}
/* Sel angka rata kanan supaya kolom metrik mudah dibandingkan antar baris. */
.ulik-adm-creators .adm-num,.ulik-adm-orders .adm-num{text-align:right;white-space:nowrap}
/* Creator = focal text: avatar + nama tebal + username sebagai metadata ringan. */
.ulik-adm-creators .adm-creator{display:flex;align-items:center;gap:10px;min-width:0}
.ulik-adm-creators .adm-creator .avatar{flex:none}
.ulik-adm-creators .adm-creator-meta{min-width:0;display:flex;flex-direction:column;line-height:1.3}
.ulik-adm-creators .adm-creator-meta b{font-size:.9rem;font-weight:700;color:var(--ulik-slate-main);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ulik-adm-creators .adm-username{font-size:.75rem;color:var(--ulik-slate-muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ulik-adm-creators .adm-rev{font-weight:800;color:var(--ulik-slate-main)}
/* Angka kolom metrik: lebih terang dari label, jangan terlalu kecil. */
.ulik-adm-creators .adm-num{font-size:.86rem;color:var(--ink-2)}

/* ---------- B. Produk terlaris ---------- */
.ulik-adm-products .adm-rank-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ulik-adm-products .adm-rank-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;gap:14px;padding:11px 2px;border-bottom:1px solid rgba(15,23,42,.06)}
.ulik-adm-products .adm-rank-row:last-child{border-bottom:0}
/* Rank = anchor visual: bulatan tint. */
.ulik-adm-products .adm-rank{width:30px;height:30px;border-radius:50%;flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--ulik-sky-tint);color:var(--ulik-sky-main);
  font-size:.8rem;font-weight:800}
.ulik-adm-products .adm-prod{min-width:0;display:flex;flex-direction:column;line-height:1.35}
.ulik-adm-products .adm-prod-name{font-size:.88rem;font-weight:700;color:var(--ulik-slate-main);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ulik-adm-products .adm-prod-sub{font-size:.75rem;color:var(--ulik-slate-muted)}
.ulik-adm-products .adm-prod-price{font-size:.9rem;font-weight:800;color:var(--ulik-slate-main);
  white-space:nowrap;text-align:right}

/* ---------- C. Pesanan terbaru ---------- */
.ulik-adm-orders .adm-order-no{font-weight:700}
.ulik-adm-orders .adm-sandbox{font-size:.66rem;padding:2px 8px;vertical-align:middle}
.ulik-adm-orders .adm-order-total{font-weight:800;color:var(--ulik-slate-main)}
.ulik-adm-orders .adm-when{font-size:.8rem;color:var(--ulik-slate-muted);white-space:nowrap}

/* ---------- responsif ---------- */
@media(max-width:720px){
  /* Mode stacking `.tbl` (existing) sudah aktif di sini — yang disesuaikan hanya
     kerapian label & nilai supaya tidak ada teks tertutup di layar sempit. */
  .ulik-adm-creators .tbl td,.ulik-adm-orders .tbl td{padding:6px 14px}
  .ulik-adm-creators .adm-num,.ulik-adm-orders .adm-num{text-align:left}
  .ulik-adm-creators .adm-creator-meta b,.ulik-adm-products .adm-prod-name{white-space:normal}
}
@media(max-width:620px){
  /* Produk terlaris: harga turun ke barisnya sendiri agar nama produk tetap terbaca. */
  .ulik-adm-products .adm-rank-row{grid-template-columns:auto minmax(0,1fr);row-gap:4px}
  .ulik-adm-products .adm-prod-price{grid-column:2;text-align:left}
}

/* ==========================================================================
   ADMIN DASHBOARD v1.33 — sapaan tipis, "Perlu tindakan", label kartu, tab grafik
   --------------------------------------------------------------------------
   Kelas baru: `.adm-hero-slim`, `.adm-todo*`, `.adm-kpi-label`, `.adm-tabs`/`.adm-tab`,
   `.adm-tops`, `.adm-creator-link`, `.adm-sbx-note`. Grafik memakai panel & grafik
   garis-area yang sama dengan Overview kreator (`.ulik-analytics-panel`). Semua warna
   memakai token biru langit yang sudah ada.
   ========================================================================== */
.adm-hero-slim{grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:16px 20px;margin-bottom:16px}
.adm-hero-slim .adh-title{font-size:1.2rem}
.adm-hero-slim .adh-date{margin:0}
.adm-todo{background:#fff;border:1px solid var(--ulik-sky-border);border-radius:var(--radius-bento);padding:16px 18px;margin-bottom:20px;
  box-shadow:0 12px 30px -26px rgba(15,23,42,.4)}
.adm-todo-head{display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap;margin-bottom:12px}
.adm-todo-head b{display:inline-flex;align-items:center;gap:7px;font-size:.95rem;color:var(--ulik-slate-main)}
.adm-todo-head b .ic{color:var(--ulik-sky-main)}
.adm-todo-head span{font-size:.8rem;color:var(--ulik-slate-muted)}
.adm-todo.is-clear .adm-todo-head{margin-bottom:0}
.adm-todo.is-clear .adm-todo-head b .ic{color:#047857}
.adm-todo-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.adm-todo-item{display:flex;align-items:center;gap:10px;padding:12px;border-radius:14px;background:#F8FAFC;border:1px solid #F1F5F9;
  color:var(--ulik-slate-main);min-width:0}
.adm-todo-item:hover{border-color:var(--ulik-sky-border);background:var(--ulik-sky-tint);opacity:1}
.adm-todo-ic{width:36px;height:36px;border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;flex:none;
  color:var(--ulik-sky-main)}
.adm-todo-tx{min-width:0;display:flex;flex-direction:column;line-height:1.3}
.adm-todo-tx b{font-size:.84rem;font-weight:700}
.adm-todo-tx small{font-size:.72rem;color:var(--ulik-slate-muted)}
.adm-todo-n{margin-left:auto;min-width:28px;height:28px;padding:0 8px;border-radius:999px;display:flex;align-items:center;
  justify-content:center;font-weight:800;font-size:.85rem;background:#E2E8F0;color:var(--ulik-slate-muted)}
.adm-todo-item.has-count .adm-todo-n{background:var(--ulik-sky-main);color:#fff}
.adm-kpi-label{display:flex;align-items:center;gap:7px;font-size:.74rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ulik-slate-muted);margin:0 0 10px}
.adm-kpi-label .ic{color:var(--ulik-sky-main)}
.adm-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}
.adm-tab{border:1px solid #E2E8F0;background:#fff;border-radius:999px;padding:6px 14px;font:700 .8rem var(--font);
  color:var(--ulik-slate-muted);text-decoration:none}
.adm-tab:hover{color:var(--ulik-sky-main);border-color:var(--ulik-sky-border);opacity:1}
.adm-tab.is-on{background:var(--ulik-sky-tint);border-color:var(--ulik-sky-border);color:var(--ulik-sky-main)}
.dash-grid > .ulik-analytics-panel{margin-bottom:0}
.adm-tops .panel{height:100%}
.adm-creator-link{color:inherit}
.adm-creator-link:hover b{color:var(--ulik-sky-main)}
.adm-sbx-note{display:inline-flex;align-items:center;gap:5px;font-size:.74rem;color:var(--ulik-slate-muted);margin-right:auto;margin-left:10px}
.adm-sbx-note .ic{color:#D97706}
@media(max-width:1100px){.adm-todo-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){
  .adm-hero-slim{grid-template-columns:1fr;gap:6px}
  .adm-todo-list{grid-template-columns:1fr}
  .adm-sbx-note{margin-left:0;width:100%;order:3}
  /* 8 kartu angka tetap 2×2 per kelompok di HP (seperti Overview kreator). */
  .ulik-adm-kpi{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .ulik-adm-kpi .stat-card{padding:14px}
  .ulik-adm-kpi .stat-big{font-size:1.1rem;overflow-wrap:anywhere}
  .ulik-adm-kpi .stat-ic{display:none}
}

/* ==========================================================================
   MENU SALES v1.34 — analitik penjualan per periode
   --------------------------------------------------------------------------
   Kelas baru berawalan `.sl-` (toolbar periode, panel produk/pembayaran/sumber,
   grafik kolom bulanan) + `.wd-breakdown` (rincian di halaman Penarikan). Kartu angka
   memakai `.ulik-metrics-4` (Overview), grafik memakai `.ulik-analytics-panel`, tab
   memakai `.adm-tabs`. Semua warna = token biru langit yang sudah ada.
   ========================================================================== */
.sl-toolbar{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;margin-bottom:18px}
.sl-period{display:inline-flex;background:#fff;border:1px solid #E2E8F0;border-radius:12px;padding:4px;gap:2px;box-shadow:0 8px 20px -18px rgba(15,23,42,.4)}
.sl-pill{border:0;background:none;border-radius:9px;padding:7px 14px;font:700 .82rem var(--font);color:var(--ulik-slate-muted);cursor:pointer}
.sl-pill.is-on{background:var(--ulik-sky-main);color:#fff;box-shadow:0 6px 14px -8px rgba(14,165,233,.8)}
.sl-range-note{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--ulik-slate-muted)}
.sl-range-note .ic{color:var(--ulik-sky-main)}
.sl-spacer{flex:1}
.sl-trend{margin-bottom:20px}
.sl-trend .ua-head{flex-wrap:wrap;gap:10px}
.sl-tabs{margin:0}
.dash-grid.sl-row{align-items:stretch}
.sl-row .panel{height:100%}
.sl-num{text-align:right;white-space:nowrap}
.sl-prod{display:flex;align-items:center;gap:10px;min-width:0}
.sl-prod-ic{width:34px;height:34px;border-radius:10px;background:var(--ulik-sky-tint);color:var(--ulik-sky-main);display:flex;align-items:center;justify-content:center;flex:none}
.sl-prod-meta{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.sl-prod-meta b{font-size:.88rem;color:var(--ulik-slate-main);line-height:1.3}
.sl-products .tbl td,.sl-products .tbl th{padding-left:12px;padding-right:12px}
.sl-prod-meta small{font-size:.72rem;color:var(--ulik-slate-muted)}
.sl-share{display:flex;align-items:center;gap:8px;min-width:90px}
.sl-share i{flex:1;height:8px;border-radius:999px;background:#E2E8F0;overflow:hidden;display:block}
.sl-share u{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--ulik-sky-main),var(--ulik-sky-light))}
.sl-share b{font-size:.8rem;min-width:34px;text-align:right;color:var(--ulik-slate-main)}
.sl-pay-big{display:flex;align-items:baseline;gap:8px;margin:2px 0 12px}
.sl-pay-big b{font-size:2rem;font-weight:800;letter-spacing:-.02em;color:var(--ulik-slate-main)}
.sl-pay-big span{font-size:.84rem;color:var(--ulik-slate-muted)}
.sl-stack,.sl-split-bar{display:flex;height:12px;border-radius:999px;overflow:hidden;background:#E2E8F0;gap:2px}
.sl-seg{display:block;height:100%}
.sl-ok,.sl-main{background:var(--ulik-sky-main)}
.sl-light{background:var(--ulik-sky-light)}
.sl-warn{background:#FBBF24}
.sl-mut{background:#CBD5E1}
.sl-err{background:#F87171}
.sl-legend{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.sl-legend li{display:grid;grid-template-columns:auto minmax(0,1fr) auto 40px;align-items:center;gap:8px;font-size:.84rem}
.sl-legend b{color:var(--ulik-slate-main)}
.sl-legend small{color:var(--ulik-slate-muted);text-align:right}
.sl-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.sl-tip{display:flex;gap:8px;align-items:flex-start;margin:14px 0 0;padding:10px 12px;border-radius:12px;background:var(--ulik-sky-tint);
  font-size:.8rem;color:var(--ulik-slate-main);line-height:1.45}
.sl-tip .ic{color:var(--ulik-sky-main);flex:none;margin-top:2px}
.sl-tip a{color:var(--ulik-sky-main);font-weight:700}
.sl-split-bar{height:14px}
.sl-split-legend{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.sl-split-legend > div{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;align-items:center;padding:12px;border-radius:12px;background:#F8FAFC;border:1px solid #F1F5F9}
.sl-split-legend span:not(.sl-dot){font-size:.8rem;font-weight:700;color:var(--ulik-slate-muted)}
.sl-split-legend b{grid-column:1/-1;font-size:1.1rem;color:var(--ulik-slate-main)}
.sl-split-legend small{grid-column:1/-1;font-size:.74rem;color:var(--ulik-slate-muted)}
.sl-methods{padding:clamp(16px,3vw,22px)}
.sl-methods .ua-trow{grid-template-columns:90px minmax(0,1fr) 44px}
.sl-cols{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:8px;align-items:end;height:200px;padding-top:8px}
.sl-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px;min-width:0}
.sl-col i{display:block;width:100%;max-width:36px;border-radius:8px 8px 4px 4px;background:var(--ulik-sky-tint);border:1px solid var(--ulik-sky-border);transition:background .2s}
.sl-col:hover i{background:var(--ulik-sky-light)}
.sl-col.is-now i{background:linear-gradient(180deg,var(--ulik-sky-light),var(--ulik-sky-main));border-color:transparent}
.sl-col-v{font-size:.66rem;font-weight:700;color:var(--ulik-slate-muted);white-space:nowrap}
.sl-col.is-now .sl-col-v{color:var(--ulik-sky-main)}
.sl-col-m{font-size:.72rem;font-weight:700;color:var(--ulik-slate-muted)}
.sl-monthly{margin-top:18px}
/* angka kartu tidak terpotong di tengah (Rp2.023.00 / 0) */
.ulik-metrics-4 .um-value{overflow-wrap:normal;white-space:nowrap;font-size:clamp(1.15rem,1.7vw,1.5rem)}
@media(max-width:900px){.sl-split-legend{grid-template-columns:1fr}}
@media(max-width:560px){
  .sl-period{width:100%;justify-content:space-between}.sl-pill{flex:1;padding:7px 6px}
  .sl-spacer{display:none}
  .sl-cols{gap:4px;height:170px}.sl-col-v{display:none}
  .sl-share{min-width:0}
}
.sl-pill{text-decoration:none;display:inline-flex;align-items:center}
.sl-pill:hover{color:var(--ulik-sky-main);opacity:1}
.sl-pill.is-on:hover{color:#fff}
.sl-row-single{margin-bottom:18px}
.wd-breakdown{display:flex;gap:8px;align-items:flex-start;margin:12px 0 0;line-height:1.5}
.wd-breakdown .ic{color:var(--ulik-sky-main);flex:none;margin-top:2px}

/* ==========================================================================
   PENARIKAN v1.35 — rekening tersimpan, jendela Tarik Dana, status bertahap
   --------------------------------------------------------------------------
   Kelas baru berawalan `.wd-`. Kartu saldo = `.ulik-saldo-card` (Overview), kartu angka
   = `.ulik-metric-card`, tab = `.adm-tabs`, kalkulator = `.fee-calc`. Jendela tampil
   lewat `.is-open` (JavaScript) atau `:target` (tanpa JavaScript).
   ========================================================================== */
.wd-top{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:20px;margin-bottom:20px;align-items:stretch}
.wd-saldo{padding:24px;gap:16px}
.wd-saldo .us-value{font-size:clamp(1.9rem,3.6vw,2.5rem)}
.wd-saldo .us-btn .ic{color:inherit}
.wd-saldo .us-eye .ic{color:#F0F9FF;vertical-align:-3px}
.wd-glass{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border-radius:14px;overflow:hidden;
  background:rgba(255,255,255,.28);border:1px solid rgba(255,255,255,.35)}
.wd-glass > div{display:flex;flex-direction:column;gap:2px;padding:12px 14px;background:rgba(255,255,255,.14);min-width:0}
.wd-glass small{font-size:.72rem;color:#E0F2FE;font-weight:600}
.wd-glass b{font-size:1rem;color:#fff;white-space:nowrap}
.wd-glass span{font-size:.7rem;color:#E0F2FE;opacity:.9}
.wd-lock{position:relative;display:flex;align-items:center;gap:8px;margin:0;padding:10px 12px;border-radius:12px;background:rgba(15,23,42,.18);
  color:#fff;font-size:.8rem;line-height:1.4}
.wd-lock .ic{flex:none;color:#fff}
.wd-dest{display:flex;flex-direction:column}
.wd-acct{display:flex;align-items:center;gap:12px;padding:14px;border-radius:14px;border:1px solid var(--ulik-sky-border);
  background:linear-gradient(135deg,var(--ulik-sky-tint),#fff 70%)}
.wd-acct.is-muted{background:#F8FAFC;border-color:#E2E8F0;opacity:.8;margin-top:10px}
.wd-bank{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex:none;
  font-size:.66rem;font-weight:900;letter-spacing:.02em;color:#fff;background:var(--ulik-sky-main)}
.wd-bank-bca{background:#0369A1}.wd-bank-bri{background:#0284C7}.wd-bank-mdr{background:#0EA5E9}.wd-bank-bni{background:#38BDF8}
.wd-bank-gpy{background:#06B6D4}.wd-bank-ovo{background:#6366F1}.wd-bank-dana{background:#3B82F6}.wd-bank-spy{background:#F97316}
.wd-acct-meta{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.35}
.wd-acct-meta b{font-size:.95rem;color:var(--ulik-slate-main);letter-spacing:.01em}
.wd-acct-meta small{font-size:.8rem;color:var(--ulik-slate-muted)}
.wd-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:.72rem;font-weight:800;white-space:nowrap}
.wd-badge-ok{background:#ECFDF5;color:#047857}.wd-badge-warn{background:#FFFBEB;color:#B45309}.wd-badge-muted{background:#F1F5F9;color:var(--ulik-slate-muted);font-weight:700}
.wd-edit{border:1px solid var(--ulik-sky-border);background:#fff;color:var(--ulik-sky-main);width:36px;height:36px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.wd-edit:hover{background:var(--ulik-sky-tint)}
.wd-dest-note{display:flex;gap:8px;align-items:flex-start;margin:14px 0 0;font-size:.8rem;color:var(--ulik-slate-muted);line-height:1.45}
.wd-dest-note .ic{color:var(--ulik-sky-main);flex:none;margin-top:2px}
.wd-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:18px 10px;border:1px dashed var(--ulik-sky-border);
  border-radius:14px;background:#F8FCFF}
.wd-empty-ic{width:52px;height:52px;border-radius:16px;background:var(--ulik-sky-tint);color:var(--ulik-sky-main);display:flex;align-items:center;justify-content:center;margin-bottom:4px}
.wd-empty b{color:var(--ulik-slate-main)}.wd-empty > span{font-size:.82rem;color:var(--ulik-slate-muted);margin-bottom:6px}
.wd-pending{margin-top:12px;padding:12px;border-radius:12px;background:#FFFBEB;border:1px solid #FDE68A;font-size:.82rem;color:#78350F}
.wd-pending p{margin:0 0 6px;line-height:1.45}
.wd-pending-act{display:flex;gap:8px;align-items:center}
.wd-inline{display:inline;margin:0}
.wd-linkbtn{border:0;background:none;padding:0;font:700 .82rem var(--font);color:var(--ulik-sky-main);cursor:pointer}
.wd-linkbtn.is-danger{color:#DC2626}
.wd-cool{margin-top:10px;display:flex;flex-direction:column;gap:6px;font-size:.78rem;color:var(--ulik-slate-muted)}
.wd-cool-bar{height:8px;border-radius:999px;background:#E2E8F0;overflow:hidden}
.wd-cool-bar i{display:block;height:100%;background:linear-gradient(90deg,#FBBF24,#F59E0B)}
.wd-stats{margin-bottom:20px}
.wd-stats .um-ic .ic{color:var(--ulik-sky-main)}
.wd-history .panel-head{flex-wrap:wrap;gap:10px}
.wd-history .adm-tabs{margin:0}
.wd-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.wd-item{border:1px solid #E2E8F0;border-radius:14px;padding:14px;background:#fff}
.wd-item-top{display:flex;align-items:center;gap:10px}
.wd-item-ic{width:36px;height:36px;border-radius:10px;background:var(--ulik-sky-tint);color:var(--ulik-sky-main);display:flex;align-items:center;justify-content:center;flex:none}
.wd-item-main{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.35}
.wd-item-main b{font-size:1rem;color:var(--ulik-slate-main)}
.wd-item-main small{font-size:.75rem;color:var(--ulik-slate-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wd-steps{list-style:none;margin:14px 0 10px;padding:0;display:grid;grid-template-columns:repeat(3,1fr);position:relative}
.wd-steps li{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px;z-index:1}
.wd-steps li::before{content:"";position:absolute;top:11px;left:-50%;width:100%;height:3px;background:#E2E8F0;z-index:-1}
.wd-steps li:first-child::before{display:none}
.wd-steps li.is-done::before,.wd-steps li.is-now::before{background:var(--ulik-sky-light)}
.wd-steps li.is-fail::before{background:#FCA5A5}
.wd-dot{width:24px;height:24px;border-radius:50%;background:#fff;border:2px solid #CBD5E1;display:flex;align-items:center;justify-content:center;color:#fff}
.wd-steps .is-done .wd-dot{background:var(--ulik-sky-main);border-color:var(--ulik-sky-main)}
.wd-steps .is-now .wd-dot{border-color:var(--ulik-sky-main);box-shadow:0 0 0 4px rgba(14,165,233,.18)}
.wd-steps .is-fail .wd-dot{background:#EF4444;border-color:#EF4444}
.wd-steps b{font-size:.74rem;color:var(--ulik-slate-main)}
.wd-steps small{font-size:.66rem;color:var(--ulik-slate-muted)}
.wd-steps li:not(.is-done):not(.is-now):not(.is-fail) b{color:var(--ulik-slate-muted)}
.wd-item-note{margin:0;padding-top:10px;border-top:1px dashed #E2E8F0;font-size:.78rem;color:var(--ulik-slate-muted)}
.wd-in{color:#047857}.wd-out{color:var(--ulik-slate-main)}
.wd-history .wd-breakdown{margin-top:14px}
/* jendela */
.wd-modal{position:fixed;inset:0;z-index:250;background:rgba(15,23,42,.45);backdrop-filter:blur(3px);display:none;align-items:center;justify-content:center;padding:16px}
.wd-modal.is-open,.wd-modal:target{display:flex}
/* Dengan JavaScript, jendela dikendalikan kelas .is-open saja (:target tidak ikut berubah saat ditutup). */
html.wd-js .wd-modal:target{display:none}
html.wd-js .wd-modal.is-open{display:flex}
.wd-sheet{width:min(480px,100%);max-height:calc(100vh - 32px);overflow:auto;background:#fff;border-radius:22px;padding:20px;
  box-shadow:0 30px 80px -30px rgba(15,23,42,.55);display:flex;flex-direction:column;gap:12px}
.wd-sheet-head{display:flex;align-items:center;justify-content:space-between}
.wd-sheet-head b{display:inline-flex;align-items:center;gap:8px;font-size:1.05rem;color:var(--ulik-slate-main)}
.wd-sheet-head b .ic{color:var(--ulik-sky-main)}
.wd-x{border:0;background:#F1F5F9;border-radius:10px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ulik-slate-muted)}
.wd-amount{display:flex;flex-direction:column;gap:6px;font-size:.8rem;font-weight:700;color:var(--ulik-slate-muted)}
.wd-amount-in{display:flex;align-items:center;gap:6px;border:2px solid var(--ulik-sky-border);border-radius:14px;padding:6px 14px;background:#F8FCFF}
.wd-amount-in:focus-within{border-color:var(--ulik-sky-main)}
.wd-amount-in i{font-style:normal;font-weight:800;color:var(--ulik-sky-main);font-size:1.2rem}
.wd-amount-in input{border:0!important;background:transparent;font-size:1.7rem;font-weight:800;color:var(--ulik-slate-main);padding:4px 0;margin:0;width:100%;outline:none;box-shadow:none}
.wd-chips{display:flex;gap:8px;flex-wrap:wrap}
.wd-chip{border:1px solid #E2E8F0;background:#fff;border-radius:999px;padding:6px 14px;font:700 .8rem var(--font);color:var(--ulik-slate-muted);cursor:pointer}
.wd-chip.is-on{background:var(--ulik-sky-tint);border-color:var(--ulik-sky-border);color:var(--ulik-sky-main)}
.wd-hint{font-size:.74rem;color:var(--ulik-slate-muted);margin-top:-4px}
.wd-to small{display:block;font-size:.74rem;font-weight:700;color:var(--ulik-slate-muted);margin-bottom:6px}
.wd-to .wd-acct{padding:10px 12px}
.wd-eta{display:flex;gap:8px;align-items:center;margin:0;font-size:.8rem;color:var(--ulik-slate-muted)}
.wd-eta .ic{color:var(--ulik-sky-main)}
.wd-sheet-foot{display:flex;gap:10px;justify-content:flex-end;padding-top:4px}
.wd-sheet-foot .btn-primary{flex:1}
.wd-field-l{font-size:.8rem;font-weight:700;color:var(--ulik-slate-muted)}
.wd-methods{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.wd-mgroup{grid-column:1/-1;font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ulik-slate-muted);margin-top:2px}
.wd-m{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;border:1px solid #E2E8F0;border-radius:14px;
  cursor:pointer;font-size:.74rem;font-weight:700;color:var(--ulik-slate-main);text-align:center}
.wd-m input{position:absolute;opacity:0;pointer-events:none}
.wd-m .wd-bank{width:38px;height:38px;font-size:.6rem}
.wd-m:has(input:checked){border-color:var(--ulik-sky-main);background:var(--ulik-sky-tint);box-shadow:0 0 0 3px rgba(14,165,233,.15)}
.wd-secure{display:flex;gap:10px;padding:12px 14px;border-radius:14px;background:var(--ulik-sky-tint);color:var(--ulik-slate-main);font-size:.8rem;line-height:1.45}
.wd-secure > .ic{color:var(--ulik-sky-main);flex:none;margin-top:2px}
.wd-secure ol{margin:6px 0 0;padding-left:18px}
@media(max-width:1000px){.wd-top{grid-template-columns:minmax(0,1fr)}}
@media(max-width:900px){.wd-list{grid-template-columns:minmax(0,1fr)}.wd-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:560px){
  .wd-saldo{padding:18px}
  .wd-glass{grid-template-columns:minmax(0,1fr)}
  .wd-glass > div{flex-direction:row;align-items:baseline;gap:8px;flex-wrap:wrap}
  .wd-stats{grid-template-columns:minmax(0,1fr)}
  .wd-methods{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
  .wd-modal{align-items:flex-end;padding:0}
  .wd-sheet{border-radius:22px 22px 0 0;max-height:92vh}
  .wd-acct-meta b{font-size:.88rem}
  .wd-badge{font-size:.66rem;padding:3px 8px}
}
.ulik-saldo-card .us-btn.is-disabled{opacity:.55;cursor:not-allowed}
.wd-history .adm-tab{cursor:pointer}
.wd-sheet .fee-calc-note:empty{display:none}
.wd-form{display:flex;flex-direction:column;gap:12px;margin:0}
@media(max-width:560px){.wd-dest .wd-acct{flex-wrap:wrap}.wd-dest .wd-acct .wd-badge{margin-left:56px}.wd-dest .wd-acct .wd-edit{margin-left:auto}}
.wd-eta span b{color:var(--ulik-slate-main)}

/* ==========================================================================
   ADMIN WITHDRAWALS v1.35 — kartu pengajuan, perubahan rekening, jendela Tolak/Dibayar
   --------------------------------------------------------------------------
   Kelas baru berawalan `.awd-`; rekening, status bertahap & jendela memakai `.wd-*`
   (halaman Penarikan creator) supaya kedua sisi satu bahasa visual.
   ========================================================================== */
.awd-acct-req{margin-bottom:20px;border-color:#FDE68A;background:linear-gradient(135deg,#FFFBEB,#fff 55%)}
.awd-acct-req .panel-head b{display:inline-flex;align-items:center;gap:7px}
.awd-acct-req .panel-head b .ic{color:#D97706}
.awd-req{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px;border-radius:14px;background:#fff;border:1px solid #F1F5F9}
.awd-av{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--ulik-sky-main),var(--ulik-sky-light));color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;flex:none}
.awd-req-who{display:flex;flex-direction:column;min-width:0;line-height:1.35}
.awd-req-who b{color:var(--ulik-slate-main);font-size:.9rem}.awd-req-who small{font-size:.74rem;color:var(--ulik-slate-muted)}
.awd-req-change{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--ulik-slate-main);font-weight:700;flex-wrap:wrap}
.awd-req-change .wd-bank{width:32px;height:32px;border-radius:9px;font-size:.55rem}
.awd-arrow{color:var(--ulik-slate-muted)}
.awd-req-act{display:flex;gap:8px}
.awd-req-note{display:flex;gap:8px;align-items:center;margin:12px 0 0;font-size:.78rem;color:#92400E}
.awd-req-note .ic{flex:none;color:#D97706}
.awd-toolbar{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;margin-bottom:14px}
.awd-tabs{margin:0}
.awd-tabs .ftab.active{background:var(--ulik-sky-main);color:#fff}
.awd-count{display:inline-block;min-width:20px;padding:0 6px;margin-left:4px;border-radius:999px;background:rgba(15,23,42,.08);font-size:.7rem;text-align:center}
.awd-tabs .ftab.active .awd-count{background:rgba(255,255,255,.28)}
.awd-search{margin-left:auto;display:flex;align-items:center;gap:8px;border:1px solid #E2E8F0;border-radius:12px;padding:0 12px;background:#fff;min-width:220px}
.awd-search .ic{color:var(--ulik-slate-muted)}
.awd-search input{border:0!important;background:transparent;padding:9px 0;margin:0;box-shadow:none;outline:none;width:100%}
.awd-list{display:flex;flex-direction:column;gap:12px}
.awd-item{border:1px solid #E2E8F0;border-radius:16px;padding:16px;background:#fff;border-left:4px solid #FBBF24}
.awd-item.is-approved{border-left-color:var(--ulik-sky-main)}
.awd-item-head{display:flex;align-items:center;gap:10px}
.awd-who{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.35}
.awd-who b{color:var(--ulik-slate-main);font-size:.95rem}.awd-who small{font-size:.75rem;color:var(--ulik-slate-muted)}
.awd-id{font:700 .78rem ui-monospace,Menlo,monospace;color:var(--ulik-slate-muted)}
.awd-item-body{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:12px;margin-top:12px}
.awd-money{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:12px 14px;border-radius:14px;background:linear-gradient(135deg,var(--ulik-sky-main),var(--ulik-sky-light));color:#fff}
.awd-money small{font-size:.74rem;color:#E0F2FE;font-weight:700}
.awd-money b{font-size:1.5rem;font-weight:800;letter-spacing:-.02em}
.awd-money span{font-size:.72rem;color:#E0F2FE}
.awd-acct .wd-acct-meta{gap:1px}
.awd-acct{flex-wrap:wrap}
.awd-num code{white-space:nowrap}
.awd-num{display:flex;align-items:center;gap:8px;margin-top:3px}
.awd-num code{font:700 .86rem ui-monospace,Menlo,monospace;color:var(--ulik-slate-main);letter-spacing:.04em}
.awd-copy{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--ulik-sky-border);background:#fff;color:var(--ulik-sky-main);border-radius:8px;padding:3px 8px;font:700 .7rem var(--font);cursor:pointer}
.awd-copy.ok{background:#ECFDF5;border-color:#A7F3D0;color:#047857}
.awd-item .wd-steps{margin:14px 0 6px}
.awd-item-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-top:10px;border-top:1px dashed #E2E8F0}
.awd-act{display:flex;gap:8px;flex-wrap:wrap}
.awd-reject{color:#DC2626}
.awd-done-head{display:flex;align-items:center;justify-content:space-between;margin:20px 0 8px}
.awd-sum{margin:0;font-size:.85rem;color:var(--ulik-slate-muted)}
.awd-reasons{margin-top:-4px}
.awd-text{display:flex;flex-direction:column;gap:6px}
.awd-text textarea,.awd-text input{margin:0}
.awd-paybox{display:flex;flex-direction:column;align-items:center;gap:2px;padding:16px;border-radius:16px;background:linear-gradient(135deg,var(--ulik-sky-main),var(--ulik-sky-light));color:#fff}
.awd-paybox small{font-size:.76rem;color:#E0F2FE;font-weight:700}.awd-paybox b{font-size:2rem;font-weight:800;letter-spacing:-.02em}.awd-paybox span{font-size:.74rem;color:#E0F2FE}
@media(max-width:1000px){.awd-req{grid-template-columns:auto minmax(0,1fr)}.awd-req-change,.awd-req-act{grid-column:1/-1}}
@media(max-width:720px){.awd-item-body{grid-template-columns:minmax(0,1fr)}.awd-search{margin-left:0;width:100%}}
@media(max-width:560px){.awd-act{width:100%}.awd-act .btn{flex:1}.awd-item-head{flex-wrap:wrap}}
.awd-f{display:inline;margin:0}
.awd-search{margin:0 0 0 auto}
.awd-filter{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin:0 0 14px;padding:10px 12px;border-radius:12px;background:var(--ulik-sky-tint);border:1px dashed var(--ulik-sky-border);font-size:.82rem;color:var(--ulik-slate-main)}
.awd-filter .ic{color:var(--ulik-sky-main)}
.awd-filter .btn{margin-left:auto}
.awd-done-wrap{margin-top:20px}
.awd-req + .awd-req{margin-top:10px}
.awd-req-act form{margin:0}
.awd-main .empty{padding:30px 16px}

/* ==========================================================================
   WIZARD SETUP (v1.58): tujuan → profil → tampilan → isi pertama → selesai
   Semua selector berawalan `.wz-`, `.nw-`, atau `body.chrome-wizard`, kecuali kartu
   Beranda `.nw-hc`. Elemen bertahan pada `display:flex/grid` + `min-width:0` sehingga
   tidak ada yang menjorok keluar viewport.
   ========================================================================== */
body.chrome-wizard{background-color:#F6F9FF;
  background-image:
    radial-gradient(760px 520px at 6% -8%,rgba(56,189,248,.20),transparent 62%),
    radial-gradient(700px 520px at 98% 2%,rgba(129,140,248,.18),transparent 60%),
    radial-gradient(660px 560px at 52% 110%,rgba(14,165,233,.12),transparent 62%);
  background-attachment:fixed;
  min-height:100vh;}
.wz-shell{max-width:1180px;margin:0 auto;padding:clamp(12px,3vw,30px)}
.wz-card{position:relative;overflow:hidden;background:#fff;border:1px solid #E8EFFC;
  border-radius:clamp(18px,2.4vw,26px);
  box-shadow:0 40px 90px -54px rgba(15,23,42,.42),0 10px 30px -24px rgba(14,165,233,.35);
  padding:clamp(18px,3.3vw,48px) clamp(18px,5vw,72px) clamp(22px,4.4vw,48px)}
.wz-top{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.wz-brand{min-width:0}
.wz-brand .ulik-logo{font-size:clamp(1.45rem,2.4vw,1.8rem);text-decoration:none}
.wz-prog{display:flex;align-items:center;flex:none}
.wz-prog .wz-conn{width:clamp(26px,4.6vw,58px);height:2px;background:#E2E8F0}
.wz-prog .wz-dot{width:clamp(30px,2.3vw,32px);height:clamp(30px,2.3vw,32px);border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;flex:none;
  font-size:.84rem;font-weight:800;background:#EEF2F7;color:#94A3B8}
.wz-prog .wz-dot.is-on{background-image:linear-gradient(135deg,var(--ulik-sky-main),var(--ulik-sky-light));
  color:#fff;box-shadow:0 10px 20px -10px rgba(14,165,233,.95)}
.wz-badge{align-self:flex-start;background:#EAF4FF;border:1px solid #CFE6FF;color:#0369A1;
  border-radius:999px;padding:6px 13px;font-size:.68rem;font-weight:800;
  letter-spacing:.1em;text-transform:uppercase;line-height:1.2}
.wz-h1{margin:15px 0 0;font-size:clamp(1.9rem,4vw,3.05rem);line-height:1.09;
  letter-spacing:-.028em;font-weight:800;color:var(--ulik-slate-main)}
.wz-h1 .wz-em{color:var(--ulik-sky-main)}
.wz-lead{margin:13px 0 0;font-size:clamp(.98rem,1.3vw,1.13rem);line-height:1.52;
  color:var(--ulik-slate-muted);max-width:44ch}
@media(max-width:560px){
  .wz-card{padding:16px 16px 22px}
  .wz-top{gap:12px}
  .wz-brand .ulik-logo{font-size:1.4rem}
  .wz-prog .wz-conn{width:22px}
  .wz-h1{font-size:clamp(1.65rem,7.6vw,2.05rem)}
  .wz-lead{font-size:.95rem}
}
.wz-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.wz-prog .wz-dot.is-done{background:#E4F1FF;color:#0B7FC7}
.wz-prog .wz-dot.is-done .ic{color:#0B7FC7}
.wz-prog .wz-conn.is-done{background:var(--ulik-sky-light)}
.wz-shell-step2 .wz-card{padding-left:clamp(18px,3.8vw,54px);padding-right:clamp(18px,3.8vw,54px)}
.wz-form{margin:clamp(18px,2.6vw,26px) 0 0}
.wz-goals-set{border:0;margin:0;padding:0;min-width:0}
.wz-goals{display:grid;gap:clamp(10px,1.1vw,13px);
  grid-template-columns:repeat(3,minmax(0,1fr))}
.wz-goal{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;
  gap:0;padding:clamp(14px,1.8vw,20px) clamp(12px,1.6vw,18px);
  background:#fff;border:1px solid #E8EEF8;border-radius:16px;cursor:pointer;
  transition:border-color .15s,box-shadow .15s,background .15s,transform .15s}
.wz-goal input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.wz-goal:hover{border-color:var(--ulik-sky-border);box-shadow:0 14px 30px -22px rgba(15,23,42,.5);
  transform:translateY(-1px)}
.wz-goal:has(input:focus-visible){outline:2px solid var(--ulik-sky-main);outline-offset:2px}
.wz-goal.is-on,.wz-goal:has(input:checked){border-color:var(--ulik-sky-main);background:#EAF4FF;
  box-shadow:0 16px 34px -22px rgba(14,165,233,.85)}
.wz-goal-ic{width:clamp(44px,4vw,52px);height:clamp(44px,4vw,52px);border-radius:15px;
  display:inline-flex;align-items:center;justify-content:center;flex:none}
.wz-goal-mark{position:absolute;right:10px;top:10px;width:22px;height:22px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;opacity:0;
  background:var(--ulik-sky-main);color:#fff;transition:opacity .15s,transform .15s;transform:scale(.7)}
.wz-goal-mark .ic{color:#fff}
.wz-goal.is-on .wz-goal-mark,.wz-goal:has(input:checked) .wz-goal-mark{opacity:1;transform:scale(1)}
.wz-goal-title{display:block;margin-top:clamp(10px,1.2vw,13px);font-size:.95rem;font-weight:800;
  line-height:1.3;color:var(--ulik-slate-main);overflow-wrap:anywhere}
.wz-goal-desc{display:block;margin-top:6px;font-size:.82rem;line-height:1.45;
  color:var(--ulik-slate-muted);overflow-wrap:anywhere}
.wz-g-a{background:#FDE7EF;color:#E11D6F}
.wz-g-b{background:#EFE7FE;color:#7C3AED}
.wz-g-c{background:#DCF7EE;color:#0E9F6E}
.wz-g-d{background:#FEF0DC;color:#D97706}
.wz-g-e{background:#FCE3EC;color:#DB2777}
.wz-g-f{background:#FEF6DC;color:#CA8A04}
.wz-pick-hint{display:none;align-items:flex-start;gap:7px;margin:12px 0 0;
  font-size:.8rem;line-height:1.5;color:#9A3412;overflow-wrap:anywhere}
.wz-pick-hint .ic{flex:none;margin-top:2px}
.wz-form:not(:has(input:checked)) .wz-pick-hint{display:flex}
.wz-alert{display:flex;align-items:flex-start;gap:8px;margin:14px 0 0;
  padding:11px 13px;background:#FFF7ED;border:1px solid #FED7AA;border-radius:12px;
  font-size:.84rem;line-height:1.5;color:#9A3412;overflow-wrap:anywhere}
.wz-alert .ic{flex:none;margin-top:2px}
@media(max-width:560px){
  .wz-goals{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .wz-goal{padding:14px 11px;border-radius:14px}
  .wz-goal-title{font-size:.88rem}
  .wz-goal-desc{font-size:.77rem}
  .wz-goal-ic{width:42px;height:42px;border-radius:13px}
}
@media(max-width:380px){
  .wz-goals{grid-template-columns:minmax(0,1fr)}
}
.wz-shell-step3 .wz-card{padding-left:clamp(18px,3.8vw,54px);padding-right:clamp(18px,3.8vw,54px)}
.wz-shell{padding-bottom:clamp(12px,3vw,30px)}
.nw-card.wz-card{padding:clamp(16px,2.6vw,30px) clamp(16px,3.6vw,44px)}
.nw-body{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:clamp(22px,3.4vw,44px);align-items:start;margin-top:clamp(14px,2vw,22px)}
.nw-step[hidden]{display:none}
.nw-step .wz-badge{display:inline-block}
.nw-step .wz-h1{font-size:clamp(1.6rem,3vw,2.3rem);margin-top:12px}
.nw-step .wz-lead{margin-top:9px;font-size:.96rem}
.nw-bens{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0}
.nw-bens li{display:inline-flex;align-items:center;gap:6px;padding:5px 10px 5px 7px;border-radius:999px;background:#F2F8FF;color:var(--ulik-slate-main);font-size:.75rem;font-weight:600}
.nw-bens .ic{color:#0284C7}
.nw-step .wz-goals{margin-top:16px}
.nw-step .wz-goal{padding:14px 12px}
.nw-step .wz-goal.is-on{border-color:var(--ulik-sky-main);background:#EAF4FF}
.nw-step .wz-goal.is-on .wz-goal-mark{opacity:1;transform:scale(1)}
.nw-step .wz-goal-ic{width:42px;height:42px;border-radius:13px}
.nw-step .wz-goal-title{margin-top:9px;font-size:.9rem}
.nw-step .wz-goal-desc{font-size:.77rem;margin-top:4px}

.nw-f{display:flex;flex-direction:column;gap:14px;margin-top:18px}
.nw-f label,.nw-lab{display:block;font-size:.83rem;font-weight:700;color:var(--ulik-slate-main)}
.nw-f small{font-weight:500;color:var(--ulik-slate-muted)}
.nw-f input[type=text],.nw-f input[type=url],.nw-f textarea,.nw-f select{display:block;width:100%;margin:6px 0 0;padding:11px 13px;border:1px solid #DCE6F5;border-radius:12px;background:#fff;font:500 .9rem var(--font);color:var(--ulik-slate-main);outline:0;box-shadow:none}
.nw-f input:focus,.nw-f textarea:focus,.nw-f select:focus{border-color:var(--ulik-sky-main);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.nw-count{float:right;font-weight:600;color:var(--ulik-slate-muted)}
.nw-ava{display:flex;align-items:center;gap:14px}
.nw-ava-pic{width:68px;height:68px;border-radius:50%;flex:none;background:linear-gradient(135deg,var(--ulik-sky-main),var(--ulik-sky-light)) center/cover;color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.6rem;font-weight:800}
.nw-ava-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border:1px solid #DCE6F5;border-radius:11px;background:#fff;color:var(--ulik-slate-main);font-size:.83rem;font-weight:700;cursor:pointer}
.nw-ava p{margin:6px 0 0;font-size:.74rem;color:var(--ulik-slate-muted)}
.nw-ava input{position:absolute;opacity:0;width:1px;height:1px}
.nw-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.nw-chips button{border:1px solid #CFE6FF;border-radius:999px;background:#F2F8FF;color:#0369A1;padding:5px 10px;font:600 .74rem var(--font);cursor:pointer;text-align:left}

.nw-themes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}
.nw-theme{position:relative;display:block;padding:0;border:2px solid #E5ECF7;border-radius:14px;background:#fff;cursor:pointer;overflow:hidden;font:inherit;text-align:center}
.nw-theme i{display:block;height:64px;padding:12px 10px 0}
.nw-theme i span{display:block;height:13px;margin-bottom:6px;border-radius:6px}
.nw-theme b{display:block;padding:6px 4px;font-size:.74rem;font-weight:700;color:var(--ulik-slate-main)}
.nw-theme .wz-goal-mark{right:6px;top:6px;width:20px;height:20px}
.nw-note{margin:12px 0 0;font-size:.78rem;line-height:1.5;color:var(--ulik-slate-muted)}

.nw-types{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:6px}
.nw-row2{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:10px}
.nw-soc{display:grid;grid-template-columns:130px minmax(0,1fr);gap:8px}
.nw-soc select,.nw-soc input{margin-top:0!important}
.nw-add{align-self:flex-start;border:0;background:none;padding:0;color:#0369A1;font:700 .82rem var(--font);cursor:pointer}
.nw-cond[hidden]{display:none}

.nw-link{display:flex;align-items:center;gap:8px;margin-top:16px;padding:10px 10px 10px 14px;border:1px solid #CFE6FF;border-radius:14px;background:#EAF4FF}
.nw-link b{flex:1;min-width:0;font-size:.95rem;overflow-wrap:anywhere;color:#0369A1}
.nw-link button{flex:none;border:0;border-radius:10px;padding:9px 12px;background:#fff;color:#0369A1;font:700 .8rem var(--font);cursor:pointer}
.nw-share{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}
.nw-share a{display:flex;align-items:center;justify-content:center;gap:7px;padding:10px;border:1px solid #DCE6F5;border-radius:11px;color:var(--ulik-slate-main);font-size:.82rem;font-weight:700;text-decoration:none}
.nw-done{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.nw-done li{display:flex;align-items:center;gap:10px;font-size:.86rem;color:var(--ulik-slate-main)}
.nw-done span{width:24px;height:24px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#DCFCE7;color:#047857}
.nw-done li.todo{color:var(--ulik-slate-muted)}
.nw-done li.todo span{background:#F1F5F9;color:#94A3B8}

.nw-nav{display:flex;align-items:center;gap:10px;margin-top:20px}
.nw-nav .wz-btn-ghost,.nw-nav .wz-btn-next{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:13px;font:800 .92rem var(--font);cursor:pointer;text-decoration:none}
.nw-nav .wz-btn-ghost{padding:0 16px;background:#fff;border:1px solid #DCE6F5;color:var(--ulik-slate-main)}
.nw-nav .wz-btn-ghost .ic{transform:rotate(180deg)}
.nw-nav .wz-btn-next{flex:1;padding:0 18px;border:0;color:#fff;background-image:linear-gradient(120deg,var(--ulik-sky-main),var(--ulik-sky-light));box-shadow:0 16px 30px -18px rgba(14,165,233,1)}
.nw-nav .wz-btn-next:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.nw-nav .wz-btn-next .ic{color:#fff}
.nw-skip{border:0;background:none;padding:6px 4px;color:var(--ulik-slate-muted);font:600 .84rem var(--font);cursor:pointer;white-space:nowrap}
.nw-hide{display:none!important}

.nw-side{position:sticky;top:50px}
.nw-side-k{margin:0 0 10px;text-align:center;font-size:.76rem;font-weight:700;color:var(--ulik-slate-muted)}
.nw-ph{width:min(262px,100%);margin:0 auto;border-radius:38px;padding:8px;background:#0F172A;box-shadow:0 30px 60px -30px rgba(15,23,42,.6)}
.nw-sc{height:500px;border-radius:30px;overflow:hidden;padding:24px 14px;display:flex;flex-direction:column;align-items:center;transition:background .2s}
.nw-sc-av{width:68px;height:68px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center;font-size:1.5rem;font-weight:800;color:#fff}
.nw-sc-n{margin-top:10px;font-size:1rem;font-weight:800;text-align:center;overflow-wrap:anywhere}
.nw-sc-h{font-size:.74rem;opacity:.7}
.nw-sc-b{margin-top:6px;font-size:.74rem;line-height:1.4;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.nw-sc-l{width:100%;margin-top:14px;display:flex;flex-direction:column;gap:8px}
.nw-sc-r{display:flex;align-items:center;gap:8px;min-height:40px;padding:8px 12px;border:1px solid transparent;font-size:.8rem;font-weight:700}
.nw-sc-r span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nw-sc-r em{font-style:normal;font-size:.72rem;opacity:.75}
.nw-sc-ph{opacity:.5;border-style:dashed!important;background:transparent!important}
.nw-prev-btn{display:none}
.nw-close{display:none}

/* Kartu Beranda */
.nw-home{max-width:760px;margin:clamp(18px,4vw,40px) auto;padding:0 14px}
.nw-home>p{margin:0 0 12px;font-size:.84rem;color:var(--ulik-slate-muted)}
.nw-hc{padding:20px;border:1px solid #CFE6FF;border-radius:20px;background:linear-gradient(135deg,#fff 55%,#E0F2FE);box-shadow:0 18px 40px -30px rgba(3,105,161,.6)}
.nw-hc-top{display:flex;align-items:flex-start;gap:12px}
.nw-hc h3{margin:0;font-size:1.08rem;font-weight:800;color:var(--ulik-slate-main)}
.nw-hc-top p{margin:3px 0 0;font-size:.84rem;color:var(--ulik-slate-muted)}
.nw-hc-top>div{flex:1}
.nw-hc-top button{border:0;background:none;color:var(--ulik-slate-muted);font:600 .76rem var(--font);cursor:pointer}
.nw-hbar{height:7px;margin:14px 0;border-radius:9px;background:#E2EEF9;overflow:hidden}
.nw-hbar i{display:block;width:50%;height:100%;border-radius:9px;background:linear-gradient(90deg,var(--ulik-sky-main),var(--ulik-sky-light))}
.nw-hl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.nw-hl a{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:12px;background:#fff;border:1px solid #E5ECF7;color:var(--ulik-slate-main);font-size:.84rem;font-weight:700;text-decoration:none}
.nw-hl a span{width:24px;height:24px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#F1F5F9;color:#94A3B8}
.nw-hl a.ok{color:var(--ulik-slate-muted);font-weight:600}
.nw-hl a.ok span{background:#DCFCE7;color:#047857}

@media(max-width:900px){
  .nw-body{grid-template-columns:minmax(0,1fr)}
  .nw-side{display:none}
  .nw-side.is-open{display:block;position:fixed;inset:0;z-index:70;padding:58px 16px 16px;background:rgba(15,23,42,.72);overflow:auto}
  .nw-side.is-open .nw-side-k{color:#fff}
  .nw-side.is-open .nw-close{display:block;position:absolute;top:14px;right:14px;width:38px;height:38px;border:0;border-radius:50%;background:#fff;color:var(--ulik-slate-main);font-size:1.2rem;cursor:pointer}
  .nw-prev-btn{display:inline-flex;align-items:center;gap:6px;margin-left:auto;border:1px solid #CFE6FF;border-radius:10px;padding:6px 10px;background:#F2F8FF;color:#0369A1;font:700 .76rem var(--font);cursor:pointer}
  .nw-card.wz-card{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  .nw-nav{position:fixed;left:0;right:0;bottom:0;z-index:50;margin:0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid #E5ECF7}
  .nw-nav .wz-btn-ghost{padding:0 12px}
  .nw-nav .wz-btn-ghost span:not(.ic){display:none}
  .nw-nav .wz-btn-ghost{width:48px;flex:none}
}
@media(max-width:560px){
  .nw-step .wz-goals{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .nw-step .wz-goal{flex-direction:row;align-items:center;gap:8px;padding:9px 8px;text-align:left}
  .nw-step .wz-goal-ic{width:34px;height:34px;border-radius:10px;flex:none}
  .nw-step .wz-goal-ic svg{width:18px;height:18px}
  .nw-step .wz-goal-title{margin:0;font-size:.8rem;line-height:1.2}
  .nw-step .wz-goal-mark{right:4px;top:4px;width:16px;height:16px}
  .nw-step .wz-goal-desc{display:none}
  .nw-step .wz-h1{font-size:1.5rem}
  .nw-themes{grid-template-columns:repeat(3,minmax(0,1fr))}
  .nw-hl{grid-template-columns:minmax(0,1fr)}
  .nw-soc{grid-template-columns:112px minmax(0,1fr)}
  .nw-bens{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:-16px}
  .nw-bens li{flex:none}
}

/* Kontrol asli (radio) di dalam kartu tampilan & jenis produk. */
.nw-body form{min-width:0}
.nw-f-in{margin-top:0}
.nw-ava input[type=file]{position:absolute;opacity:0;width:1px;height:1px}
.nw-ava form{margin:0}
.nw-theme input,.nw-types input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.nw-theme:has(input:checked){border-color:var(--ulik-sky-main);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.nw-theme:has(input:checked) .wz-goal-mark{opacity:1;transform:scale(1)}
.nw-theme:has(input:focus-visible),.nw-types label:has(input:focus-visible){outline:2px solid var(--ulik-sky-main);outline-offset:2px}
.nw-types span{display:block;padding:10px 6px;border:1px solid #DCE6F5;border-radius:11px;background:#fff;font:700 .78rem var(--font);color:var(--ulik-slate-main);text-align:center;cursor:pointer}
.nw-types input:checked+span{border-color:var(--ulik-sky-main);background:#EAF4FF;color:#0369A1}
details.nw-more{margin:12px 0 0;text-align:center}
details.nw-more summary{cursor:pointer;color:#0369A1;font:700 .82rem var(--font);list-style:none}
details.nw-more summary::-webkit-details-marker{display:none}
details.nw-more[open] summary{margin-bottom:0}
.nw-nav a.wz-btn-next:hover,.nw-nav a.wz-btn-next{color:#fff}
.nw-skip{text-decoration:none}
.nw-ghost-plain{white-space:nowrap}
.wz-btn-ghost,.wz-btn-next{transition:opacity .15s}
.wz-form:has(input:checked) .wz-pick-hint{display:none}
.nw-hc{margin:0 0 18px}
.nw-hc form{margin:0}
@media(max-width:900px){
  .nw-ghost-plain{width:auto!important;padding:0 14px!important}
}
/* ==========================================================================
   GLOBAL PAGINATION — komponen `.pager` (Fondasi Fase 1)
   --------------------------------------------------------------------------
   Dipakai oleh `ui_pagination()` (app/Views/ui.php) + `Core\Paginator`.
   Kelas baru: `.pager`, `.pager-info`, `.pager-ctl`, `.pager-btn`, `.pager-nums`,
   `.pager-n`, `.pager-gap`.
   Scope: semua selector diawali `.pager` — TIDAK menyentuh komponen bersama
   (`.panel`/`.btn`/`.tbl`/`.badge`/`.toolbar`/`.filter-tabs`) sehingga daftar yang belum
   memakai pagination tampil persis seperti sebelumnya. Belum di-rollout (Fase 2).
   ========================================================================== */
.pager{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;
  flex-wrap:wrap;margin-top:16px;padding-top:14px;border-top:1px solid #F1F5F9}
.pager-info{font-size:.8rem;color:var(--ulik-slate-muted);min-width:0}
.pager-info b{color:var(--ulik-slate-main);font-weight:800}
.pager-ctl{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.pager-btn{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:8px 13px;
  border-radius:10px;border:1px solid #DCE6F5;background:#fff;color:var(--ulik-slate-main);
  font-size:.8rem;font-weight:700;text-decoration:none;white-space:nowrap}
.pager-btn:hover{border-color:var(--ulik-sky-border);background:#F7FBFF;color:var(--ulik-slate-main);opacity:1}
.pager-btn .ic{color:var(--ulik-sky-main)}
/* chev-down diputar: Sebelumnya = kiri, Berikutnya = kanan */
.pager-btn .ic{transform:rotate(90deg)}
.pager-btn:last-child .ic{transform:rotate(-90deg)}
.pager-btn.is-off{color:#A8B4C6;background:#F8FAFC;border-color:#EDF1F7;cursor:default}
.pager-btn.is-off .ic{color:#B6C2D4}
.pager-btn.is-off:hover{background:#F8FAFC;border-color:#EDF1F7}
.pager-nums{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.pager-n{display:inline-flex;align-items:center;justify-content:center;
  min-width:38px;height:38px;padding:0 9px;border-radius:10px;border:1px solid transparent;
  font-size:.82rem;font-weight:700;color:var(--ulik-slate-main);text-decoration:none}
.pager-n:hover{background:#F0F9FF;border-color:var(--ulik-sky-border);color:var(--ulik-sky-main);opacity:1}
.pager-n.is-on{background-image:linear-gradient(135deg,var(--ulik-sky-main),var(--ulik-sky-light));
  color:#fff;border-color:transparent;box-shadow:0 10px 20px -12px rgba(14,165,233,.95)}
.pager-n.is-on:hover{color:#fff;opacity:1}
.pager-n:focus-visible,.pager-btn:focus-visible{outline:2px solid var(--ulik-sky-main);outline-offset:2px}
.pager-gap{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:38px;
  color:var(--ulik-slate-muted);font-weight:700}

/* HP: ringkasan di baris sendiri, kontrol penuh selebar kartu supaya mudah ditekan. */
@media(max-width:620px){
  .pager{flex-direction:column;align-items:stretch;gap:10px}
  .pager-info{text-align:center}
  .pager-ctl{justify-content:center}
  .pager-btn{flex:1 1 auto;justify-content:center;min-height:42px}
  .pager-nums{flex:0 0 auto;justify-content:center;order:3;width:100%}
  .pager-n{min-width:40px;height:40px}
}
@media(max-width:400px){
  /* Tautan teks disembunyikan; sisakan ikon + nomor halaman agar tidak berdesakan. */
  .pager-btn span{display:none}
  .pager-btn{min-width:56px}
}

/* ==========================================================================
   ADMIN — ORDER DETAIL: header + "Produk & Delivery"
   --------------------------------------------------------------------------
   Kelas baru: `.adm-ord-head`, `.adm-ord-title`, `.adm-ord-sub`, `.adm-ord-badges`,
   `.adm-ord-items`, `.adm-ord-item`, `.aoi-*`, `.adm-ord-deliv*`, `.adm-ord-token`,
   `.adm-ord-acts`, `.adm-ord-form`, `.adm-ord-info`.
   Scope: seluruh selector diawali `.adm-ord`/`.aoi-` — TIDAK menyentuh komponen bersama
   (`.panel`/`.btn`/`.badge`/`.tbl`/`.grid`), jadi halaman admin lain tidak terpengaruh.
   Warna memakai token brand yang sudah ada (biru langit) + `.badge` bawaan.
   ========================================================================== */
.adm-ord-head{display:flex;align-items:flex-start;justify-content:space-between;
  gap:12px 16px;flex-wrap:wrap;margin:8px 0 18px}
.adm-ord-title{margin:0;font-size:1.16rem;font-weight:800;color:var(--ulik-slate-main);
  letter-spacing:-.01em;overflow-wrap:anywhere}
.adm-ord-sub{margin:3px 0 0;font-size:.84rem;color:var(--ulik-slate-muted)}
.adm-ord-badges{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:none}

/* daftar item: satu kartu per item, dirender untuk SEMUA item order */
.adm-ord-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.adm-ord-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 13px;min-width:0}
.aoi-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}
.aoi-name{font-size:.9rem;font-weight:800;color:var(--ulik-slate-main);overflow-wrap:anywhere}
.aoi-meta{font-size:.76rem;color:var(--ulik-slate-muted);overflow-wrap:anywhere}
.aoi-side{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex:none;text-align:right}
.aoi-total{font-size:.9rem;font-weight:800;color:var(--ulik-slate-main);white-space:nowrap}
.aoi-tag{font-size:.66rem;padding:2px 8px}

/* blok delivery */
.adm-ord-deliv-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.adm-ord-token{display:inline-flex;align-items:center;gap:8px;background:#F1F5F9;border:1px solid #E2E8F0;
  border-radius:10px;padding:8px 11px;margin:2px 0 12px;max-width:100%}
.adm-ord-token .ic{color:var(--ulik-sky-main);flex:none}
.adm-ord-token span{display:flex;flex-direction:column;min-width:0}
.adm-ord-token b{font-size:.82rem;font-weight:800;color:var(--ulik-slate-main)}
.adm-ord-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.adm-ord-form{margin:0;display:inline-flex}
.adm-ord-acts .btn{min-height:40px}
.adm-ord-acts .btn .ic{color:currentColor}
.adm-ord-info{display:flex;align-items:flex-start;gap:8px;margin:12px 0 0;padding:9px 12px;
  background:#F8FAFC;border:1px solid #EDF1F7;border-radius:10px;font-size:.78rem;
  line-height:1.5;color:var(--ulik-slate-muted);overflow-wrap:anywhere}
.adm-ord-info .ic{color:var(--ulik-sky-main);flex:none;margin-top:2px}

@media(max-width:560px){
  .adm-ord-title{font-size:1.06rem}
  /* Item: harga turun ke barisnya sendiri supaya nama produk tetap terbaca di HP. */
  .adm-ord-item{flex-direction:column;gap:8px;padding:12px}
  .aoi-side{align-items:flex-start;text-align:left;width:100%}
  .adm-ord-acts .btn{width:100%;justify-content:center}
  .adm-ord-form{width:100%}
}

/* ==========================================================================
   AFFILIATE CAMPAIGN (Fase 1) — Creator Panel
   --------------------------------------------------------------------------
   ADITIF & SCOPED: seluruh aturan memakai kelas berawalan `.af-` yang HANYA
   dipakai halaman /affiliate (tautan tab, banner pengantar, baris pemilik,
   panel komisi, catatan "Produk Anda", tata letak aksi dua tombol).
   Kartu-nya SENDIRI memakai komponen lama (.pgrid/.pgrid-card/.pgrid-thumb/
   .pgrid-body/.pgrid-actions) — jadi bahasa visualnya sama dengan halaman
   Products. Pil filter memakai `.filter-tabs`/`.ftab`, tombol memakai `.btn*`,
   panah/ikon memakai ui_icon(). Nol aturan lama diubah.
   ========================================================================== */

/* ---------- tab halaman (Affiliate Campaign · My Campaign) ---------- */
.af-tabs{display:flex;gap:22px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:24px}
.af-tab{padding:2px 0 11px;font-size:.9rem;font-weight:700;color:var(--mut);text-decoration:none;
  border-bottom:2px solid transparent;margin-bottom:-1px}
.af-tab:hover{color:var(--ind);opacity:1}
.af-tab.is-on{color:var(--ind);border-bottom-color:var(--ind);font-weight:800}
.af-tab:focus-visible{outline:2px solid var(--ind);outline-offset:2px;border-radius:4px}

/* ---------- banner pengantar (Master Sketch) ---------- */
.af-intro{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;margin-bottom:20px;
  background:var(--ulik-sky-tint);border:1px solid var(--ulik-sky-border);border-radius:14px}
.af-intro[hidden]{display:none}
.af-intro-ic{flex:none;width:34px;height:34px;border-radius:50%;background:#fff;color:var(--ind);
  display:flex;align-items:center;justify-content:center;font-size:1rem;line-height:1;
  box-shadow:0 2px 8px -4px rgba(14,165,233,.6)}
.af-intro-body{min-width:0;flex:1}
.af-intro-body b{display:block;font-size:.9rem;font-weight:800;color:var(--ink)}
.af-intro-body p{margin:3px 0 0;font-size:.84rem;color:var(--ink-2)}
.af-intro-x{flex:none;background:transparent;border:0;padding:4px;cursor:pointer;color:var(--mut);
  border-radius:8px;line-height:0}
.af-intro-x:hover{color:var(--ink);background:rgba(255,255,255,.7)}

/* ---------- baris filter: pil jenis produk + pencarian + urutan ---------- */
.af-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin-bottom:18px}
.af-toolbar .filter-tabs{margin-bottom:0}
.af-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.af-search{display:flex;align-items:center;gap:8px;margin:0}
.af-search input{margin:0;width:230px;padding:10px 13px;border:1px solid var(--line);border-radius:12px;
  font:inherit;font-size:.86rem;color:var(--ink);background:#fff}
.af-sort{margin:0;display:flex;align-items:center;gap:8px}
.af-sort select{margin:0;width:auto;min-width:132px;padding:9px 12px;font-size:.86rem;border-radius:12px}

/* ---------- kartu katalog (memakai dasar .pgrid-card halaman Products) ---------- */
/* Grid: 4 kolom pada lebar dashboard desktop (Master Sketch) → minimum lebih kecil
   dari `.pgrid` bawaan (270px) supaya 4 kartu benar-benar muat di kolom konten. */
.af-grid{margin-top:2px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px}
.af-card .af-thumb{aspect-ratio:2.15/1;height:auto;display:flex;align-items:center;justify-content:center;color:#94A3B8}
.af-card .af-name{margin:0;font-size:1rem;line-height:1.32;font-weight:800}
.af-owner{display:flex;align-items:center;gap:8px;min-width:0;color:var(--ink-2);font-size:.82rem;font-weight:600}
.af-owner .avatar{flex:none}
.af-owner span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.af-price{font-size:1.02rem;font-weight:800;color:var(--ink)}
.af-sold{margin-top:-4px}
.af-comm{margin-top:2px;padding:9px 12px;border-radius:12px;background:#F1F5F9;
  display:flex;flex-direction:column;gap:1px}
.af-comm-t{font-size:.8rem;font-weight:700;color:var(--ink-2)}
.af-comm-v{font-size:.86rem;font-weight:800;color:var(--ink)}
.af-own{margin-top:2px;padding:9px 12px;border-radius:12px;background:#FEF3C7;
  display:flex;flex-direction:column;gap:2px}
.af-own b{font-size:.8rem;font-weight:800;color:#92400E}
.af-own span{display:flex;align-items:flex-start;gap:6px;font-size:.78rem;line-height:1.45;color:#92400E}
.af-own .ic{color:#B45309;flex:none;margin-top:1px}
.af-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:auto}
.af-actions .btn{width:100%;min-height:38px;font-size:.8rem;padding-left:8px;padding-right:8px;
  white-space:nowrap}   /* label tetap satu baris di kolom kartu yang sempit */
.af-actions .af-form{margin:0;display:flex}
.af-actions .af-form .btn{width:100%}
/* Kartu yang sudah dipromosikan: penanda halus (tanpa mengubah warna produk). */
.af-card.is-added .af-added{color:#047857}

@media(max-width:900px){
  .af-search input{width:180px}
}
@media(max-width:560px){
  .af-tabs{gap:18px}
  .af-toolbar{align-items:stretch}
  /* Di HP, pencarian & urutan turun ke barisnya sendiri dan memakai lebar penuh —
     kotak pencarian tidak lagi terjepit berdampingan dengan tombol/tombol urutan. */
  .af-tools{width:100%;flex-direction:column;align-items:stretch;gap:8px}
  .af-search,.af-sort{width:100%}
  .af-search input{width:100%;min-width:0}
  .af-sort select{width:100%;min-width:0}
}

/* ==========================================================================
   MY CAMPAIGN (Fase 2) — dua section di halaman /affiliate?tab=campaign
   --------------------------------------------------------------------------
   ADITIF & SCOPED: seluruh aturan memakai kelas berawalan `.afm-` yang hanya
   dipakai tab My Campaign. Kerangka modal memakai kembali kelas `.bp-*` yang
   sudah ada di aplikasi ini (modal + bottom-sheet di HP + Escape), jadi tidak
   ada sistem modal kedua. Nol aturan lama diubah.
   ========================================================================== */

/* ---------- 4 kartu ringkasan (semuanya dari data nyata) ---------- */
.afm-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}
.afm-stat{display:flex;align-items:flex-start;gap:12px;background:#fff;border:1px solid #E2E8F0;
  border-radius:16px;padding:16px 18px;box-shadow:0 10px 24px -22px rgba(15,23,42,.45);min-width:0}
.afm-stat-ic{flex:none;width:42px;height:42px;border-radius:13px;display:inline-flex;
  align-items:center;justify-content:center;color:#fff}
.afm-stat-ic .ic{width:20px;height:20px}
.afm-stat-a .afm-stat-ic{background:linear-gradient(120deg,#0EA5E9,#38BDF8)}
.afm-stat-b .afm-stat-ic{background:linear-gradient(120deg,#4F46E5,#8B5CF6)}
.afm-stat-c .afm-stat-ic{background:linear-gradient(120deg,#059669,#34D399)}
.afm-stat-d .afm-stat-ic{background:linear-gradient(120deg,#D97706,#F59E0B)}
.afm-stat-tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.afm-stat-lb{font-size:.78rem;font-weight:700;color:var(--ulik-slate-muted)}
.afm-stat-vl{font-size:1.35rem;font-weight:800;color:var(--ulik-slate-main);
  letter-spacing:-.02em;overflow-wrap:anywhere;line-height:1.15}
.afm-stat-note{font-size:.72rem;color:var(--mut-2);line-height:1.35}

/* ---------- toolbar (pil status + pencarian + urutan) ---------- */
.afm-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin-bottom:16px}
.afm-toolbar .filter-tabs{margin-bottom:0}

/* ---------- daftar baris campaign ---------- */
.afm-list{display:flex;flex-direction:column;gap:14px}
.afm-row{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;background:#fff;
  border:1px solid #E7EBF2;border-radius:16px;padding:14px;
  transition:border-color .15s,box-shadow .15s}
.afm-row:hover{border-color:#CBD5E1;box-shadow:0 12px 26px -22px rgba(15,23,42,.5)}
.afm-row.is-editing{border-color:var(--ulik-sky-main);box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.afm-row.is-off{background:#FAFBFC}
.afm-row.is-off .afm-thumb{opacity:.6}
.afm-thumb{flex:0 0 152px;width:152px;height:86px;border-radius:12px;overflow:hidden;background:var(--ulik-sky-tint);
  display:flex;align-items:center;justify-content:center;color:#94A3B8;text-decoration:none}
.afm-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.afm-main{flex:1 1 200px;min-width:0;display:flex;flex-direction:column;gap:4px}
.afm-name{font-size:.98rem;font-weight:800;color:var(--ink);line-height:1.3}
.afm-owner{display:flex;align-items:center;gap:7px;font-size:.82rem;font-weight:600;color:var(--ink-2);min-width:0}
.afm-owner .avatar{flex:none}
.afm-owner span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.afm-price{font-size:.96rem;font-weight:800;color:var(--ink)}
.afm-flags{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.afm-comm{flex:0 0 146px;display:flex;flex-direction:column;gap:1px;padding:10px 13px;border-radius:12px;
  background:#F1F5F9;align-self:flex-start}
.afm-comm b{font-size:.82rem;font-weight:800;color:var(--ink-2)}
.afm-comm span{font-size:.8rem;font-weight:700;color:var(--ink)}
.afm-metrics{flex:0 0 184px;display:flex;flex-direction:column;gap:8px;align-self:flex-start}
.afm-met{display:grid;grid-template-columns:22px minmax(0,1fr);grid-template-rows:auto auto;
  column-gap:8px;align-items:center}
.afm-met-ic{grid-row:1/3;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
  color:var(--ind)}
.afm-met b{font-size:.92rem;font-weight:800;color:var(--ink);line-height:1.2;overflow-wrap:anywhere}
.afm-met span:last-child{font-size:.72rem;color:var(--mut-2)}
.afm-side{flex:1 1 196px;min-width:0;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.afm-status{display:flex;flex-direction:column;gap:3px}
.afm-reason{font-size:.72rem;color:#B91C1C;line-height:1.35}
.afm-added{font-size:.74rem}
.afm-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px;align-items:center}
/* Dua tombol harus SEBARIS di kolom kanan (seperti Master Sketch). Paddingnya dirapatkan
   supaya "Lihat Detail" + "Hapus dari Campaign" tetap muat tanpa membungkus. */
.afm-acts .btn{min-height:38px;font-size:.78rem;white-space:nowrap;padding-left:11px;padding-right:11px}
.afm-form{margin:0;display:inline-flex}

/* ---------- modal (memakai kerangka .bp-* yang sudah ada) ---------- */
.afm-host > summary{display:none}   /* pembuka selalu tombol/link di halaman, bukan summary */
.afm-host{margin-top:16px}
.bp-panel-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.afm-pick-lb{display:block;font-size:.78rem;font-weight:800;color:var(--ink-2);margin-bottom:6px}
.afm-picklist{max-height:280px}
.afm-pick-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);
  border-radius:12px;background:#fff;cursor:pointer;margin:0}
.afm-pick-item:hover{background:#F8FAFC}
.afm-pick-item:has(input:checked){border-color:var(--ind);box-shadow:0 0 0 2px rgba(14,165,233,.16)}
.afm-pick-th{flex:none;width:46px;height:32px;border-radius:8px;overflow:hidden;background:var(--ulik-sky-tint);
  display:flex;align-items:center;justify-content:center;color:#94A3B8}
.afm-pick-th img{width:100%;height:100%;object-fit:cover}
.afm-pick-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.afm-pick-tx b{font-size:.86rem;font-weight:700;color:var(--ink);line-height:1.3}
.afm-pick-tx .mini-note{margin:0}

@media(max-width:1200px){
  .afm-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .afm-main{flex:1 1 260px}
}
@media(max-width:900px){
  /* baris: thumbnail + info berdampingan, sisanya turun ke baris berikutnya */
  .afm-comm,.afm-metrics{flex:1 1 180px}
  .afm-side{flex:1 1 100%}
}
@media(max-width:560px){
  .afm-stats{grid-template-columns:1fr;gap:12px}
  .afm-stat{padding:14px}
  .afm-row{gap:12px;padding:12px}
  .afm-thumb{flex:0 0 104px;width:104px;height:62px}
  .afm-main{flex:1 1 140px}
  .afm-comm,.afm-metrics{flex:1 1 100%}
  .afm-acts{width:100%}
  .afm-acts .btn,.afm-acts .afm-form{flex:1 1 auto}
  .afm-acts .afm-form .btn{width:100%}
  .afm-toolbar{align-items:stretch}
  .afm-toolbar .af-tools{width:100%;flex-direction:column;align-items:stretch;gap:8px}
  .afm-toolbar .af-search,.afm-toolbar .af-sort{width:100%}
  .afm-toolbar .af-search input,.afm-toolbar .af-sort select{width:100%;min-width:0}
}

/* ==========================================================================
   FASE 3 — AFFILIATE URL & ATTRIBUTION
   --------------------------------------------------------------------------
   ADITIF & SCOPED. Dua kelompok kelas:
     `.afsh-*` = modal "Bagikan Link Affiliate" (di My Campaign)
     `.pd-reco*`/`.pd-reco-chip` = penanda rekomendasi di halaman produk affiliate
   Modal memakai kerangka `.bp-*` yang sudah ada (backdrop, bottom-sheet di HP,
   Escape) — tidak ada sistem modal kedua. Nol aturan lama diubah.
   ========================================================================== */

/* ---------- tombol Bagikan Link di baris campaign ---------- */
.afm-share-btn .ic{width:15px;height:15px}
.afm-share-btn{gap:6px}

/* ---------- modal berbagi ---------- */
/* Lebar modal: aturan modal `.bp-host.bp-modal .bp-panel` (3 kelas) MENANG atas
   `.afsh-panel`, jadi lebarnya harus dinaikkan lewat selector yang sama-sama spesifik. */
.afsh-panel,.bp-host.bp-modal .afsh-panel{max-width:560px}
.afsh-prod{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);
  border-radius:14px;background:#F8FAFC;margin-bottom:16px}
.afsh-th{flex:none;width:52px;height:52px;border-radius:12px;overflow:hidden;background:var(--ulik-sky-tint);
  display:flex;align-items:center;justify-content:center;color:#94A3B8}
.afsh-th img{width:100%;height:100%;object-fit:cover}
.afsh-prod-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.afsh-prod-tx b{font-size:.92rem;font-weight:800;color:var(--ink);line-height:1.3}
.afsh-owner{font-size:.8rem;color:var(--ink-2);font-weight:600}
.afsh-field{margin-bottom:16px}
.afsh-lb{display:block;font-size:.8rem;font-weight:800;color:var(--ink-2);margin-bottom:7px}
.afsh-copy{display:flex;gap:8px;align-items:stretch}
.afsh-copy input{margin:0;flex:1;min-width:0;font-size:.84rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink)}
.afsh-copy .btn{flex:none;min-height:42px;padding-left:20px;padding-right:20px}
.afsh-msg{display:inline-block;margin-top:6px;font-size:.76rem;font-weight:700;color:#047857}
/* deretan tombol berbagi: 5 kolom seperti sketsa */
.afsh-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.afsh-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;border:1px solid var(--line);
  border-radius:12px;background:#fff;color:var(--ink-2);cursor:pointer;font:inherit;text-decoration:none;
  transition:border-color .14s,box-shadow .14s,transform .14s}
.afsh-item:hover{border-color:rgba(14,165,233,.5);box-shadow:0 10px 22px -18px rgba(14,165,233,.7);
  transform:translateY(-1px);opacity:1}
.afsh-item:focus-visible{outline:2px solid var(--ind);outline-offset:2px}
.afsh-ic{width:34px;height:34px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;color:#fff}
.afsh-ic svg{width:17px;height:17px}
.afsh-ic-whatsapp{background:#25D366}
.afsh-ic-telegram{background:#229ED9}
.afsh-ic-twitter{background:#0F172A}
.afsh-ic-facebook{background:#1877F2}
.afsh-ic-copy{background:#E2E8F0;color:var(--ink-2)}
.afsh-tx{font-size:.72rem;font-weight:700;text-align:center;line-height:1.25}
.afsh-note{display:flex;align-items:flex-start;gap:8px;margin:0 0 14px;padding:10px 12px;border-radius:12px;
  background:var(--ulik-sky-tint);border:1px solid var(--ulik-sky-border);font-size:.78rem;color:var(--ink-2);line-height:1.45}
.afsh-note .ic{flex:none;margin-top:1px;color:var(--ind)}
.afsh-valid{border-top:1px solid var(--line);padding-top:12px}
.afsh-valid-row{display:flex;align-items:center;gap:8px;font-size:.78rem;font-weight:700}
.afsh-valid-row .ic{flex:none}
.afsh-valid-row.is-ok{color:#047857}
.afsh-valid-row.is-att{color:var(--ind);margin-top:6px}
.afsh-valid-url{display:block;margin-top:6px;padding:8px 10px;border-radius:10px;background:#F1F5F9;
  font-size:.76rem;color:var(--ink-2);overflow-wrap:anywhere}
@media(max-width:560px){.afsh-row{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ---------- penanda rekomendasi di halaman produk affiliate ---------- */
.pd-reco-chip{display:inline-flex;align-items:center;gap:8px;margin-top:9px;padding:5px 11px 5px 5px;
  border-radius:999px;background:var(--ulik-sky-tint);border:1px solid var(--ulik-sky-border);
  font-size:.8rem;color:var(--ink-2)}
.pd-reco-chip .avatar{flex:none}
.pd-reco{display:flex;align-items:flex-start;gap:9px;margin:14px 0 0;padding:11px 13px;border-radius:12px;
  background:#F1F5F9;border:1px solid var(--line);font-size:.82rem;color:var(--ink-2);line-height:1.5}
.pd-reco .ic{flex:none;margin-top:1px;color:var(--ind)}

/* ==========================================================================
   FASE 4D — PENGHASILAN AFFILIATE (read layer)
   --------------------------------------------------------------------------
   ADITIF & SCOPED (semua kelas berawalan `.afe-`). Kerangka halaman memakai
   komponen yang SUDAH ADA: `ui_stat_card`/`.grid-stats`, `.panel`, `.tbl`/
   `.tblwrap` + `data-label` (stacking di HP), `.ftab`, `.badge`, `.af-tools`/
   `.af-search` (filter Fase 1), `ui_pagination`, dan kerangka modal `.bp-*`.
   Nol aturan lama diubah, tidak ada breakpoint global yang digeser.
   ========================================================================== */

/* ---------- ringkasan & catatan ---------- */
.afe-stats{margin-bottom:16px}
.afe-note{margin:-6px 0 18px}

/* ---------- filter (status pills + pencarian + rentang tanggal) ---------- */
.afe-filter{padding:14px 16px}
.afe-filter .collapse-row{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.afe-filter .filter-tabs{margin-bottom:0}
.afe-range{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0}
.afe-range-in{display:inline-flex;align-items:center;gap:6px;margin:0;font-size:.78rem;font-weight:700;color:var(--ink-2)}
.afe-range-in span{white-space:nowrap}
.afe-range input[type=date]{margin:0;width:auto;padding:8px 10px;font-size:.82rem;border-radius:10px}

/* ---------- tabel riwayat ---------- */
.afe-tbl th.afe-num,.afe-tbl td.afe-num{text-align:right;white-space:nowrap}
.afe-tbl td.afe-act{text-align:right;white-space:nowrap}
.afe-minus{color:#B45309;font-weight:700}
.afe-zero{color:var(--mut-2)}

/* ---------- detail (modal) ---------- */
.afe-panel{max-width:520px}
.afe-host,.bp-host.afe-host .afe-panel{max-width:520px}
.afe-dl{border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:14px}
.afe-dl-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 13px;
  font-size:.84rem;border-bottom:1px solid var(--line)}
.afe-dl-row:last-child{border-bottom:0}
.afe-dl-row span{color:var(--mut);min-width:0}
.afe-dl-row b{color:var(--ink);text-align:right;overflow-wrap:anywhere}
.afe-dl-row.is-total{background:var(--ulik-sky-tint)}
.afe-dl-row.is-total b{font-size:1.05rem;color:var(--ind)}
.afe-dl-state{display:flex;flex-direction:column;gap:3px;margin-bottom:12px}

/* ---------- mobile: tabel → kartu (perilaku `.tbl` existing, tanpa breakpoint baru) ---------- */
@media(max-width:720px){
  .afe-filter .collapse-row{align-items:stretch}
  .afe-filter .af-tools{width:100%;flex-direction:column;align-items:stretch;gap:8px}
  .afe-filter .af-search,.afe-range{width:100%}
  .afe-filter .af-search input{width:100%;min-width:0}
  .afe-range-in{width:100%}
  .afe-range input[type=date]{flex:1;min-width:0}
  .afe-tbl td.afe-num,.afe-tbl th.afe-num{text-align:left}
  .afe-tbl td.afe-act{text-align:left}
}

/* ==========================================================================
   FASE 5 — AFFILIATE CREATOR EXPERIENCE (Master Sketch)
   --------------------------------------------------------------------------
   ADITIF & SCOPED. Dua kelompok kelas:
     `.afd-*` = modal "Detail Produk" + form "Atur Komisi Affiliate"
     `.afsh-*` (tambahan) = susunan catatan pada modal "Bagikan Link"
   Kerangka modal, tombol, badge, dan pil filter memakai komponen yang SUDAH ADA
   (`.bp-*`, `.btn*`, `.badge`, `.ftab`, `.af-*`/`.afm-*`). Nol aturan lama diubah
   dan tidak ada breakpoint global yang digeser.
   ========================================================================== */

/* ---------- modal Detail Produk ---------- */
.afd-panel,.bp-host.bp-modal .afd-panel{max-width:620px}
.afd-top{display:grid;grid-template-columns:190px minmax(0,1fr);gap:16px;margin-bottom:16px}
.afd-cover{display:flex;align-items:center;justify-content:center;aspect-ratio:1/1;border-radius:14px;
  overflow:hidden;background:var(--ulik-sky-tint);color:#94A3B8}
.afd-cover img{width:100%;height:100%;object-fit:cover;display:block}
.afd-info{display:flex;flex-direction:column;gap:4px;min-width:0}
.afd-info .badge{align-self:flex-start}
.afd-name{font-size:1.1rem;font-weight:800;color:var(--ink);line-height:1.3}
.afd-own{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:600;color:var(--ink-2);min-width:0}
.afd-own .avatar{flex:none}
.afd-own span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.afd-price{font-size:1.2rem;font-weight:800;color:var(--ink);letter-spacing:-.01em}
.afd-comm{margin-top:6px;padding:10px 13px;border-radius:12px;background:#F1F5F9;
  display:flex;flex-direction:column;gap:2px}
.afd-comm-t{font-size:.76rem;font-weight:700;color:var(--ink-2)}
.afd-comm-v{font-size:1.15rem;font-weight:800;color:var(--ink);line-height:1.15}
.afd-comm-n{font-size:.8rem;font-weight:700;color:var(--ink-2)}
.afd-comm-note{margin:6px 0 0}
.afd-own-note{margin-top:6px;padding:10px 13px;border-radius:12px;background:#FEF3C7;
  display:flex;flex-direction:column;gap:2px;font-size:.78rem;color:#92400E;line-height:1.45}
.afd-own-note b{font-size:.82rem;font-weight:800}

/* ---------- tab modal: radio + CSS, jalan tanpa JavaScript ----------
   Panel default TERLIHAT; yang tidak dipilih disembunyikan lewat `:has()`. Di peramban
   tanpa `:has()` keempat panel tampil bertumpuk (tidak ada isi yang hilang). */
.afd-radio{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.afd-tabs{border-top:1px solid var(--line);padding-top:12px}
.afd-tab{display:inline-block;margin:0 16px 10px 0;padding:0 0 7px;font-size:.84rem;font-weight:700;
  color:var(--mut);cursor:pointer;border-bottom:2px solid transparent}
.afd-tab:hover{color:var(--ind)}
.afd-tab:focus-visible{outline:2px solid var(--ind);outline-offset:2px;border-radius:4px}
.afd-tabrow{display:block;height:0;clear:both}
.afd-tabs:has(.afd-r-desc:checked) .afd-lb-desc,
.afd-tabs:has(.afd-r-got:checked) .afd-lb-got,
.afd-tabs:has(.afd-r-note:checked) .afd-lb-note,
.afd-tabs:has(.afd-r-owner:checked) .afd-lb-owner{color:var(--ind);border-bottom-color:var(--ind);font-weight:800}
.afd-pane{padding-top:2px}
.afd-tabs:has(.afd-r-desc:checked) .afd-pane:not(.afd-pane-desc),
.afd-tabs:has(.afd-r-got:checked) .afd-pane:not(.afd-pane-got),
.afd-tabs:has(.afd-r-note:checked) .afd-pane:not(.afd-pane-note),
.afd-tabs:has(.afd-r-owner:checked) .afd-pane:not(.afd-pane-owner){display:none}
.afd-short{margin:0 0 10px;font-size:.86rem;font-weight:600;color:var(--ink-2)}
.afd-desc{white-space:pre-line;font-size:.86rem;color:var(--ink-2);line-height:1.6;overflow-wrap:anywhere}
.afd-empty{margin:0;font-size:.84rem;color:var(--mut-2)}
.afd-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.afd-list li{display:flex;align-items:flex-start;gap:9px;font-size:.85rem;color:var(--ink-2);line-height:1.5}
.afd-list li .ic{flex:none;margin-top:2px;color:#059669}
.afd-list-plain li{padding-left:0}
.afd-list-plain li::before{content:"•";color:var(--mut-2);flex:none}
.afd-links{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px}
.afd-link{font-size:.82rem;font-weight:700;color:var(--ind)}
.afd-bio{margin:12px 0 10px;font-size:.85rem;color:var(--ink-2);line-height:1.6;white-space:pre-line;
  overflow-wrap:anywhere}
.afd-creator{display:flex;align-items:center;gap:12px}
.afd-creator-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.afd-creator-tx b{font-size:.95rem;font-weight:800;color:var(--ink)}
.afd-creator-tx span:not(.mini-note){font-size:.82rem;color:var(--ink-2)}
.afd-foot{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;align-items:center;
  margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.afd-form{margin:0;display:inline-flex}

/* ---------- form "Atur Komisi Affiliate" (memakai kartu produk yang sama) ---------- */
.afd-prod{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);
  border-radius:14px;background:#F8FAFC;margin-bottom:16px}
.afd-thumb{flex:none;width:56px;height:56px;border-radius:12px;overflow:hidden;background:var(--ulik-sky-tint);
  display:flex;align-items:center;justify-content:center;color:#94A3B8}
.afd-thumb img{width:100%;height:100%;object-fit:cover}
.afd-prod-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.afd-prod-tx b{font-size:.9rem;font-weight:800;color:var(--ink);line-height:1.3}
.afd-prod-price{font-size:.92rem;font-weight:800;color:var(--ink)}
.afd-lb{display:block;font-size:.82rem;font-weight:800;color:var(--ink-2);margin:0 0 7px}
.afd-pct{display:flex;align-items:stretch;gap:0}
.afd-pct input{margin:0;flex:1;min-width:0;border-radius:12px 0 0 12px;font-size:.95rem;font-weight:700}
.afd-pct-sfx{flex:none;display:inline-flex;align-items:center;padding:0 15px;border:1px solid var(--line);
  border-left:0;border-radius:0 12px 12px 0;background:#F1F5F9;font-weight:800;color:var(--ink-2);font-size:.9rem}
.afd-hint{margin:7px 0 0;font-size:.76rem;color:var(--mut-2)}
.afd-tip{display:flex;align-items:flex-start;gap:8px;margin:14px 0 0;padding:11px 13px;border-radius:12px;
  background:var(--ulik-sky-tint);border:1px solid var(--ulik-sky-border);font-size:.82rem;
  color:var(--ink-2);line-height:1.45}
.afd-tip .ic{flex:none;margin-top:1px;color:var(--ind)}
.afd-note{margin:10px 0 0}
.afd-foot .btn{min-height:44px}
.afd-foot .btn-primary{margin-left:auto}

/* ---------- modal Bagikan Link: catatan bergaris centang ---------- */
.afsh-prod-price{font-size:.92rem;font-weight:800;color:var(--ink)}
.afsh-notes{display:flex;flex-direction:column;gap:7px;border-top:1px solid var(--line);padding-top:12px}
.afsh-note-row{display:flex;align-items:flex-start;gap:8px;font-size:.8rem;font-weight:700;color:#047857}
.afsh-note-row .ic{flex:none;margin-top:1px}
.afsh-note-row.is-att{color:var(--ind)}
.afsh-small{margin:4px 0 0;color:var(--mut-2)}

/* ---------- responsif ---------- */
@media(max-width:620px){
  /* Di HP bingkai modal lebih sempit: kover dikecilkan, sisa tata letak tetap sama. */
  .afd-top{grid-template-columns:118px minmax(0,1fr);gap:12px}
  .afd-cover{border-radius:12px}
  .afd-name{font-size:1rem}
  .afd-price{font-size:1.08rem}
  .afd-tab{margin-right:13px;font-size:.8rem}
  .afd-foot{justify-content:stretch}
  .afd-foot .btn,.afd-foot .afd-form{flex:1 1 auto}
  .afd-foot .afd-form .btn{width:100%}
  .afd-foot .btn-primary{margin-left:0}
}
@media(max-width:380px){
  .afd-top{grid-template-columns:minmax(0,1fr)}
  .afd-cover{aspect-ratio:16/9}
}

/* ==========================================================================
   FASE 6 — ADMIN AFFILIATE (visibility + governance)
   --------------------------------------------------------------------------
   Namespace CSS **per komponen**: seluruh kelas baru memakai awalan `.afa-`
   (Affiliate Admin). Tidak ada kelas generik baru, dan tidak ada satu pun aturan
   lama yang diubah — komponen yang sudah ada dipakai ulang: `.panel`, `.tbl`
   (+`data-label` untuk stacking di HP), `.filter-tabs`/`.ftab`, `.af-search`/
   `.af-sort`/`.af-tools` (toolbar halaman Affiliate creator), `.bp-*` (kerangka
   modal), `.afe-dl*` (tabel deskripsi dari halaman Penghasilan Affiliate),
   `.badge`, `.btn*`, `ui_pagination`, dan design token Fase 0 (`--ulik-*`).
   Dua bagian: navigasi & komponen halaman Affiliate Admin.
   ========================================================================== */

/* ---------- sub-navigasi sidebar (anak menu, Fase 6) ---------- */
/* Dipakai HANYA oleh item nav yang punya anak (saat ini: Admin → Affiliate).
   Ditulis sebagai kelas sendiri supaya item nav lain tidak berubah sama sekali. */
.sn-kids{display:flex;flex-direction:column;gap:1px;margin:2px 0 4px 14px;
  padding-left:10px;border-left:1px solid var(--line)}
.sn-kid{padding:7px 10px;font-size:.82rem;font-weight:600;border-radius:9px;color:var(--mut)}
.sn-kid:hover{background:#F0F9FF;color:var(--ind);opacity:1}
.sn-kid.active{background:var(--ulik-sky-tint);color:var(--ind);font-weight:800}
@media(max-width:900px){
  /* Di dalam drawer, anak menu diberi jarak lebih lega supaya mudah ditekan. */
  .sn-kid{padding:9px 10px;font-size:.85rem}
}
/* ---- Admin Panel v1.37: grup menu bisa dilipat + menu akun ---- */
.anv{padding-bottom:10px}
.anv-g{margin-bottom:2px}
.anv-head{display:flex;align-items:center;gap:8px;width:100%;border:0;background:transparent;cursor:pointer;text-align:left;font-family:inherit}
.anv-head:hover{color:var(--ink-2)}
.anv-head .anv-chev{margin-left:auto;display:inline-flex;transition:transform .18s ease;opacity:.7}
.anv-g.is-closed .anv-chev{transform:rotate(-90deg)}
.anv-g.is-closed .anv-items{display:none}
.anv-sum{display:none;min-width:18px;height:18px;padding:0 6px;border-radius:999px;background:#EF4444;color:#fff;font-size:.62rem;letter-spacing:0;align-items:center;justify-content:center}
.anv-g.is-closed .anv-sum{display:inline-flex}
.anv-badge{background:#EF4444;color:#fff}
.sn.active .anv-badge{background:#fff;color:#DC2626}
.anv-kid-chev{margin-left:auto;display:inline-flex;opacity:.6}
.anv-acct{position:relative;padding:0}
.anv-acct-btn{display:flex;align-items:center;gap:9px;border:0;background:transparent;padding:5px 12px 5px 6px;border-radius:999px;cursor:pointer;font-family:inherit;color:inherit}
.anv-acct-chev{display:inline-flex;opacity:.6}
.anv-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:230px;background:#fff;border:1px solid var(--line);border-radius:16px;
  box-shadow:0 24px 48px -24px rgba(15,23,42,.35);padding:8px;z-index:60}
.anv-menu[hidden]{display:none}
.anv-menu-h{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:6px}
.anv-menu-h b{display:block;font-size:.9rem}.anv-menu-h small{color:var(--mut);font-size:.76rem}
.anv-menu a,.anv-menu button{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:0;border-radius:10px;background:transparent;
  color:var(--ink-2);font:inherit;font-weight:600;font-size:.87rem;text-align:left;cursor:pointer}
.anv-menu a:hover,.anv-menu a.active{background:#F0F9FF;color:var(--ulik-sky-main,#0EA5E9)}
.anv-menu .is-out{color:#B91C1C}.anv-menu .is-out:hover{background:#FEF2F2}
.anv-menu-sep{height:1px;background:var(--line);margin:6px 4px}
.anv-menu form{margin:0}
.anv-moved{background:linear-gradient(135deg,#F0F9FF,#fff);border-color:#BAE6FD}  /* kotak "dipindah" di Ekonomi & Aturan */
.rowline.st-gw{flex-wrap:wrap;row-gap:4px}  /* baris mode gateway di Ekonomi & Aturan */

/* ---------- kepala halaman (breadcrumb + lead + sub-navigasi) ---------- */
.afa-crumb{display:flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;color:var(--mut-2);margin-bottom:6px}
.afa-crumb .ic{opacity:.7}
.afa-crumb b{color:var(--ink-2)}
.afa-lead{margin:0 0 16px;font-size:.88rem;color:var(--mut)}
.afa-subnav{display:flex;gap:6px;overflow-x:auto;padding:4px;margin-bottom:16px;
  background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 24px -22px rgba(15,23,42,.5)}
.afa-snav{flex:1 1 auto;white-space:nowrap;text-align:center;padding:9px 14px;border-radius:10px;
  font-size:.84rem;font-weight:700;color:var(--ink-2);text-decoration:none}
.afa-snav:hover{background:#F0F9FF;color:var(--ind);opacity:1}
.afa-snav.is-on{background:var(--grad-soft);color:#fff}
.afa-snav:focus-visible{outline:2px solid var(--ind);outline-offset:2px}

/* ---------- panel & toolbar ---------- */
.afa-panel{margin-bottom:18px}
.afa-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.afa-panel-head b{font-size:.95rem}
.afa-panel-head p{margin:3px 0 0}
.afa-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.afa-toolbar .filter-tabs{margin-bottom:0}
.afa-note{display:flex;align-items:flex-start;gap:9px;margin:0 0 18px;padding:12px 14px;border-radius:14px;
  background:var(--ulik-sky-tint);border:1px solid var(--ulik-sky-border);font-size:.82rem;color:var(--ink-2);line-height:1.5}
.afa-note .ic{flex:none;margin-top:1px;color:var(--ind)}
.afa-sub{display:block;margin:16px 0 8px;font-size:.86rem;font-weight:800;color:var(--ink-2)}

/* ---------- tabel ---------- */
.afa-tbl th.afa-num,.afa-tbl td.afa-num{text-align:right;white-space:nowrap}
.afa-tbl th.afa-act,.afa-tbl td.afa-act{text-align:right}
.afa-tbl td{vertical-align:middle}
.afa-prod{display:flex;align-items:center;gap:10px;min-width:0}
.afa-thumb{flex:none;width:38px;height:38px;border-radius:10px;overflow:hidden;background:var(--ulik-sky-tint);
  display:inline-flex;align-items:center;justify-content:center;color:#94A3B8}
.afa-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.afa-prod-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.afa-prod-tx b{font-size:.88rem;font-weight:700;color:var(--ink);line-height:1.3}
.afa-user{display:inline-flex;align-items:center;gap:7px;min-width:0;font-size:.84rem;color:var(--ink-2);font-weight:600}
.afa-user .avatar{flex:none}
.afa-user span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.afa-rowacts{display:inline-flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.afa-form{margin:0;display:inline-flex}
.afa-warn{color:#B91C1C}

/* ---------- grafik Ringkasan (dua seri) ---------- */
.afa-chart-wrap{display:block}
.afa-chart-box{width:100%;height:240px}
.afa-chart{width:100%;height:100%;display:block;overflow:visible}
.afa-chart.is-empty{display:flex;align-items:center;justify-content:center;height:240px;
  border:1px dashed var(--line);border-radius:14px;color:var(--mut-2);font-size:.85rem}
.afa-area{fill:url(#afaFill)}
.afa-fill-a{stop-color:var(--ulik-sky-tint);stop-opacity:.95}
.afa-fill-b{stop-color:var(--ulik-sky-tint);stop-opacity:.08}
.afa-axis{stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke}
.afa-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.afa-line-1{stroke:var(--ulik-sky-light)}
.afa-line-2{stroke:var(--ulik-sky-main);stroke-width:2.5;stroke-dasharray:6 5}
.afa-dot{fill:#fff;stroke:var(--ulik-sky-light);stroke-width:2;vector-effect:non-scaling-stroke}
.afa-axis-x{display:flex;justify-content:space-between;gap:6px;margin-top:6px;
  font-size:.7rem;color:var(--mut-2);font-variant-numeric:tabular-nums}
.afa-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.78rem;font-weight:700;color:var(--ink-2)}
.afa-lg{display:inline-flex;align-items:center;gap:6px}
.afa-lg i{width:14px;height:3px;border-radius:2px;display:inline-block}
.afa-lg-1 i{background:var(--ulik-sky-light)}
.afa-lg-2 i{background:var(--ulik-sky-main)}
.afa-chart-note{margin:10px 0 0}

/* ---------- daftar peringkat & fakta ---------- */
.afa-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;margin-bottom:18px}
.afa-rank{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.afa-rank-row{display:flex;align-items:center;gap:12px;min-width:0}
.afa-rank-n{flex:none;width:26px;height:26px;border-radius:9px;background:var(--ulik-sky-tint);
  color:var(--ind);font-weight:800;font-size:.8rem;display:inline-flex;align-items:center;justify-content:center}
.afa-rank-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.afa-rank-tx b{font-size:.86rem;font-weight:700;color:var(--ink);line-height:1.3;overflow-wrap:anywhere}
.afa-facts{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:9px}
.afa-facts li{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  padding-bottom:8px;border-bottom:1px solid var(--line);font-size:.85rem;color:var(--mut)}
.afa-facts li:last-child{border-bottom:0;padding-bottom:0}
.afa-facts b{color:var(--ink);font-size:.95rem;text-align:right}
.afa-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:9px}
.afa-list li{display:flex;align-items:flex-start;gap:9px;font-size:.84rem;color:var(--ink-2);line-height:1.5}
.afa-list li .ic{flex:none;margin-top:2px;color:#059669}
.afa-list-plain li::before{content:"•";color:var(--mut-2);flex:none}

/* ---------- modal ---------- */
.afa-panel-modal,.bp-host.bp-modal .afa-panel-modal{max-width:640px}
.afa-host > summary{display:none}
.afa-btn-wide{min-height:44px}
.afa-host .afd-foot .btn-primary{margin-left:0}

/* ---------- responsif ---------- */
@media(max-width:1100px){
  /* Dua kolom (grafik/produk & kebijakan) bertumpuk lebih awal: keduanya panel berisi teks. */
  .afa-split{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:900px){
  .afa-chart-box,.afa-chart.is-empty{height:200px}
}
@media(max-width:720px){
  /* Tabel `.tbl` sudah menumpuk jadi kartu di ≤720px lewat `data-label`;
     di sini hanya perataan angka/aksi yang dikembalikan ke kiri. */
  .afa-tbl th.afa-num,.afa-tbl td.afa-num{text-align:left}
  .afa-tbl th.afa-act,.afa-tbl td.afa-act{text-align:left}
  .afa-rowacts{justify-content:flex-start}
}
@media(max-width:560px){
  /* Di HP sempit kelima tab TIDAK muat sebaris: dibuat MEMBUNGKUS (dua baris) supaya
     semuanya terlihat — bukan digeser ke samping sampai ada tab yang terpotong. */
  .afa-subnav{flex-wrap:wrap;overflow-x:visible}
  .afa-snav{flex:1 1 44%;padding:8px 11px;font-size:.79rem}
  .afa-panel-head{flex-direction:column;align-items:stretch}
  .afa-toolbar{align-items:stretch}
  .afa-toolbar .af-tools{width:100%;flex-direction:column;align-items:stretch;gap:8px}
  .afa-toolbar .af-search,.afa-toolbar .af-sort{width:100%}
  .afa-toolbar .af-search input,.afa-toolbar .af-sort select{width:100%;min-width:0}
  .afa-chart-box,.afa-chart.is-empty{height:170px}
}

/* ==========================================================================
   HOMEPAGE (redesign v1.23) — `vp_landing()` di app/Views/pages/public.php
   Semua gaya di-scope ke `.lp` (main homepage). Ditulis PALING AKHIR supaya menang
   atas gaya editorial lama (judul serif `chrome-site`) dan latar `body.pg-landing`.
   Kotak klaim memakai id lama (#claimForm/#claimInput) dan pesan `.ed-claim-msg`
   (className-nya diganti app.js) — jangan ganti nama itu.
   ========================================================================== */
body.pg-landing{background:#fff}
.lp{
  --lp-sky:var(--ulik-sky-main,#0EA5E9); --lp-sky-2:var(--ulik-sky-light,#38BDF8); --lp-sky-3:#7DD3FC;
  --lp-soft:#E0F2FE; --lp-mist:#F0F9FF; --lp-ink:#0B1324; --lp-ink-2:#334155; --lp-mut:#64748B;
  --lp-line:#E2E8F0; --lp-r:24px; --lp-shadow:0 24px 60px -30px rgba(14,165,233,.45);
  color:var(--lp-ink);font-family:var(--ed-sans,'Inter',system-ui,sans-serif);overflow-x:clip}
.lp h1,.lp h2,.lp h3{font-family:inherit;color:inherit}
.lp-wrap{max-width:1160px;margin:0 auto;padding:0 20px}
.lp-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;font-weight:700;
  font-size:.92rem;padding:11px 20px;border:0;cursor:pointer;white-space:nowrap;font-family:inherit}
.lp-btn-pri{background:linear-gradient(135deg,var(--lp-sky-2),var(--lp-sky));color:#fff;box-shadow:0 12px 26px -12px rgba(14,165,233,.8)}
.lp-btn-ghost{background:#fff;border:1px solid var(--lp-line);color:var(--lp-ink)}
.lp-btn-dark{background:var(--lp-ink);color:#fff}
.lp-btn:hover{opacity:.93}

/* ---- hero ---- */
.lp-hero{padding:56px 0 90px;background:radial-gradient(1200px 500px at 85% -10%,#BAE6FD 0,transparent 60%),
  radial-gradient(800px 420px at -10% 20%,#E0F2FE 0,transparent 60%),linear-gradient(#F0F9FF,#fff)}
.lp-hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center}
.lp-hero-grid>*{min-width:0}
.lp-pill{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--lp-soft);color:var(--lp-sky);
  font-weight:700;font-size:.8rem;padding:7px 14px 7px 8px;border-radius:999px;box-shadow:0 6px 18px -10px rgba(14,165,233,.5)}
.lp-pill b{background:var(--lp-soft);border-radius:999px;padding:2px 7px}
.lp-hero h1{font-size:clamp(2.3rem,5.2vw,4rem);line-height:1.05;letter-spacing:-.035em;margin:18px 0;font-weight:800}
.lp-hl{position:relative;z-index:0;color:var(--lp-sky);white-space:nowrap}
.lp-hl::after{content:"";position:absolute;left:-2%;right:-2%;bottom:.06em;height:.28em;background:var(--lp-soft);
  z-index:-1;border-radius:8px;transform:rotate(-1deg)}
.lp-lead{font-size:1.12rem;line-height:1.65;color:var(--lp-ink-2);max-width:520px;margin:0 0 28px}
.lp-claim{display:flex;align-items:center;background:#fff;border:2px solid var(--lp-soft);border-radius:999px;
  padding:6px 6px 6px 22px;max-width:520px;box-shadow:var(--lp-shadow)}
.lp-claim:focus-within{border-color:var(--lp-sky-3)}
.lp-claim-pre{font-weight:700;color:var(--lp-ink-2);white-space:nowrap;max-width:45%;overflow:hidden;text-overflow:ellipsis}
.lp .lp-claim input{flex:1;min-width:0;border:0;outline:0;box-shadow:none;background:transparent;
  font:inherit;font-size:1rem;font-weight:600;line-height:1.2;padding:12px 4px;color:var(--lp-ink)}
.lp .lp-claim input::placeholder{color:#94A3B8}
.lp .ed-claim-msg{min-height:1.2em;margin:10px 0 0 22px;font-size:.86rem;font-weight:600;color:var(--lp-mut)}
.lp .ed-claim-msg.ok{color:#15803D}
.lp .ed-claim-msg.bad{color:#BE123C}
.lp-ticks{display:flex;gap:18px;flex-wrap:wrap;margin:14px 0 0;padding:0;list-style:none;font-size:.86rem;color:var(--lp-mut);font-weight:600}
.lp-ticks li::before{content:"✓";color:var(--lp-sky);font-weight:800;margin-right:6px}

.lp-stage{position:relative;height:560px}
.lp-phone{position:absolute;left:50%;top:10px;transform:translateX(-50%) rotate(-4deg);width:280px;height:540px;
  border-radius:44px;background:#0B1324;padding:12px;box-shadow:0 50px 80px -40px rgba(11,19,36,.6)}
.lp-screen{width:100%;height:100%;border-radius:34px;overflow:hidden;background:#fff}
.lp-screen img{display:block;width:100%;height:100%;object-fit:cover;object-position:top}
.lp-float{position:absolute;background:#fff;border-radius:18px;padding:12px 14px;box-shadow:0 22px 40px -22px rgba(11,19,36,.45);
  display:flex;gap:10px;align-items:center;font-size:.8rem;animation:lp-bob 5s ease-in-out infinite}
.lp-float b{display:block;font-size:.84rem}.lp-float small{color:var(--lp-mut);font-weight:600}
.lp-float-ic{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;font-size:1.05rem;flex:none}
.lp-mint{background:#BBF7D0}.lp-sky{background:var(--lp-soft)}.lp-sun{background:#FDE68A}
.lp-f1{top:14px;left:-6px}
.lp-f2{top:260px;right:-14px;animation-delay:-1.6s}
.lp-f3{bottom:46px;left:8px;animation-delay:-3s}
@keyframes lp-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}

/* ---- kategori creator (marquee) ---- */
.lp-strip{padding:22px 0;border-block:1px solid var(--lp-line);background:#fff;overflow:hidden}
.lp-strip p{text-align:center;margin:0 0 14px;font-size:.8rem;font-weight:700;color:var(--lp-mut);letter-spacing:.08em;text-transform:uppercase}
.lp-marquee{display:flex;gap:12px;width:max-content;animation:lp-scroll 32s linear infinite}
.lp-marquee-dup{display:contents}
.lp-chip{display:inline-flex;align-items:center;padding:10px 16px;border-radius:999px;background:var(--lp-mist);
  border:1px solid var(--lp-soft);font-weight:700;font-size:.9rem;white-space:nowrap}
@keyframes lp-scroll{to{transform:translateX(calc(-50% - 6px))}}

/* ---- section umum ---- */
.lp-sec{padding:96px 0}
.lp-head{text-align:center}
.lp-eyebrow{display:inline-block;font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--lp-sky);margin-bottom:12px}
.lp-h2{font-size:clamp(1.9rem,3.6vw,2.8rem);line-height:1.1;letter-spacing:-.03em;margin:0 0 14px;font-weight:800}
.lp-sub{font-size:1.05rem;color:var(--lp-ink-2);line-height:1.65;max-width:620px;margin:0 auto}

/* ---- fitur (bento) ---- */
.lp-bento{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:minmax(210px,auto);gap:18px;margin-top:48px}
.lp-card{border-radius:var(--lp-r);padding:26px;background:var(--lp-mist);border:1px solid var(--lp-soft);grid-column:span 2;min-width:0}
.lp-card h3{margin:0 0 8px;font-size:1.2rem;letter-spacing:-.01em;font-weight:800}
.lp-card p{margin:0;color:var(--lp-ink-2);font-size:.94rem;line-height:1.6}
.lp-c-a{grid-column:span 4;display:grid;grid-template-columns:1fr .9fr;gap:22px;align-items:center;
  background:linear-gradient(135deg,var(--lp-sky),var(--lp-sky-2));color:#fff;border:0}
.lp-c-a p{color:#E0F2FE}
.lp-c-white{background:#fff}
.lp-mini-links{display:flex;flex-direction:column;gap:8px}
.lp-mini-links span{background:rgba(255,255,255,.95);color:var(--lp-ink);border-radius:12px;padding:10px 12px;font-size:.8rem;
  font-weight:700;box-shadow:0 10px 18px -12px rgba(0,0,0,.35)}
.lp-mini-links span:nth-child(2){transform:translateX(-14px)}
.lp-mini-links span:nth-child(3){transform:translateX(-6px)}
.lp-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:16px}
.lp-badges span{font-size:.74rem;font-weight:700;background:#fff;border:1px solid var(--lp-line);border-radius:999px;padding:4px 10px}
.lp-qris{margin-top:18px;display:flex;gap:10px;align-items:center}
.lp-qris .lp-badges{margin-top:0}
.lp-qr{width:64px;height:64px;flex:none;border-radius:12px;border:6px solid #fff;box-shadow:0 8px 16px -10px rgba(0,0,0,.4);
  background:conic-gradient(var(--lp-ink) 25%,#fff 0 50%,var(--lp-ink) 0 75%,#fff 0) 0 0/16px 16px}
.lp-mail{margin-top:18px;background:#fff;border:1px solid var(--lp-line);border-radius:14px;padding:12px;font-size:.8rem;
  box-shadow:0 10px 20px -14px rgba(14,165,233,.7)}
.lp-mail b{display:block}.lp-mail b span{color:#16A34A}.lp-mail small{color:var(--lp-mut)}
.lp-bars{display:flex;align-items:flex-end;gap:8px;height:80px;margin-top:20px}
.lp-bars i{flex:1;border-radius:8px 8px 4px 4px;background:linear-gradient(var(--lp-sky-2),var(--lp-soft))}

/* ---- cara kerja ---- */
.lp-steps-bg{background:linear-gradient(#fff,var(--lp-mist))}
.lp-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin:52px 0 0;padding:0;list-style:none;position:relative}
.lp-steps::before{content:"";position:absolute;top:34px;left:16%;right:16%;border-top:2px dashed var(--lp-sky-3)}
.lp-steps li{position:relative;text-align:center;padding:0 10px}
.lp-step-n{width:68px;height:68px;margin:0 auto 18px;border-radius:22px;background:#fff;border:2px solid var(--lp-soft);
  display:grid;place-items:center;font-size:1.6rem;box-shadow:var(--lp-shadow)}
.lp-steps h3{margin:0 0 8px;font-size:1.15rem;font-weight:800}
.lp-steps p{margin:0;color:var(--lp-ink-2);font-size:.94rem;line-height:1.6}
.lp-steps code{background:#fff;border:1px solid var(--lp-soft);border-radius:8px;padding:2px 7px;font-size:.84rem;color:var(--lp-sky);font-weight:700;overflow-wrap:anywhere}

/* ---- contoh tema ---- */
.lp-show{display:flex;gap:26px;justify-content:center;align-items:flex-end;margin-top:54px}
.lp-show-item{margin:0}
.lp-show-item figcaption{text-align:center;margin-top:12px;font-size:.82rem;font-weight:700;color:var(--lp-mut)}
.lp-mini-phone{width:210px;border-radius:34px;background:#0B1324;padding:9px;box-shadow:0 40px 60px -40px rgba(11,19,36,.6);transition:transform .3s}
.lp-show-item:nth-child(2) .lp-mini-phone{transform:translateY(-26px)}
.lp-mini-phone:hover{transform:translateY(-8px)}
.lp-show-item:nth-child(2) .lp-mini-phone:hover{transform:translateY(-34px)}
.lp-ms{border-radius:26px;height:400px;padding:34px 14px 14px;text-align:center;overflow:hidden;display:flex;flex-direction:column;
  align-items:center;gap:8px;background:var(--lp-t-page);color:var(--lp-t-ink)}
.lp-ms-av{width:62px;height:62px;border-radius:50%;padding:3px;background:var(--lp-t-ring)}
.lp-ms-av span{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;background:#fff;font-size:1.5rem}
.lp-ms-name{font-size:.92rem}
.lp-ms-bio{font-size:.7rem;color:var(--lp-t-sub);margin-bottom:6px}
.lp-ms-link{align-self:stretch;background:var(--lp-t-card);border-radius:var(--lp-t-r);padding:10px;font-size:.72rem;font-weight:700;
  box-shadow:0 6px 14px -10px rgba(0,0,0,.35)}
.lp-ms-acc{background:var(--lp-t-acc);color:var(--lp-t-acc-ink)}
.lp-show-cta{text-align:center;margin-top:34px}

/* ---- alur jualan ---- */
.lp-sec-flow{padding-top:20px}
.lp-flow-box{border-radius:32px;background:var(--lp-ink);color:#fff;padding:56px;display:grid;grid-template-columns:.9fr 1.1fr;
  gap:40px;align-items:center;position:relative;overflow:hidden}
.lp-flow-box::before{content:"";position:absolute;width:420px;height:420px;border-radius:50%;
  background:radial-gradient(circle,rgba(56,189,248,.45),transparent 65%);right:-120px;top:-160px;pointer-events:none}
.lp-flow-box>*{position:relative;min-width:0}
.lp-flow-box .lp-eyebrow{color:var(--lp-sky-3)}
.lp-flow-box .lp-sub{color:#CBD5E1;margin:0}
.lp-fee{margin-top:22px;display:flex;gap:10px;flex-wrap:wrap}
.lp-fee span{font-size:.82rem;font-weight:700;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:7px 13px}
.lp-flow{display:flex;flex-direction:column;gap:12px;margin:0;padding:0;list-style:none}
.lp-flow li{display:flex;align-items:center;gap:14px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:14px 16px}
.lp-flow-ic{width:42px;height:42px;border-radius:13px;background:rgba(56,189,248,.18);display:grid;place-items:center;font-size:1.15rem;flex:none}
.lp-flow b{display:block;font-size:.95rem}.lp-flow small{color:#94A3B8;font-size:.82rem}
.lp-flow li:last-child{background:linear-gradient(135deg,var(--lp-sky),var(--lp-sky-2));border:0}
.lp-flow li:last-child small{color:#E0F2FE}

/* ---- FAQ ---- */
.lp-sec-faq{padding-top:40px}
.lp-faq{max-width:760px;margin:44px auto 0;display:flex;flex-direction:column;gap:12px}
.lp-faq details{border:1px solid var(--lp-line);border-radius:18px;padding:18px 22px;background:#fff}
.lp-faq details[open]{border-color:var(--lp-soft);background:var(--lp-mist)}
.lp-faq summary{cursor:pointer;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:12px}
.lp-faq summary::-webkit-details-marker{display:none}
.lp-faq summary::after{content:"+";color:var(--lp-sky);font-size:1.3rem;line-height:1}
.lp-faq details[open] summary::after{content:"–"}
.lp-faq p{margin:10px 0 0;color:var(--lp-ink-2);line-height:1.65;font-size:.95rem}

/* ---- ajakan penutup ---- */
.lp-final{position:relative;overflow:hidden;margin:0 0 90px;border-radius:36px;padding:70px 30px;text-align:center;color:#fff;
  background:radial-gradient(600px 300px at 20% 0,#7DD3FC,transparent 70%),linear-gradient(135deg,var(--lp-sky),var(--lp-sky-2))}
.lp-final .lp-h2{font-size:clamp(2rem,4.4vw,3.2rem)}
.lp-final .lp-sub{color:#E0F2FE;margin:0 auto 28px}
.lp-final .lp-claim{margin:0 auto;border-color:rgba(255,255,255,.5)}
.lp-spark{position:absolute;font-size:1.6rem;opacity:.85;animation:lp-bob 6s ease-in-out infinite}
.lp-s1{left:8%;top:18%}.lp-s2{right:10%;top:22%;animation-delay:-2s}.lp-s3{right:16%;bottom:16%;animation-delay:-4s}

@media(prefers-reduced-motion:reduce){
  .lp-float,.lp-spark,.lp-marquee{animation:none}
}

/* ---- responsif ---- */
@media(max-width:960px){
  .lp-hero-grid{grid-template-columns:1fr}
  .lp-stage{height:520px;max-width:420px;margin:0 auto;width:100%}
  .lp-bento{grid-template-columns:repeat(2,1fr)}
  .lp-card{grid-column:span 1}
  .lp-c-a{grid-column:span 2}
  .lp-flow-box{grid-template-columns:1fr;padding:36px 24px}
}
@media(max-width:640px){
  .lp-hero{padding:32px 0 60px}
  .lp-lead{font-size:1rem}
  .lp-hl{white-space:normal}
  .lp-claim{padding-left:16px}.lp-claim-pre{font-size:.9rem}.lp-claim .lp-btn{padding:11px 14px;font-size:.85rem}
  .lp .ed-claim-msg{margin-left:16px}
  .lp-stage{height:470px}
  .lp-phone{width:240px;height:470px}
  .lp-float{padding:10px 11px;font-size:.74rem}.lp-float-ic{width:30px;height:30px}
  .lp-f1{left:-4px;top:30px}.lp-f2{right:-4px}.lp-f3{left:0}
  .lp-sec{padding:64px 0}
  .lp-bento{grid-template-columns:1fr}
  .lp-card,.lp-c-a{grid-column:span 1}
  .lp-c-a{grid-template-columns:1fr}
  .lp-mini-links span:nth-child(n){transform:none}
  .lp-steps{grid-template-columns:1fr;gap:34px}
  .lp-steps::before{display:none}
  .lp-show{justify-content:flex-start;overflow-x:auto;scroll-snap-type:x mandatory;gap:16px;
    margin:40px -20px 0;padding:30px 20px 10px;scrollbar-width:none}
  .lp-show-item{flex:none;scroll-snap-align:center}
  .lp-show-item:nth-child(2) .lp-mini-phone{transform:none}
  .lp-mini-phone{width:200px}.lp-ms{height:360px}
  .lp-final{border-radius:26px;padding:48px 20px;margin-bottom:60px}
}

/* ==========================================================================
   HALAMAN MASUK (v1.24) — AuthController::authCentered(), body.pg-login
   Satu kolom: logo → kartu form → "kembali ke beranda", di atas latar biru langit
   berawan. Halaman daftar/lupa/reset tetap memakai kerangka dua kolom (.ed-auth-*).
   ========================================================================== */
body.pg-login{min-height:100vh;color:#0B1324;font-family:var(--ed-sans,'Inter',system-ui,sans-serif);
  background:radial-gradient(900px 520px at 85% -10%,#7DD3FC 0,transparent 60%),
             radial-gradient(800px 500px at -10% 110%,#BAE6FD 0,transparent 60%),
             linear-gradient(160deg,#E0F2FE 0%,#F0F9FF 55%,#fff 100%);background-attachment:fixed}
.lg-wrap{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:32px 16px;overflow:hidden}
.lg-cloud{position:absolute;background:#fff;border-radius:999px;opacity:.7;pointer-events:none}
.lg-cloud::before,.lg-cloud::after{content:"";position:absolute;background:#fff;border-radius:50%}
.lg-c1{width:180px;height:54px;top:12%;left:8%}.lg-c1::before{width:80px;height:80px;top:-40px;left:30px}.lg-c1::after{width:56px;height:56px;top:-26px;left:96px}
.lg-c2{width:140px;height:44px;top:70%;right:9%;opacity:.6}.lg-c2::before{width:64px;height:64px;top:-32px;left:22px}.lg-c2::after{width:44px;height:44px;top:-20px;left:76px}
.lg-c3{width:110px;height:36px;top:22%;right:18%;opacity:.5}.lg-c3::before{width:50px;height:50px;top:-25px;left:18px}.lg-c3::after{width:36px;height:36px;top:-16px;left:58px}
.lg-logo{position:relative;margin-bottom:22px}
.lg-logo .ulik-logo{font-size:1.6rem}
.lg-card{position:relative;width:100%;max-width:420px;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);
  border:1px solid rgba(255,255,255,.9);border-radius:28px;padding:34px 30px 28px;box-shadow:0 30px 70px -36px rgba(14,165,233,.55)}
.lg-card h1{margin:0 0 6px;font-family:inherit;font-size:1.6rem;font-weight:800;letter-spacing:-.02em;text-align:center;color:#0B1324}
.lg-sub{margin:0 0 26px;text-align:center;color:#64748B;font-size:.93rem;line-height:1.5}
.lg-alert{border-radius:14px;padding:11px 13px;font-size:.86rem;font-weight:600;margin:0 0 18px;line-height:1.45;overflow-wrap:anywhere}
.lg-alert-err{background:#FFF1F2;border:1px solid #FECDD3;color:#9F1239}
.lg-alert-err::before{content:"⚠️ "}
.lg-alert-warn{background:#FFFBEB;border:1px solid #FDE68A;color:#92400E}
.lg-alert-info{background:#F0F9FF;border:1px solid #BAE6FD;color:#075985}
.lg-alert-ok{background:#F0FDF4;border:1px solid #BBF7D0;color:#166534}
.lg-field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.lg-field label{font-size:.84rem;font-weight:700;color:#334155}
.lg-lblrow{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.lg-lblrow a{font-size:.82rem;font-weight:700;color:var(--ulik-sky-main,#0EA5E9)}
.lg-inp{position:relative;display:flex;align-items:center}
.lg-ic{position:absolute;left:14px;color:#94A3B8;display:grid;place-items:center;pointer-events:none}
.lg-ic svg{width:18px;height:18px}
.lg-inp input{width:100%;border:1.5px solid #E2E8F0;border-radius:14px;padding:13px 14px 13px 42px;font:inherit;font-size:.95rem;font-weight:500;background:#fff;color:#0B1324;outline:none;transition:border-color .15s,box-shadow .15s}
.lg-inp.ed-pw input{padding-right:46px}
.lg-inp input:focus{border-color:#38BDF8;box-shadow:0 0 0 4px rgba(56,189,248,.18)}
.lg-inp.is-err input{border-color:#FDA4AF}
.lg-inp .eye{right:8px}
.lg-btn{width:100%;border:0;border-radius:14px;padding:14px;font:inherit;font-size:1rem;font-weight:700;color:#fff;cursor:pointer;margin-top:6px;
  background:linear-gradient(135deg,var(--ulik-sky-light,#38BDF8),var(--ulik-sky-main,#0EA5E9));box-shadow:0 14px 28px -14px rgba(14,165,233,.9)}
.lg-btn:hover{opacity:.94}
a.lg-btn{display:block;text-align:center;color:#fff;text-decoration:none}
.lg-card-wide{max-width:480px}
/* baris persetujuan syarat (form daftar): teks dibungkus satu <span> supaya tidak pecah */
.lg-agree{display:flex;gap:10px;align-items:flex-start;margin:4px 0 14px;font-size:.84rem;font-weight:500;color:#334155;cursor:pointer}
.lg-agree input{flex:none;margin-top:3px;width:16px;height:16px;accent-color:var(--ulik-sky-main,#0EA5E9)}
.lg-agree span{display:block;line-height:1.5}
.lg-agree a{color:var(--ulik-sky-main,#0EA5E9);font-weight:700}
.lg-alert code{font-size:.8rem;word-break:break-all}
.lg-alt{text-align:center;margin:20px 0 0;font-size:.9rem;color:#64748B}
.lg-alt a{color:var(--ulik-sky-main,#0EA5E9);font-weight:700}
.lg-back{position:relative;margin-top:22px;font-size:.86rem;font-weight:600;color:#334155}
.lg-back:hover{color:var(--ulik-sky-main,#0EA5E9)}
@media(max-width:480px){
  .lg-wrap{justify-content:flex-start;padding-top:44px}
  .lg-card{padding:28px 20px 24px;border-radius:24px}
  .lg-c1{left:-40px}.lg-c3{display:none}
}

/* ==========================================================================
   LAMAN CMS — TAMPILAN ARTIKEL (v1.25) — app/Views/pages/page_cms.php
   Scope: main.cp (body.pg-page). Judul memakai sans (bukan serif editorial).
   ========================================================================== */
body.pg-page{background:#fff}
.cp{--cp-sky:var(--ulik-sky-main,#0EA5E9);--cp-sky-2:var(--ulik-sky-light,#38BDF8);--cp-soft:#E0F2FE;--cp-mist:#F0F9FF;
  --cp-ink:#0B1324;--cp-ink-2:#334155;--cp-mut:#64748B;--cp-line:#E2E8F0;
  color:var(--cp-ink);font-family:var(--ed-sans,'Inter',system-ui,sans-serif);padding-bottom:70px}
.cp h1,.cp h2,.cp h3,.cp h4{font-family:inherit;color:var(--cp-ink)}
.cp-wrap{max-width:1100px;margin:0 auto;padding:0 20px}
.cp-preview{margin:18px 0 0;background:#FFFBEB;border:1px solid #FDE68A;color:#92400E;border-radius:14px;padding:12px 14px;font-size:.88rem}
.cp-hero{background:linear-gradient(#F0F9FF,#fff);padding:40px 0 22px}
.cp-bc{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:.84rem;font-weight:600;color:var(--cp-mut);margin-bottom:14px}
.cp-bc a{color:var(--cp-sky)}
.cp-bc span[aria-current]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60vw}
.cp-hero h1{font-size:clamp(1.9rem,4.4vw,2.9rem);line-height:1.12;letter-spacing:-.03em;font-weight:800;margin:0 0 14px;max-width:840px}
.cp-lead{font-size:1.14rem;line-height:1.6;color:var(--cp-ink-2);max-width:720px;margin:0 0 16px}
.cp-meta{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.85rem;font-weight:600;color:var(--cp-mut)}
.cp-meta span+span::before{content:"•";margin-right:14px;color:#CBD5E1}
.cp-fig{margin:8px auto 0}
.cp-fig img{display:block;width:100%;height:auto;max-height:520px;object-fit:cover;border-radius:24px}
.cp-lay{display:block;margin-top:34px}
.cp-lay.has-toc{display:grid;grid-template-columns:220px minmax(0,720px);gap:44px;justify-content:start}
.cp-lay:not(.has-toc) .cp-art{max-width:740px}
.cp-toc{position:sticky;top:20px;align-self:start;font-size:.85rem;max-height:calc(100vh - 40px);overflow:auto}
.cp-toc b{display:block;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--cp-mut);margin-bottom:10px}
.cp-toc a{display:block;padding:7px 0 7px 12px;border-left:2px solid var(--cp-line);color:var(--cp-mut);font-weight:600;line-height:1.35}
.cp-toc a:hover{color:var(--cp-sky);border-color:var(--cp-sky-2)}
.cp-toc a.sub{padding-left:24px;font-weight:500}
.cp-toc-m{display:none}

/* ---- tipografi isi ---- */
.cp-art{font-size:1.07rem;line-height:1.8;color:var(--cp-ink-2);min-width:0;overflow-wrap:anywhere}
.cp-art > *:first-child{margin-top:0}
.cp-art p,.cp-art div{margin:0 0 1.1em}
.cp-art h2{font-size:1.55rem;line-height:1.25;letter-spacing:-.015em;font-weight:800;margin:1.8em 0 .5em;scroll-margin-top:20px}
.cp-art h3{font-size:1.2rem;line-height:1.3;font-weight:700;margin:1.5em 0 .4em;scroll-margin-top:20px}
.cp-art h2[tabindex="-1"]:focus,.cp-art h3[tabindex="-1"]:focus{outline:none}  /* fokus dari daftar isi (v1.36) */
.cp-art h4{font-size:1.05rem;font-weight:700;margin:1.3em 0 .3em}
.cp-art a{color:var(--cp-sky);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.cp-art ul,.cp-art ol{padding-left:1.3em;margin:0 0 1.1em}
.cp-art li{margin:.35em 0}
.cp-art blockquote{margin:1.4em 0;padding:4px 0 4px 20px;border-left:4px solid var(--cp-sky-2);font-size:1.12rem;font-style:italic;color:var(--cp-ink)}
.cp-art hr{border:0;border-top:1px solid var(--cp-line);margin:2em 0}
.cp-art img{display:block;max-width:100%;height:auto;border-radius:16px;margin:1.4em 0}
.cp-art .cp-table{max-width:100%;overflow-x:auto;margin:0 0 1.3em;border:1px solid var(--cp-line);border-radius:12px}
.cp-art table{width:100%;border-collapse:collapse;font-size:.94rem}
.cp-art th,.cp-art td{padding:10px 14px;border-bottom:1px solid var(--cp-line);text-align:left;vertical-align:top}
.cp-art th{background:var(--cp-mist);color:var(--cp-ink);font-weight:700}
.cp-art tr:last-child td{border-bottom:0}
.cp-empty{color:var(--cp-mut);font-style:italic}

@media(max-width:960px){
  .cp-lay.has-toc{display:block}
  .cp-toc{display:none}
  .cp-toc-m{display:block;border:1px solid var(--cp-line);border-radius:14px;background:var(--cp-mist);margin:0 0 24px;font-size:.92rem}
  .cp-toc-m summary{cursor:pointer;padding:12px 16px;font-weight:700;color:var(--cp-ink)}
  .cp-toc-m div{padding:0 16px 10px}
  .cp-toc-m a{display:block;padding:7px 0;color:var(--cp-ink-2);font-weight:600;text-decoration:none;border-top:1px solid var(--cp-line)}
  .cp-toc-m a.sub{padding-left:14px;font-weight:500}
}
@media(max-width:560px){
  .cp-hero{padding:28px 0 16px}
  .cp-art{font-size:1.02rem}
  .cp-fig img{border-radius:16px}
}

/* ---- editor Laman: elemen baru tampil seperti hasil akhirnya ---- */
.rte-edit h4{font-size:1.02rem;margin:.8em 0 .3em}
.rte-edit blockquote{margin:.6em 0;padding:2px 0 2px 14px;border-left:3px solid var(--ulik-sky-light,#38BDF8);font-style:italic}
.rte-edit hr{border:0;border-top:1px solid var(--line,#E2E8F0);margin:1em 0}
.rte-edit table{border-collapse:collapse;margin:.6em 0}
.rte-edit th,.rte-edit td{border:1px solid var(--line,#E2E8F0);padding:6px 10px}
.rte-sel-block{min-width:118px;font-weight:700}

/* ==========================================================================
   CMS LAMAN TAHAP 2 (v1.26) — blok editor + tampilan publiknya
   ========================================================================== */
/* ---- form: judul & ringkasan "di kanvas" ---- */
.pg-title-l,.pg-excerpt-l{font-size:.8rem}
.panel input.pg-title-in{font-size:1.6rem;font-weight:800;letter-spacing:-.02em;padding:12px 14px;line-height:1.2}
.panel textarea.pg-excerpt-in{font-size:1rem;line-height:1.55;resize:vertical;min-height:64px}

/* ---- editor: toolbar menempel saat menggulir ----
   `.panel` memakai overflow:hidden yang mematikan position:sticky → dibuka khusus form Laman. */
#pageForm.panel{overflow:visible}
.rte-field .rte{position:relative}
.rte-field .rte-bar{position:sticky;top:0;z-index:6;background:#fff}
/* v1.29: `.rte` ber-overflow:hidden menjadikannya wadah gulir → toolbar tidak pernah
   menempel. `clip` tetap memotong sudut membulat tanpa mematikan sticky (peramban lama
   memakai `visible`). Toolbar berhenti TEPAT di bawah header admin yang juga sticky —
   tingginya diukur app.js ke --app-top-h (cadangan 73px). */
.rte-field .rte{overflow:visible;overflow:clip}
.rte-field .rte-bar{top:var(--app-top-h,73px);border-radius:12px 12px 0 0}
.rte-field .rte-bar.is-stuck{border-radius:0;box-shadow:0 10px 18px -12px rgba(15,23,42,.35)}
.rte-btn-yt svg{color:#FF0033}
.rte-field .rte-edit{max-height:none;min-height:260px}

/* ---- panel sisip (video / tombol) ---- */
.rte-panel{border:1px solid var(--line,#E2E8F0);border-radius:14px;padding:14px;margin:8px 0;background:#fff;
  box-shadow:0 18px 40px -26px rgba(15,23,42,.45)}
.rte-panel[hidden]{display:none}
.rte-panel-h{display:flex;gap:8px;align-items:center;font-size:.95rem;margin-bottom:4px}
.rte-yt-badge{width:26px;height:18px;border-radius:5px;background:#FF0033;display:inline-grid;place-items:center}
.rte-yt-badge::after{content:"";border-style:solid;border-width:4px 0 4px 7px;border-color:transparent transparent transparent #fff;margin-left:2px}
.rte-panel-s{margin:0 0 10px;font-size:.8rem;color:var(--mut,#64748B)}
.rte-panel input,.rte-panel select{width:100%;border:1px solid var(--line,#E2E8F0);border-radius:10px;padding:9px 11px;font:inherit;font-size:.88rem;background:#fff}
.rte-panel .rte-panel-in{border-color:#7DD3FC}
.rte-panel-found{display:flex;gap:10px;align-items:center;margin:10px 0;padding:8px;border-radius:12px;background:#F0FDF4;border:1px solid #BBF7D0}
.rte-panel-found[hidden]{display:none}
.rte-panel-found img{width:96px;aspect-ratio:16/9;object-fit:cover;border-radius:8px;flex:none;background:#0B1324}
.rte-panel-found b{display:block;font-size:.84rem;color:#166534}.rte-panel-found small{font-size:.74rem;color:var(--mut,#64748B)}
.rte-panel-opts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}
.rte-panel-opts label{font-size:.76rem;font-weight:700;color:var(--ink-2,#334155);display:flex;flex-direction:column;gap:5px}
.rte-panel-ft{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.rte-panel-ft small{font-size:.74rem;color:var(--mut,#64748B)}
.rte-panel-ft span{display:flex;gap:6px}
@media(max-width:560px){.rte-panel-opts{grid-template-columns:1fr}}
/* ---- panel tautan ala Blogger (v1.36): Laman & deskripsi produk ---- */
.rte-lk .rte-panel-opts{grid-template-columns:1fr}
.rte-lk [hidden]{display:none!important}
.rte-lk-checks{display:flex;flex-direction:column;gap:8px;margin:4px 0 12px;padding:10px 12px;border-radius:12px;background:#F0F9FF;border:1px solid #BAE6FD}
.rte-lk-checks label{display:flex;align-items:flex-start;gap:9px;font-size:.86rem;font-weight:600;color:var(--ink,#0F172A);cursor:pointer}
.rte-lk-checks input{width:17px;height:17px;margin:2px 0 0;flex:none;accent-color:#0EA5E9}
.rte-lk-checks small{display:block;font-weight:500;font-size:.74rem;color:var(--mut,#64748B)}
.rte-lk-kind{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;font-weight:700;border-radius:999px;padding:3px 10px;margin-left:auto}
.rte-lk-kind.is-int{background:#ECFDF5;color:#047857}.rte-lk-kind.is-ext{background:#EFF6FF;color:#1D4ED8}.rte-lk-kind.is-bad{background:#FEF2F2;color:#B91C1C}
.rte-lk-lock{margin:4px 0 12px;padding:9px 12px;border-radius:12px;background:#F8FAFC;border:1px dashed #CBD5E1;font-size:.8rem;color:var(--mut,#64748B)}
.rte-lk-lock code{font-size:.76rem;background:#fff;border:1px solid #E2E8F0;border-radius:6px;padding:1px 5px;color:#0F172A}
.rte-lk .rte-lk-unlink{color:#B91C1C}
.rte-lk .rte-panel-ft small.is-err{color:#B91C1C}

/* ---- menu "/" ---- */
.rte-slash{position:absolute;z-index:20;width:300px;max-width:calc(100% - 16px);max-height:320px;overflow:auto;background:#fff;
  border:1px solid var(--line,#E2E8F0);border-radius:14px;box-shadow:0 24px 50px -20px rgba(15,23,42,.4);padding:6px}
.rte-slash[hidden]{display:none}
.rte-slash-h{font-size:.66rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#94A3B8;padding:8px 10px 4px}
.rte-slash-none{padding:10px;font-size:.84rem;color:var(--mut,#64748B)}
.rte-slash-it{display:flex;gap:10px;align-items:center;padding:7px 10px;border-radius:10px;cursor:pointer}
.rte-slash-it.on,.rte-slash-it:hover{background:#E0F2FE}
.rte-slash-it .ic{width:30px;height:30px;border-radius:9px;border:1px solid var(--line,#E2E8F0);background:#fff;display:grid;place-items:center;flex:none;font-size:.82rem;font-weight:800;color:#334155}
.rte-slash-it b{display:block;font-size:.85rem;color:#0B1324}.rte-slash-it small{font-size:.73rem;color:var(--mut,#64748B)}

/* ---- baris info & cadangan ---- */
.rte-info{display:flex;gap:6px 16px;flex-wrap:wrap;padding:8px 2px 0;font-size:.76rem;font-weight:600;color:var(--mut,#64748B)}
.rte-info-hint{margin-left:auto;font-weight:500}
.rte-backup{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 8px;padding:10px 12px;
  border-radius:12px;background:#FFFBEB;border:1px solid #FDE68A;color:#92400E;font-size:.84rem}
.rte-backup[hidden]{display:none}
.rte-backup span:last-child{display:flex;gap:6px}

/* ---- blok di dalam editor ---- */
.rte-edit aside{margin:.6em 0;padding:10px 14px;border-radius:12px;background:#F0F9FF;border:1px solid #BAE6FD}
.rte-edit aside p{margin:0}
.rte-edit a.cms-btn{display:inline-block;padding:9px 16px;border-radius:10px;background:var(--ulik-sky-main,#0EA5E9);color:#fff;text-decoration:none;font-weight:700}
.rte-video{position:relative;margin:.8em 0;border:2px solid #7DD3FC;border-radius:14px;padding:6px;background:#fff;user-select:none}
.rte-video.is-medium{max-width:420px}
.rte-video-thumb{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:16/9;background:#0B1324}
.rte-video-thumb img{display:block;width:100%;height:100%;object-fit:cover;margin:0;border-radius:0}
.rte-video-play{position:absolute;left:50%;top:50%;width:60px;height:42px;margin:-21px 0 0 -30px;border-radius:12px;background:#FF0033}
.rte-video-play::after{content:"";position:absolute;left:24px;top:12px;border-style:solid;border-width:9px 0 9px 15px;border-color:transparent transparent transparent #fff}
.rte-video-start{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.75);color:#fff;font-size:.72rem;font-weight:700;border-radius:6px;padding:2px 7px}
.rte-video-bar{position:absolute;top:-15px;right:12px;z-index:2;display:flex;gap:2px;background:#fff;border:1px solid var(--line,#E2E8F0);border-radius:9px;padding:2px;box-shadow:0 8px 18px -12px rgba(15,23,42,.4)}
.rte-video-bar button{border:0;background:none;font:inherit;font-size:.74rem;font-weight:700;padding:4px 8px;border-radius:7px;cursor:pointer;color:#334155}
.rte-video-bar button:hover{background:#E0F2FE;color:#0369A1}
.rte-video figcaption{outline:none;text-align:center;font-size:.86rem;font-style:italic;color:var(--mut,#64748B);padding:7px 6px 2px;user-select:text;min-height:1.4em}
.rte-video figcaption:empty::before{content:attr(data-placeholder);color:#94A3B8}

/* ---- laman publik: tips, tombol, video ---- */
.cp-art aside{display:block;margin:1.3em 0;padding:14px 18px;border-radius:14px;background:var(--cp-mist,#F0F9FF);border:1px solid var(--cp-soft,#E0F2FE);font-size:.98rem}
.cp-art aside > *:last-child{margin-bottom:0}
.cp-art a.cms-btn{display:inline-flex;align-items:center;gap:6px;padding:12px 20px;border-radius:12px;color:#fff;text-decoration:none;font-weight:700;
  font-size:.95rem;background:linear-gradient(135deg,var(--cp-sky-2,#38BDF8),var(--cp-sky,#0EA5E9));box-shadow:0 12px 24px -14px rgba(14,165,233,.9)}
.cp-art a.cms-btn:hover{opacity:.93}
.cp-video{margin:1.5em 0}
.cp-video.is-medium{max-width:480px}
.cp-yt{position:relative;display:block;width:100%;padding:0;border:0;border-radius:18px;overflow:hidden;aspect-ratio:16/9;background:#0B1324;cursor:pointer}
.cp-art .cp-yt img{display:block;width:100%;height:100%;object-fit:cover;margin:0;border-radius:0;transition:transform .3s}
.cp-yt:hover img{transform:scale(1.03)}
.cp-yt-play{position:absolute;left:50%;top:50%;width:68px;height:48px;margin:-24px 0 0 -34px;border-radius:14px;background:#FF0033;box-shadow:0 10px 30px -10px rgba(0,0,0,.6)}
.cp-yt-play::after{content:"";position:absolute;left:27px;top:14px;border-style:solid;border-width:10px 0 10px 17px;border-color:transparent transparent transparent #fff}
.cp-yt-frame{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:18px;background:#000}
.cp-video figcaption{text-align:center;font-size:.88rem;color:var(--cp-mut,#64748B);margin-top:8px;font-style:italic}

/* ==========================================================================
   CMS LAMAN TAHAP 3 (v1.27) — panel SEO, pengaturan, daftar laman, tipe tampilan
   ========================================================================== */
/* ---- tata letak editor: kolom kanan tetap ---- */
.pg-edit-grid{grid-template-columns:minmax(0,1fr) 360px;align-items:start}
@media(max-width:1100px){.pg-edit-grid{grid-template-columns:minmax(0,1fr)}}

/* ---- panel SEO ---- */
.pg-seo-head{display:flex;gap:12px;align-items:center;margin:12px 0 8px}
.pg-seo-head p{margin:0;font-size:.82rem;color:var(--mut,#64748B);line-height:1.45}
.pg-seo-head b.ok{color:#15803D}.pg-seo-head b.warn{color:#B45309}.pg-seo-head b.bad{color:#BE123C}
.pg-ring{--v:0;--c:#16A34A;width:58px;height:58px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:conic-gradient(var(--c) calc(var(--v) * 1%),#F1F5F9 0)}
.pg-ring.is-warn{--c:#D97706}.pg-ring.is-bad{--c:#E11D48}
.pg-ring span{width:46px;height:46px;border-radius:50%;background:#fff;display:grid;place-items:center;font-weight:800;font-size:.95rem}
.pg-checks{list-style:none;margin:0 0 12px;padding:0}
.pg-checks li{display:flex;gap:8px;align-items:flex-start;font-size:.8rem;line-height:1.4;padding:6px 0;border-bottom:1px dashed #F1F5F9;color:var(--ink-2,#334155)}
.pg-checks li:last-child{border-bottom:0}
.pg-checks li b{flex:none;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:.66rem;color:#fff;margin-top:1px}
.pg-checks li.is-ok b{background:#16A34A}.pg-checks li.is-warn b{background:#D97706}.pg-checks li.is-bad b{background:#E11D48}
.pg-sec-h{font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#94A3B8;margin:14px 0 8px}
.pg-serp{border:1px solid var(--line,#E2E8F0);border-radius:12px;padding:12px 14px;background:#fff;margin-bottom:12px;font-family:Arial,sans-serif}
.pg-serp-u{display:flex;gap:8px;align-items:center;font-size:.76rem;color:#4D5156}
.pg-serp-u i{width:22px;height:22px;border-radius:50%;background:#E0F2FE;color:#0EA5E9;display:grid;place-items:center;font-style:normal;font-weight:800;font-size:.66rem;flex:none}
.pg-serp-u span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pg-serp-t{color:#1A0DAB;font-size:1.02rem;line-height:1.3;margin:6px 0 3px}
.pg-serp-d{color:#4D5156;font-size:.8rem;line-height:1.5}
.pg-f{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-size:.8rem;font-weight:700;color:var(--ink-2,#334155)}
.pg-f small{font-weight:500;color:var(--mut,#64748B)}
.pg-f-row{display:flex;justify-content:space-between;gap:8px}
.pg-f-row small{font-weight:700}
.pg-f-row small.is-ok{color:#15803D}.pg-f-row small.is-warn{color:#B45309}.pg-f-row small.is-bad{color:#BE123C}
.pg-bar{display:block;height:5px;border-radius:9px;background:#F1F5F9;overflow:hidden}
.pg-bar i{display:block;height:100%;width:0;border-radius:9px;background:#CBD5E1;transition:width .2s}
.pg-bar i.is-ok{background:#16A34A}.pg-bar i.is-warn{background:#D97706}.pg-bar i.is-bad{background:#E11D48}
.pg-og{border:1px solid var(--line,#E2E8F0);border-radius:12px;overflow:hidden;background:#fff}
.pg-og img{display:block;width:100%;aspect-ratio:1.91/1;object-fit:cover;background:#F0F9FF}
.pg-og-empty{aspect-ratio:1.91/1;display:grid;place-items:center;text-align:center;padding:12px;background:#F0F9FF;color:var(--mut,#64748B);font-size:.8rem}
.pg-og-tx{padding:10px 12px;font-size:.76rem;color:var(--mut,#64748B);display:flex;flex-direction:column;gap:2px}
.pg-og-tx b{color:#0B1324;font-size:.86rem}

/* ---- pengaturan laman ---- */
.pg-tpl{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.pg-tpl-it{position:relative;border:1.5px solid var(--line,#E2E8F0);border-radius:12px;padding:10px 8px;text-align:center;cursor:pointer;
  display:flex;flex-direction:column;gap:3px;align-items:center}
.pg-tpl-it input{position:absolute;opacity:0;pointer-events:none}
.pg-tpl-it.on,.pg-tpl-it:has(input:checked){border-color:#0EA5E9;background:#F0F9FF}
.pg-tpl-it b{font-size:.8rem}.pg-tpl-it small{font-size:.66rem;color:var(--mut,#64748B);line-height:1.3}
.pg-tpl-ic{display:block;width:100%;height:30px;border-radius:6px;margin-bottom:4px}
.pg-tpl-article{background:linear-gradient(#E2E8F0 0 7px,transparent 7px 11px,#F1F5F9 11px)}
.pg-tpl-page{background:linear-gradient(#F1F5F9,#F1F5F9) center/80% 100% no-repeat}
.pg-tpl-faq{background:repeating-linear-gradient(#E2E8F0 0 6px,transparent 6px 10px)}
.pg-tpl-note{margin:8px 0 6px}
.pg-tg{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-top:1px solid #F1F5F9;cursor:pointer;
  font-size:.84rem;font-weight:700;color:var(--ink-2,#334155)}
.pg-tg span small{display:block;font-weight:500;color:var(--mut,#64748B);font-size:.74rem;margin-top:1px}
.pg-tg input{position:absolute;opacity:0;pointer-events:none}
.pg-tg i{position:relative;width:40px;height:23px;border-radius:999px;background:#CBD5E1;flex:none;transition:background .15s}
.pg-tg i::after{content:"";position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.pg-tg input:checked + i{background:#0EA5E9}
.pg-tg input:checked + i::after{left:20px}
.pg-tg input:focus-visible + i{outline:2px solid #0EA5E9;outline-offset:2px}

/* ---- daftar laman ---- */
.pg-list-tools{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.pg-search{flex:1;min-width:200px;display:flex;align-items:center;gap:8px;border:1px solid var(--line,#E2E8F0);border-radius:11px;padding:0 12px;background:#fff}
.pg-search input{border:0;outline:0;box-shadow:none;padding:10px 0;margin:0;font:inherit;flex:1;min-width:0;background:transparent}
.pg-seg{display:flex;background:#F1F5F9;border-radius:11px;padding:3px}
.pg-seg button{border:0;background:none;padding:7px 12px;font:inherit;font-size:.8rem;font-weight:700;border-radius:9px;color:var(--mut,#64748B);cursor:pointer}
.pg-seg button.on{background:#fff;color:#0B1324;box-shadow:0 2px 6px rgba(0,0,0,.06)}
#pagesTable tr[hidden]{display:none!important}
.pg-tpl-chip{font-size:.74rem;font-weight:700;color:#334155;background:#F0F9FF;border:1px solid #E0F2FE;border-radius:8px;padding:3px 8px}
.pg-score{display:inline-flex;align-items:center;gap:6px;font-weight:800;font-size:.86rem}
.pg-score i{width:9px;height:9px;border-radius:50%}
.pg-score.is-ok i{background:#16A34A}.pg-score.is-warn i{background:#D97706}.pg-score.is-bad i{background:#E11D48}
.pg-list-empty{text-align:center;padding:14px}

/* ---- editor: gambar yang sedang diberi teks alt ---- */
.rte-edit img.rte-img-on{outline:3px solid #38BDF8;outline-offset:2px}
.rte-edit img{cursor:pointer}

/* ---- laman publik: FAQ, bagikan, laman lainnya, ajakan ---- */
.cp-faq{display:flex;flex-direction:column;gap:10px;margin:0 0 1.2em}
.cp-faq-intro{margin-bottom:1.2em}
.cp-faq-it{border:1px solid var(--cp-line,#E2E8F0);border-radius:16px;background:#fff;padding:0 20px;transition:background .15s}
.cp-faq-it[open]{background:var(--cp-mist,#F0F9FF);border-color:var(--cp-soft,#E0F2FE)}
.cp-faq-it summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:12px;padding:16px 0;font-weight:700;color:var(--cp-ink,#0B1324);font-size:1.05rem}
.cp-faq-it summary::-webkit-details-marker{display:none}
.cp-faq-it summary::after{content:"+";color:var(--cp-sky,#0EA5E9);font-size:1.4rem;line-height:1;flex:none}
.cp-faq-it[open] summary::after{content:"–"}
.cp-faq-a{padding:0 0 14px}
.cp-faq-a > *:last-child{margin-bottom:0}
.cp-share{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:30px 0 0;padding-top:20px;border-top:1px solid var(--cp-line,#E2E8F0);font-size:.85rem;font-weight:700;color:var(--cp-mut,#64748B)}
.cp-art .cp-share a,.cp-share button{border:1px solid var(--cp-line,#E2E8F0);border-radius:999px;padding:7px 14px;background:#fff;color:var(--cp-ink-2,#334155);
  font:inherit;font-weight:700;text-decoration:none;cursor:pointer}
.cp-art .cp-share a:hover,.cp-share button:hover{border-color:var(--cp-sky-2,#38BDF8);color:var(--cp-sky,#0EA5E9)}
.cp-rel{margin-top:56px}
.cp-rel h2{font-size:1.25rem;margin:0 0 16px;font-weight:800}
.cp-rel-g{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.cp-rel-c{display:flex;flex-direction:column;gap:6px;border:1px solid var(--cp-line,#E2E8F0);border-radius:18px;padding:18px;background:#fff;color:inherit;text-decoration:none;transition:border-color .15s,transform .15s}
.cp-rel-c:hover{border-color:var(--cp-sky-2,#38BDF8);transform:translateY(-2px)}
.cp-rel-c small{color:var(--cp-sky,#0EA5E9);font-weight:800;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}
.cp-rel-c b{font-size:1rem;color:var(--cp-ink,#0B1324)}
.cp-rel-c span{font-size:.85rem;color:var(--cp-mut,#64748B);line-height:1.5}
.cp-cta{margin-top:48px;border-radius:26px;padding:32px 30px;background:linear-gradient(135deg,var(--cp-sky,#0EA5E9),var(--cp-sky-2,#38BDF8));color:#fff;
  display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.cp .cp-cta h2{margin:0 0 4px;font-size:1.35rem;font-weight:800;color:#fff}
.cp-cta p{margin:0;color:#E0F2FE}
.cp-cta a{background:#0B1324;color:#fff;padding:12px 22px;border-radius:999px;font-weight:700;text-decoration:none;white-space:nowrap}
@media(max-width:760px){.cp-rel-g{grid-template-columns:1fr}}
@media(max-width:560px){.cp-cta{padding:26px 20px}.pg-tpl{grid-template-columns:1fr 1fr 1fr}}

/* ==========================================================================
   CMS LAMAN TAHAP 4 (v1.28) — jadwal terbit, riwayat revisi, pengalihan slug
   ========================================================================== */
.pg-sched{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.pg-sched input{flex:1;min-width:180px}
.pg-sched-on{display:flex;gap:10px;align-items:flex-start;background:#F0F9FF;border:1px solid #E0F2FE;border-radius:12px;padding:10px 12px;margin:8px 0;font-size:.84rem}
.pg-sched-on small{display:block;color:var(--mut,#64748B);font-size:.76rem;margin-top:2px}
.pg-sched-chip{margin-top:5px;font-size:.72rem;font-weight:700;color:#0369A1}
.pg-rev-list{list-style:none;margin:0;padding:0}
.pg-rev-list li{border-top:1px solid #F1F5F9}
.pg-rev-list summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 0;font-size:.82rem}
.pg-rev-list summary::-webkit-details-marker{display:none}
.pg-rev-list summary small{display:block;color:var(--mut,#64748B);font-size:.74rem;margin-top:1px}
.pg-rev-list summary i{font-style:normal;color:#94A3B8;transition:transform .15s}
.pg-rev-list details[open] summary i{transform:rotate(90deg)}
.pg-rev-body{padding:0 0 12px;font-size:.8rem;color:var(--ink-2,#334155)}
.pg-rev-t{font-weight:700;margin-bottom:4px}
.pg-rev-body p{margin:0 0 8px;color:var(--mut,#64748B);line-height:1.5}
.pg-redir{list-style:none;margin:0;padding:0;font-size:.8rem}
.pg-redir li{padding:4px 0}.pg-rev-list{max-height:430px;overflow:auto;overscroll-behavior:contain}

/* ==========================================================================
   DESIGN BARU (v1.30) — satu halaman: Tema · Latar · Tombol · Teks · Footer
   ========================================================================== */
.dz{--dz-sky:#0EA5E9;--dz-sky2:#38BDF8;--dz-skyd:#0369A1;--dz-mist:#F0F9FF;--dz-soft:#E0F2FE;--dz-ink:#0B1324;--dz-ink2:#334155;--dz-mut:#64748B;--dz-line:#E2E8F0}
.dz-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:24px;align-items:start}
.dz-main{min-width:0}
.dz-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap;margin:6px 0 4px}
.dz-head h1{margin:0;font-size:1.5rem;letter-spacing:-.02em;color:var(--dz-ink)}
.dz-head p{margin:4px 0 0;color:var(--dz-mut);font-size:.9rem}
.dz-url{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--dz-line);border-radius:999px;padding:6px 6px 6px 14px;font-size:.82rem;font-weight:600;color:var(--dz-ink2);text-decoration:none;max-width:100%;overflow:hidden}
.dz-url span{flex:none;background:var(--dz-mist);color:var(--dz-skyd);font-weight:700;border-radius:999px;padding:6px 12px}
/* menu loncat — menempel di bawah header dashboard */
.dz-jump{position:sticky;top:var(--app-top-h,73px);z-index:20;display:flex;gap:6px;padding:10px 0;margin:8px 0 4px;
  background:linear-gradient(var(--bg,#F4F7FB) 72%,rgba(244,247,251,0));overflow-x:auto;scrollbar-width:none}
.dz-jump::-webkit-scrollbar{display:none}
.dz-jump a{flex:none;display:flex;align-items:center;gap:7px;padding:9px 15px;border-radius:999px;background:#fff;border:1px solid var(--dz-line);
  font-weight:700;font-size:.84rem;color:var(--dz-ink2);text-decoration:none;transition:background .15s,color .15s,border-color .15s}
.dz-jump a i{font-style:normal}
.dz-jump a.on{background:var(--dz-ink);border-color:var(--dz-ink);color:#fff}
/* kartu bagian */
.dz-sec{background:#fff;border:1px solid var(--dz-line);border-radius:24px;padding:22px 22px 24px;margin-bottom:18px;
  scroll-margin-top:calc(var(--app-top-h,73px) + 64px);transition:box-shadow .2s,border-color .2s}
.dz-sec.is-focus{border-color:#BAE6FD;box-shadow:0 0 0 4px rgba(14,165,233,.08)}
.dz-sec-h{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}
.dz-ic{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;font-size:1.1rem;flex:none;background:var(--dz-mist)}
.dz-sec-h h2{margin:0;font-size:1.06rem;letter-spacing:-.01em;color:var(--dz-ink)}
.dz-sec-h p{margin:2px 0 0;color:var(--dz-mut);font-size:.84rem;line-height:1.45}
.dz-state{margin-left:auto;flex:none;font-size:.72rem;font-weight:700;border-radius:999px;padding:5px 10px;background:#F1F5F9;color:var(--dz-mut);white-space:nowrap}
.dz-state.changed{background:#FEF3C7;color:#92400E}
.dz-state button{border:0;background:none;padding:0;color:inherit;text-decoration:underline;cursor:pointer;font:inherit;font-weight:800}
.dz-lbl{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#94A3B8;margin:18px 0 10px}
.dz-sec-h + .dz-lbl,.dz-sub > .dz-lbl:first-child{margin-top:4px}
.dz-note{font-size:.8rem;color:var(--dz-mut);line-height:1.5;margin:8px 0 0}
/* tema */
.dz-themes{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:14px}
.dz-themes:not(.all) .dz-th:nth-child(n+9){display:none}
.dz-th{cursor:pointer;text-align:center;display:block}
.dz-th input{position:absolute;opacity:0;pointer-events:none}
.dz-th-ph{aspect-ratio:9/14;border-radius:18px;padding:12px 10px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:5px;
  outline:1px solid var(--dz-line);transition:transform .15s,outline-color .15s;position:relative;overflow:hidden}
.dz-th:hover .dz-th-ph{transform:translateY(-3px)}
.dz-th.on .dz-th-ph,.dz-th:has(input:checked) .dz-th-ph{outline:3px solid var(--dz-sky);outline-offset:2px}
.dz-th.on .dz-th-ph::after{content:"✓";position:absolute;top:7px;right:7px;width:20px;height:20px;border-radius:50%;background:var(--dz-sky);color:#fff;font-size:.7rem;font-weight:800;display:grid;place-items:center}
.dz-th input:focus-visible + .dz-th-ph{outline:3px solid #0369A1;outline-offset:2px}
.dz-th-av{width:24px;height:24px;border-radius:50%;margin-top:4px;flex:none}
.dz-th-l{width:58%;height:5px;border-radius:9px;opacity:.85;flex:none}
.dz-th-l.s{width:40%;opacity:.5}
.dz-th-b{width:100%;height:13px;border-radius:7px;flex:none}
.dz-th-l.s + .dz-th-b{margin-top:6px}
.dz-th small{display:block;margin-top:8px;font-weight:700;font-size:.8rem;color:var(--dz-ink2)}
.dz-more{margin-top:14px;width:100%;border:1.5px dashed var(--dz-line);background:none;border-radius:14px;padding:11px;font:inherit;font-weight:700;color:var(--dz-skyd);cursor:pointer}
.dz-more:hover{border-color:#BAE6FD;background:var(--dz-mist)}
/* pilihan visual */
.dz-opts{display:grid;gap:10px}
.dz-o4{grid-template-columns:repeat(4,1fr)}
.dz-opt{border:1.5px solid var(--dz-line);background:#fff;border-radius:16px;padding:10px 10px 12px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px;
  font:inherit;font-size:.78rem;font-weight:700;color:var(--dz-ink2);transition:border-color .15s,background .15s}
.dz-opt:hover{border-color:#BAE6FD}
.dz-opt.on{border-color:var(--dz-sky);background:var(--dz-mist);color:var(--dz-skyd);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.dz-sw{width:100%;height:54px;border-radius:11px;background-size:cover;box-shadow:inset 0 0 0 1px rgba(15,23,42,.06)}
/* warna */
.dz-colors{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.dz-cw{width:32px;height:32px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--dz-line);cursor:pointer;padding:0;transition:transform .12s;flex:none}
.dz-cw:hover{transform:scale(1.1)}
.dz-cw.on{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--dz-sky)}
.dz-cw-t,.dz-cw-c{width:auto;padding:0 12px;border-radius:999px;display:inline-flex;align-items:center;gap:7px;background:#fff;font:inherit;font-size:.76rem;font-weight:700;color:var(--dz-ink2)}
.dz-cw-c{position:relative}
.dz-cw-c input{width:20px;height:20px;border:0;padding:0;background:none;cursor:pointer;flex:none}
.dz-two{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:6px}
.dz-three{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
.dz-cpick{border:1.5px solid var(--dz-line);border-radius:16px;padding:12px 14px}
.dz-cpick > b{display:block;font-size:.84rem;margin-bottom:10px;color:var(--dz-ink)}
/* latar: preset & gambar */
.dz-presets{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:9px}
.dz-pre{border:0;background:none;padding:0;cursor:pointer;font:inherit;text-align:center}
.dz-pre span{display:block;aspect-ratio:1/1;border-radius:12px;outline:1px solid var(--dz-line);transition:transform .12s}
.dz-pre:hover span{transform:translateY(-2px)}
.dz-pre.on span{outline:3px solid var(--dz-sky);outline-offset:2px}
.dz-pre small{display:block;font-size:.66rem;font-weight:700;color:var(--dz-mut);margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dz-walls{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:9px}
.dz-span{grid-column:1/-1;margin:0}
.dz-wl{position:relative;aspect-ratio:3/4;border-radius:12px;border:0;outline:1px solid var(--dz-line);cursor:pointer;padding:0;background:#F8FAFC center/cover no-repeat}
.dz-wl.on{outline:3px solid var(--dz-sky);outline-offset:2px}
.dz-wl em{position:absolute;left:6px;bottom:6px;font-style:normal;font-size:.62rem;font-weight:800;background:rgba(11,19,36,.75);color:#fff;border-radius:6px;padding:2px 6px}
.dz-up{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;outline:1.5px dashed #CBD5E1;color:var(--dz-mut);font-size:.72rem;font-weight:700}
.dz-up b{font-size:1.2rem;line-height:1}
.dz-up input{position:absolute;width:1px;height:1px;opacity:0}
.dz-up:focus-within{outline-color:var(--dz-sky)}
.dz-adv{margin-top:14px;border:1.5px solid var(--dz-line);border-radius:14px;padding:10px 14px}
.dz-adv summary{cursor:pointer;font-weight:700;font-size:.86rem;color:var(--dz-ink2)}
.dz-adv[open] summary{margin-bottom:4px}
.dz-seg{display:inline-flex;flex-wrap:wrap;background:#F1F5F9;border-radius:12px;padding:4px;gap:2px}
.dz-seg label{cursor:pointer}
.dz-seg input{position:absolute;opacity:0;pointer-events:none}
.dz-seg span{display:block;border-radius:9px;padding:8px 14px;font-weight:700;font-size:.8rem;color:var(--dz-mut)}
.dz-seg input:checked + span{background:#fff;color:var(--dz-ink);box-shadow:0 2px 8px rgba(15,23,42,.08)}
.dz-seg input:focus-visible + span{outline:2px solid var(--dz-sky)}
.dz-range{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;font-size:.82rem;font-weight:700;color:var(--dz-ink2);margin-top:10px}
.dz-range output{color:var(--dz-skyd)}
.dz-range input{width:100%;accent-color:var(--dz-sky)}
.dz-check{display:flex;gap:8px;align-items:center;font-size:.82rem;margin-top:12px;color:var(--dz-ink2)}
.dz-legacy i{display:inline-block;width:12px;height:12px;border-radius:50%;vertical-align:-2px;margin:0 4px;box-shadow:0 0 0 1px var(--dz-line)}
.dz-link{border:0;background:none;padding:0;color:#BE123C;font:inherit;font-weight:700;text-decoration:underline;cursor:pointer}
/* isian biasa */
.dz-field{display:flex;flex-direction:column;gap:6px;font-size:.82rem;font-weight:700;color:var(--dz-ink2);margin-bottom:12px}
.dz-field select,.dz-field input,.dz-field textarea{font:inherit;font-weight:500}
.dz-three .dz-field{margin-bottom:0}
.dz-lock{display:flex;gap:10px;align-items:flex-start;background:#F8FAFC;border-radius:14px;padding:12px 14px;margin-top:4px;font-size:.8rem;color:var(--dz-mut);line-height:1.45}
.dz-lock b{color:var(--dz-ink2)}
/* pratinjau */
.dz-pv{position:sticky;top:calc(var(--app-top-h,73px) + 14px)}
.dz-pv-card{background:#fff;border:1px solid var(--dz-line);border-radius:26px;padding:16px 16px 14px}
.dz-pv-h{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.dz-pv-h b{font-size:.92rem;color:var(--dz-ink)}
.dz-live{margin-left:auto;font-size:.72rem;font-weight:700;color:#15803D;background:#DCFCE7;border-radius:999px;padding:4px 9px}
.dz-pv-x{display:none;border:0;background:#F1F5F9;border-radius:999px;padding:6px 12px;font:inherit;font-weight:700;font-size:.78rem;cursor:pointer}
.dz-pv .phone-screen{max-height:calc(100vh - var(--app-top-h,73px) - 200px);min-height:420px}
.dz-pv-tip{margin:10px auto 0;max-width:300px;font-size:.74rem;color:var(--dz-mut);text-align:center;line-height:1.45}
/* bar simpan & notifikasi */
.dz-save{position:fixed;left:50%;bottom:20px;z-index:60;display:flex;align-items:center;gap:12px;background:var(--dz-ink);color:#fff;border-radius:18px;
  padding:10px 10px 10px 18px;box-shadow:0 20px 40px -18px rgba(2,6,23,.6);font-size:.86rem;transform:translate(-50%,calc(100% + 40px));transition:transform .3s}
.dz-save.show{transform:translate(-50%,0)}
.dz-dot{width:8px;height:8px;border-radius:50%;background:#FACC15;flex:none}
.dz-save button{border:0;border-radius:12px;padding:10px 16px;font:inherit;font-weight:700;cursor:pointer}
.dz-ghost{background:#1E293B;color:#E2E8F0}
.dz-pri{background:linear-gradient(135deg,var(--dz-sky),var(--dz-sky2));color:#fff}
.dz-pri:disabled{opacity:.7;cursor:wait}
.dz-noscript{margin:0 0 20px}
.dz-toast{position:fixed;left:50%;top:calc(var(--app-top-h,73px) + 14px);z-index:70;transform:translate(-50%,-20px);opacity:0;pointer-events:none;
  background:#0B1324;color:#fff;border-radius:14px;padding:11px 16px;font-size:.86rem;font-weight:600;box-shadow:0 14px 30px -14px rgba(2,6,23,.6);transition:opacity .2s,transform .2s;max-width:calc(100vw - 32px)}
.dz-toast.show{opacity:1;transform:translate(-50%,0)}
.dz-toast.err{background:#BE123C}
.dz-fab{display:none}
@media(max-width:1280px){.dz-grid{grid-template-columns:minmax(0,1fr) 310px}.dz-pv .phone{width:280px}}
@media(max-width:1080px){
  .dz-grid{grid-template-columns:minmax(0,1fr)}
  .dz-pv{display:none;position:fixed;inset:0;z-index:80;background:rgba(11,19,36,.55);backdrop-filter:blur(4px);padding:24px 16px;top:0}
  .dz-pv.open{display:grid;place-items:center}
  .dz-pv-card{width:100%;max-width:350px}
  .dz-pv-x{display:block}
  .dz-pv .phone-screen{max-height:calc(100vh - 210px);min-height:0}
  .dz-fab{display:flex;position:fixed;right:16px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:55;align-items:center;gap:8px;border:0;border-radius:999px;
    padding:13px 18px;background:var(--dz-ink);color:#fff;font:inherit;font-weight:700;box-shadow:0 14px 30px -14px rgba(2,6,23,.7);cursor:pointer}
  .dz-save{bottom:calc(84px + env(safe-area-inset-bottom));transform:translate(-50%,calc(100% + 130px))}
  .dz-save.show{transform:translate(-50%,0)}
  body.dz-lock-scroll{overflow:hidden}
}
/* creator studio punya navigasi bawah di HP (<768px) — naikkan tombol & bar */
@media(max-width:767px){body:has(.ulik-mobile-nav) .dz-fab{bottom:calc(84px + env(safe-area-inset-bottom))}body:has(.ulik-mobile-nav) .dz-save{bottom:calc(146px + env(safe-area-inset-bottom))}}
@media(max-width:560px){
  .dz-sec{padding:18px 16px 20px;border-radius:20px}
  .dz-themes{grid-template-columns:repeat(3,1fr);gap:10px}
  .dz-themes:not(.all) .dz-th:nth-child(n+7){display:none}
  .dz-o4{grid-template-columns:repeat(2,1fr)}
  .dz-two,.dz-three{grid-template-columns:1fr}
  .dz-state{display:none}
  .dz-save{left:16px;right:16px;transform:translateY(calc(100% + 160px))}
  .dz-save.show{transform:translateY(0)}
  .dz-save-t{flex:1;font-size:.8rem}
}
/* ---- Design baru tahap 3: tombol & teks visual ---- */
.dz-bopts{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}
.dz-bopt{border:1.5px solid var(--dz-line);background:#fff;border-radius:16px;padding:7px 7px 9px;cursor:pointer;display:flex;flex-direction:column;align-items:stretch;gap:8px;
  font:inherit;transition:border-color .15s,box-shadow .15s}
.dz-bopt:hover{border-color:#BAE6FD}
.dz-bopt.on{border-color:var(--dz-sky);background:var(--dz-mist);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.dz-bopt small{font-weight:700;font-size:.76rem;color:var(--dz-ink2);text-align:center}
.dz-bopt.on small{color:var(--dz-skyd)}
.dz-bstage{display:block;border-radius:11px;overflow:hidden;min-height:58px}
/* contoh = .creator-shell asli; dipaksa kecil & tidak bisa diklik */
.dz-bs{display:flex!important;align-items:center;min-height:58px;padding:10px 12px!important;background-attachment:scroll!important;pointer-events:none;
  position:relative;isolation:isolate;overflow:hidden;font-size:13px}
.dz-bs .btnlink{flex:1;min-height:0;padding:8px 10px!important;justify-content:center;font-weight:700;font-size:.78rem;gap:0;margin:0}
.dz-cpick > small{display:block;color:var(--dz-mut);font-size:.74rem;margin:-6px 0 10px}
.dz-fonts{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:10px}
.dz-font{border:1.5px solid var(--dz-line);background:#fff;border-radius:16px;padding:12px 8px 10px;cursor:pointer;text-align:center;font:inherit;transition:border-color .15s,box-shadow .15s}
.dz-font:hover{border-color:#BAE6FD}
.dz-font.on{border-color:var(--dz-sky);background:var(--dz-mist);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.dz-font big{display:block;font-size:1.9rem;line-height:1.15;color:var(--dz-ink)}
.dz-font small{display:block;margin-top:5px;font-size:.76rem;font-weight:700;color:var(--dz-ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dz-font em{display:block;font-style:normal;font-size:.68rem;color:var(--dz-mut)}
.dz-seg-b button{border:0;background:none;border-radius:9px;padding:8px 16px;font:inherit;font-weight:700;font-size:.82rem;color:var(--dz-mut);cursor:pointer}
.dz-seg-b button.on{background:#fff;color:var(--dz-ink);box-shadow:0 2px 8px rgba(15,23,42,.08)}
/* sorotan di pratinjau */
@keyframes dzFlash{0%{outline-color:rgba(250,204,21,0)}25%{outline-color:#FACC15}100%{outline-color:rgba(250,204,21,0)}}
#dzPhone .dz-flash{outline:3px solid rgba(250,204,21,0);outline-offset:2px;animation:dzFlash 1.1s ease}
#dzPhone .creator-shell.dz-flash{outline-offset:-3px}
@media(max-width:560px){.dz-bopts{grid-template-columns:repeat(2,1fr)}.dz-fonts{grid-template-columns:repeat(3,1fr)}.dz-font big{font-size:1.6rem}}
/* ---- Design baru tahap 4: footer ---- */
.dz-lbl-n{text-transform:none;letter-spacing:0;font-weight:600}
.dz-links{display:flex;flex-direction:column;gap:8px}
.dz-lrow{display:grid;grid-template-columns:1fr 1.5fr 36px;gap:8px;align-items:center}
.dz-lrow input{min-width:0;font:inherit;font-size:.86rem}
.dz-x{border:0;background:#FFF1F2;color:#E11D48;border-radius:10px;height:36px;cursor:pointer;font:inherit;font-weight:700}
.dz-x:hover{background:#FFE4E6}
.dz-add{margin-top:10px;border:1.5px dashed var(--dz-line);background:none;border-radius:12px;padding:9px 14px;font:inherit;font-weight:700;color:var(--dz-skyd);cursor:pointer;font-size:.84rem}
.dz-add:hover{border-color:#BAE6FD;background:var(--dz-mist)}
.dz-lock{margin-top:16px}
@media(max-width:560px){.dz-lrow{grid-template-columns:1fr 36px}.dz-lrow input[name="foot_url[]"]{grid-column:1;grid-row:2}.dz-lrow .dz-x{grid-row:1 / span 2;height:100%}}
/* ==========================================================================
   HALAMAN PRODUK PUBLIK (v1.31) — mengikuti pratinjau mockup form produk
   ========================================================================== */
.pp,.pp-bar{--pp-sky:#0EA5E9;--pp-skyd:#0369A1;--pp-ind:#6366F1;--pp-ink:#0B1324;--pp-ink2:#334155;--pp-mut:#64748B;--pp-line:#E2E8F0;--pp-mist:#F0F9FF}
.pp{max-width:1080px;margin:0 auto;padding:18px 20px 40px;color:var(--pp-ink)}
.pp-top{margin-bottom:14px}
.pp-back{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0 16px;border-radius:999px;background:#fff;border:1px solid var(--pp-line);
  font-weight:700;font-size:.86rem;color:var(--pp-ink2);text-decoration:none}
.pp-back:hover{border-color:#BAE6FD;color:var(--pp-skyd)}
.pp-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:28px;align-items:start}
.pp-media{min-width:0;display:flex;flex-direction:column;gap:12px}
.pp-video .cp-video{margin:0}
.pp-video .cp-yt{border-radius:22px}
.pp-video .cp-yt img{display:block;width:100%;height:100%;object-fit:cover;margin:0}
.pp-video figcaption:empty{display:none}
.pp-gallery{margin:0}
.pp-gallery .pd-viewport{border-radius:22px;box-shadow:0 18px 40px -28px rgba(15,23,42,.45)}
.pp-gallery .pd-dot.active{background:var(--pp-sky)}
.pp-noimg{aspect-ratio:1/1;border-radius:22px;background:linear-gradient(135deg,#E0F2FE,#EDE9FE);display:grid;place-items:center;color:#94A3B8}
.pp-info{position:sticky;top:20px;background:#fff;border:1px solid var(--pp-line);border-radius:24px;padding:24px;box-shadow:0 18px 40px -30px rgba(15,23,42,.35)}
.pp-name{margin:0;font-size:1.55rem;line-height:1.25;font-weight:800;letter-spacing:-.02em;color:var(--pp-ink)}
body.pg-product .pp-name{font-family:inherit}
.pp-seller{margin-top:6px;font-size:.84rem;color:var(--pp-mut)}
.pp-seller b{color:var(--pp-ink2)}
.pp-price{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-top:16px}
.pp-price b{font-size:1.75rem;font-weight:900;color:var(--pp-skyd);letter-spacing:-.01em}
.pp-price s{font-size:1rem;color:var(--pp-mut)}
.pp-price em{font-style:normal;font-size:.74rem;font-weight:800;color:#BE123C;background:#FFE4E6;border-radius:8px;padding:3px 8px}
.pp-tax{font-size:.74rem;color:var(--pp-mut);margin-top:3px}
.pp-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.pp-chip{font-size:.76rem;font-weight:600;color:var(--pp-ink2);background:#fff;border:1px solid var(--pp-line);border-radius:999px;padding:5px 11px}
.pp-chip.is-hot{background:#FFF7ED;border-color:#FED7AA;color:#9A3412;font-weight:700}
.pp-chip.is-ok{background:#F0FDF4;border-color:#BBF7D0;color:#166534;font-weight:700}
.pp-chip.is-out{background:#FEF2F2;border-color:#FECACA;color:#B91C1C;font-weight:700}
.pp-sum{margin:14px 0 0;font-size:.95rem;line-height:1.6;color:var(--pp-ink2)}
.pp-cta{margin-top:20px}
.pp-buy{display:flex;align-items:center;justify-content:center;width:100%;min-height:52px;border:0;border-radius:16px;padding:0 20px;font-weight:800;font-size:1rem;
  color:#fff;text-decoration:none;background:linear-gradient(135deg,var(--pp-sky),var(--pp-ind));box-shadow:0 14px 26px -14px var(--pp-ind);transition:transform .15s,box-shadow .15s}
.pp-buy:hover{transform:translateY(-1px);box-shadow:0 18px 30px -14px var(--pp-ind);color:#fff}
.pp-buy.is-out{background:#94A3B8;box-shadow:none;cursor:not-allowed}
.pp-buy.is-out:hover{transform:none}
.pp-info .pd-reco{margin-top:14px}
.pp-paynote{margin:14px 0 0;font-size:.76rem;color:var(--pp-mut);text-align:center;line-height:1.5}
.pp-desc{margin-top:28px;background:#fff;border:1px solid var(--pp-line);border-radius:24px;padding:26px clamp(18px,4vw,34px)}
.pp-desc-h{margin:0 0 12px;font-size:1.15rem;font-weight:800}
.pp-desc-body{font-size:.98rem;line-height:1.75;color:var(--pp-ink2);overflow-wrap:anywhere}
.pp-desc-body > :first-child{margin-top:0}
.pp-desc-body > :last-child{margin-bottom:0}
.pp-desc-body p{margin:0 0 1em}
.pp-desc-body h2{font-size:1.15rem;margin:1.4em 0 .5em;color:var(--pp-ink)}
.pp-desc-body h3{font-size:1.02rem;margin:1.2em 0 .4em;color:var(--pp-ink)}
.pp-desc-body ul,.pp-desc-body ol{padding-left:1.3em;margin:0 0 1em}
.pp-desc-body a{color:var(--pp-skyd)}
.pp-desc-body img{max-width:100%;height:auto;border-radius:14px}
.pp-report{text-align:right;margin-top:14px;font-size:.78rem}
.pp-report a{color:var(--pp-mut)}
.pp-bar{display:none}
@media(max-width:860px){
  .pp{padding:14px 16px calc(110px + env(safe-area-inset-bottom))}
  .pp-grid{grid-template-columns:minmax(0,1fr);gap:14px}
  .pp-info{position:static;padding:4px 2px 0;background:none;border:0;box-shadow:none}
  .pp-name{font-size:1.3rem}
  .pp-price b{font-size:1.5rem}
  .pp-cta{display:none}
  .pp-desc{margin-top:20px;padding:20px 18px;border-radius:20px}
  .pp-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;align-items:center;gap:12px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-top:1px solid var(--pp-line);box-shadow:0 -10px 24px -18px rgba(15,23,42,.45)}
  .pp-bar-price{display:flex;flex-direction:column;line-height:1.15;flex:none}
  .pp-bar-price b{font-size:1.05rem;font-weight:900;color:var(--pp-skyd)}
  .pp-bar-price s{font-size:.74rem;color:var(--pp-mut)}
  .pp-bar .pp-buy{flex:1;min-height:48px;font-size:.95rem}
}
/* v1.31: harga coret di kartu produk + deskripsi berformat di katalog/admin */
.pmeta .price-old{font-size:.78em;color:var(--c-sub,#64748B);margin-left:6px;font-weight:600}
.afd-desc p{margin:0 0 .8em}.afd-desc > :last-child{margin-bottom:0}
.afd-desc{white-space:normal}
.afd-desc ul,.afd-desc ol,.adm-pdesc ul,.adm-pdesc ol{padding-left:1.2em}
.adm-pdesc p{margin:0 0 .7em}/* skin-ed situs memberi h1–h3 huruf serif & ukuran besar — halaman produk memakai gaya mockup */
.pp h1.pp-name{font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-size:1.55rem;line-height:1.25;font-weight:800;letter-spacing:-.02em;margin:0}
.pp h2.pp-desc-h,.pp .pp-desc-body h2,.pp .pp-desc-body h3{font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-weight:800;letter-spacing:-.01em;line-height:1.3}
.pp h2.pp-desc-h{font-size:1.15rem;margin:0 0 12px}
@media(max-width:860px){.pp h1.pp-name{font-size:1.3rem}}
/* ==========================================================================
   FORM PRODUK BARU (v1.31) — mengikuti mockup .scratch/product-mock.html
   ========================================================================== */
.pf2{--k-sky:#0EA5E9;--k-sky2:#38BDF8;--k-skyd:#0369A1;--k-mist:#F0F9FF;--k-soft:#E0F2FE;--k-ink:#0B1324;--k-ink2:#334155;--k-mut:#64748B;--k-line:#E2E8F0;--k-red:#E11D48;
  max-width:860px;margin:0 auto;padding-bottom:110px;color:var(--k-ink)}
.pf2-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:4px 0}
.pf2-back{font-size:.82rem;font-weight:700;color:var(--k-mut);text-decoration:none}
.pf2-back:hover{color:var(--k-skyd)}
.pf2-head h1{margin:4px 0 0;font-size:1.5rem;letter-spacing:-.02em;color:var(--k-ink);overflow-wrap:anywhere}
.pf2-status{display:inline-flex;align-items:center;gap:7px;font-size:.78rem;font-weight:700;border-radius:999px;padding:6px 12px;background:#F1F5F9;color:var(--k-ink2)}
.pf2-status i{width:8px;height:8px;border-radius:50%;background:#94A3B8}
.pf2-status.live{background:#DCFCE7;color:#166534}.pf2-status.live i{background:#16A34A}
.pf2-jump{position:sticky;top:var(--app-top-h,73px);z-index:20;display:flex;gap:6px;padding:10px 0;margin:10px 0 4px;
  background:linear-gradient(var(--bg,#F4F7FB) 72%,rgba(244,247,251,0));overflow-x:auto;scrollbar-width:none}
.pf2-jump::-webkit-scrollbar{display:none}
.pf2-jump a{flex:none;display:flex;gap:7px;align-items:center;padding:9px 15px;border-radius:999px;background:#fff;border:1px solid var(--k-line);font-weight:700;font-size:.84rem;color:var(--k-ink2);text-decoration:none}
.pf2-jump a i{font-style:normal}
.pf2-jump a.on{background:var(--k-ink);border-color:var(--k-ink);color:#fff}
.pf2-sec{background:#fff;border:1px solid var(--k-line);border-radius:24px;padding:22px;margin-bottom:18px;scroll-margin-top:calc(var(--app-top-h,73px) + 64px);transition:border-color .2s,box-shadow .2s}
.pf2-sec.focus{border-color:#BAE6FD;box-shadow:0 0 0 4px rgba(14,165,233,.08)}
.pf2-sec-h{display:flex;gap:12px;align-items:flex-start;margin-bottom:16px}
.pf2-ic{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;font-size:1.1rem;flex:none;background:var(--k-mist)}
.pf2-sec-h h2{margin:0;font-size:1.06rem;color:var(--k-ink)}
.pf2-sec-h p{margin:2px 0 0;color:var(--k-mut);font-size:.84rem;line-height:1.45}
.pf2-lbl{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.84rem;font-weight:700;color:var(--k-ink2);margin:16px 0 7px}
.pf2-sec-h + .pf2-lbl{margin-top:0}
.pf2-lbl small{font-weight:600;color:var(--k-mut);font-size:.74rem}
.pf2 .pf2-in{width:100%;border:1.5px solid var(--k-line);border-radius:12px;padding:11px 13px;outline:0;background:#fff;font:inherit;font-size:.92rem;color:var(--k-ink);margin:0;box-shadow:none;transition:border-color .15s,box-shadow .15s}
.pf2 .pf2-in:focus{border-color:var(--k-sky);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.pf2 textarea.pf2-in{resize:vertical;min-height:70px;line-height:1.5}
.pf2 textarea.pf2-desc{min-height:200px}
.pf2-hint{font-size:.76rem;color:var(--k-mut);margin:6px 0 0;line-height:1.45}
.pf2-hint.pf2-bad,.pf2-bad{color:#BE123C}
.pf2-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.pf2-money{display:flex;align-items:center;border:1.5px solid var(--k-line);border-radius:12px;background:#fff;overflow:hidden;transition:border-color .15s,box-shadow .15s}
.pf2-money:focus-within{border-color:var(--k-sky);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.pf2-money span{padding:0 4px 0 13px;font-weight:700;color:var(--k-mut)}
.pf2 .pf2-money input{border:0;outline:0;padding:11px 13px 11px 4px;width:100%;background:none;font:inherit;font-weight:700;color:var(--k-ink);margin:0;box-shadow:none}
.pf2-save{display:inline-block;margin-top:7px;font-size:.74rem;font-weight:800;color:#BE123C;background:#FFE4E6;border-radius:7px;padding:3px 8px}
.pf2 .pf2-qty{max-width:200px}
/* galeri */
.pf2-gal{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.pf2-ph{position:relative;aspect-ratio:1/1;border-radius:16px;background:#F1F5F9 center/cover no-repeat;outline:1px solid var(--k-line);cursor:grab;overflow:hidden}
.pf2-ph.is-drag{opacity:.5}
.pf2-ph.is-del{display:none}
.pf2-tag{display:none;position:absolute;left:8px;top:8px;font-size:.64rem;font-weight:800;background:var(--k-ink);color:#fff;border-radius:7px;padding:3px 7px}
.pf2-ph.is-cover .pf2-tag{display:block}
.pf2-mk{position:absolute;left:8px;bottom:8px;border:0;border-radius:8px;background:rgba(255,255,255,.92);font:inherit;font-size:.66rem;font-weight:700;padding:4px 8px;cursor:pointer;color:var(--k-ink)}
.pf2-ph.is-cover .pf2-mk{display:none}
.pf2-x{position:absolute;right:7px;top:7px;width:26px;height:26px;border-radius:50%;border:0;background:rgba(255,255,255,.92);color:var(--k-red);font-weight:800;cursor:pointer;
  box-shadow:0 2px 6px rgba(0,0,0,.15);display:grid;place-items:center;font-size:.8rem;padding:0;margin:0}
.pf2-x input{position:absolute;opacity:0;width:1px;height:1px}
.pf2-add label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;outline:2px dashed #BAE6FD;outline-offset:-2px;border-radius:16px;
  background:var(--k-mist);color:var(--k-skyd);cursor:pointer;text-align:center;font-size:.76rem;font-weight:700;margin:0}
.pf2-add{cursor:pointer;outline:0}
.pf2-add b{font-size:1.5rem;line-height:1}
.pf2-add small{font-weight:500;color:var(--k-mut)}
.pf2-add input{position:absolute;opacity:0;width:1px;height:1px}
.pf2-add:focus-within label{outline-color:var(--k-sky)}
/* toggle */
.pf2-toggle{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0 0;margin-top:16px;border-top:1px solid #F1F5F9}
.pf2-toggle.is-first{border-top:0;padding-top:0;margin-top:0}
.pf2-toggle b{display:block;font-size:.88rem;color:var(--k-ink)}
.pf2-toggle small{display:block;color:var(--k-mut);font-size:.76rem;margin-top:2px;line-height:1.4}
.pf2-tg{position:relative;flex:none;width:44px;height:25px;margin:0}
.pf2-tg input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1}
.pf2-tg i{position:absolute;inset:0;border-radius:999px;background:#CBD5E1;transition:background .15s}
.pf2-tg i::after{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.pf2-tg input:checked + i{background:var(--k-sky)}
.pf2-tg input:checked + i::after{left:22px}
.pf2-tg input:focus-visible + i{outline:2px solid var(--k-skyd);outline-offset:2px}
.pf2-reveal{margin-top:12px}
.pf2-yt{display:flex;gap:10px;align-items:center;margin-top:10px;font-size:.8rem;color:#166534;background:#F0FDF4;border-radius:12px;padding:8px 10px}
.pf2-yt img{width:76px;border-radius:8px}
/* kartu pilihan */
.pf2-cards{display:grid;gap:10px}
.pf2-c3{grid-template-columns:repeat(3,1fr)}
.pf2-card{position:relative;border:1.5px solid var(--k-line);border-radius:16px;padding:14px;cursor:pointer;background:#fff;display:flex;flex-direction:column;gap:6px;margin:0;font-weight:400;transition:border-color .15s,background .15s}
.pf2-card:hover{border-color:#BAE6FD}
.pf2-card input{position:absolute;opacity:0;pointer-events:none}
.pf2-card.on,.pf2-card:has(input:checked){border-color:var(--k-sky);background:var(--k-mist);box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.pf2-card.on::after{content:"✓";position:absolute;right:10px;top:10px;width:20px;height:20px;border-radius:50%;background:var(--k-sky);color:#fff;font-size:.7rem;font-weight:800;display:grid;place-items:center}
.pf2-card:has(input:focus-visible){outline:2px solid var(--k-skyd);outline-offset:2px}
.pf2-card b{font-size:.88rem;color:var(--k-ink)}
.pf2-card small{color:var(--k-mut);font-size:.75rem;line-height:1.4}
.pf2-card.off{opacity:.55;cursor:not-allowed;background:#F8FAFC}
.pf2-card.off:hover{border-color:var(--k-line)}
.pf2-ci{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-size:1rem}
.pf2-ci.f{background:#E0F2FE}.pf2-ci.l{background:#EDE9FE}.pf2-ci.t{background:#DCFCE7}
.pf2-pane{margin-top:14px}
.pf2-files{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:8px}
.pf2-file{display:flex;align-items:center;gap:12px;border:1.5px solid var(--k-line);border-radius:14px;padding:12px 14px}
.pf2-file.is-new{border-style:dashed;border-color:#BAE6FD}
.pf2-file > div{flex:1;min-width:0}
.pf2-file b{display:block;font-size:.86rem;overflow-wrap:anywhere}
.pf2-file small{color:var(--k-mut);font-size:.74rem}
.pf2-fi{width:42px;height:42px;border-radius:12px;background:#E0F2FE;display:grid;place-items:center;font-size:1.1rem;flex:none}
.pf2-btn-s{display:inline-flex;align-items:center;gap:5px;border:1.5px solid var(--k-line);background:#fff;border-radius:10px;padding:7px 12px;font:inherit;font-size:.78rem;font-weight:700;cursor:pointer;margin:0;color:var(--k-ink2)}
.pf2-btn-s:hover{border-color:#BAE6FD;background:var(--k-mist)}
.pf2-btn-s.red{color:var(--k-red)}
.pf2-btn-s input{margin:0}
.pf2-drop{display:flex;flex-direction:column;align-items:center;gap:4px;border:2px dashed #BAE6FD;background:var(--k-mist);border-radius:16px;padding:20px;text-align:center;color:var(--k-skyd);font-weight:700;cursor:pointer;font-size:.86rem;margin:0}
.pf2-drop.over{border-color:var(--k-sky);background:var(--k-soft)}
.pf2-drop small{color:var(--k-mut);font-weight:500}
.pf2-drop input{position:absolute;opacity:0;width:1px;height:1px}
.pf2-note{display:flex;gap:8px;align-items:flex-start;font-size:.78rem;color:var(--k-ink2);background:#FFFBEB;border-radius:12px;padding:10px 12px;margin-top:10px;line-height:1.45}
.pf2-note.is-info{background:var(--k-mist);margin:0 0 12px}
.pf2-more{border:1.5px solid var(--k-line);border-radius:16px;padding:0 16px}
.pf2-more summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;padding:14px 0;font-weight:700;font-size:.9rem}
.pf2-more summary::-webkit-details-marker{display:none}
.pf2-more summary::after{content:"›";color:var(--k-mut);transition:transform .15s}
.pf2-more[open] summary::after{transform:rotate(90deg)}
.pf2-more-b{padding-bottom:14px}
/* bar simpan */
.pf2-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:60;display:flex;align-items:center;gap:10px;background:var(--k-ink);color:#fff;
  border-radius:18px;padding:9px 9px 9px 16px;box-shadow:0 20px 40px -18px rgba(2,6,23,.6);font-size:.84rem;max-width:calc(100vw - 32px)}
.pf2-st{display:flex;align-items:center;gap:7px;font-weight:600;white-space:nowrap}
.pf2-st i{width:8px;height:8px;border-radius:50%;background:#94A3B8;flex:none}
.pf2-st.dirty i{background:#FACC15}
.pf2-pending{font-size:.78rem;color:#FDE68A;white-space:nowrap}
.pf2-b{border:0;border-radius:12px;padding:10px 15px;font:inherit;font-weight:700;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;margin:0}
.pf2-b.g{background:#1E293B;color:#E2E8F0}
.pf2-b.g:hover{background:#273449;color:#fff}
.pf2-b.p{background:linear-gradient(135deg,var(--k-sky),var(--k-sky2));color:#fff}
.pf2-b:disabled{opacity:.6;cursor:wait}
.pf2-dots{width:40px;justify-content:center;padding:10px 0}
.pf2-menu-w{position:relative}
.pf2-menu{position:absolute;right:0;bottom:56px;background:#fff;color:var(--k-ink);border-radius:14px;box-shadow:0 18px 40px -12px rgba(2,6,23,.35);padding:6px;min-width:220px}
.pf2-menu button,.pf2-menu a{display:block;width:100%;text-align:left;background:none;border:0;border-radius:9px;padding:9px 12px;font:inherit;font-weight:600;font-size:.84rem;color:var(--k-ink);cursor:pointer;text-decoration:none}
.pf2-menu button:hover,.pf2-menu a:hover{background:var(--k-mist)}
.pf2-menu .red{color:var(--k-red)}
.pf2-toast{position:fixed;left:50%;top:calc(var(--app-top-h,73px) + 14px);transform:translate(-50%,-20px);opacity:0;z-index:70;background:#0B1324;color:#fff;border-radius:14px;
  padding:11px 16px;font-size:.86rem;font-weight:600;transition:opacity .2s,transform .2s;pointer-events:none;max-width:calc(100vw - 32px)}
.pf2-toast.show{opacity:1;transform:translate(-50%,0)}
.pf2-toast.bad{background:#BE123C}
/* panel Individual Stock lama di dalam kartu baru */
.pf2-pane .pf-ind{margin-top:0}
@media(max-width:767px){body:has(.ulik-mobile-nav) .pf2-bar{bottom:calc(84px + env(safe-area-inset-bottom))}.pf2{padding-bottom:180px}}
@media(max-width:600px){
  .pf2-sec{padding:18px 16px;border-radius:20px}
  .pf2-two,.pf2-c3{grid-template-columns:1fr}
  .pf2-gal{grid-template-columns:repeat(2,1fr)}
  .pf2-bar{left:12px;right:12px;transform:none;flex-wrap:wrap;justify-content:flex-end}
  .pf2-st{flex:1 1 100%;font-size:.78rem}
  .pf2-cancel{display:none}
}
/* atribut hidden selalu menang atas display milik komponen form produk */
.pf2 [hidden],.pf2-menu[hidden]{display:none!important}

/* ---- form produk tahap 3: editor deskripsi, daftar unit, affiliate ---- */
.pf2 .rte-field .rte-bar{top:calc(var(--app-top-h,73px) + 62px)}
.pf2-rte .rte{border-radius:16px}
.pf2-rte .rte-edit{min-height:220px}
.pf2-uchips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.pf2-chip{font-size:.76rem;font-weight:700;border-radius:999px;padding:5px 11px;background:#F1F5F9;color:var(--k-ink2)}
.pf2-chip.ok{background:#DCFCE7;color:#166534}
.pf2-units{list-style:none;margin:0;padding:0}
.pf2-unit{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:10px;align-items:start;border:1.5px solid var(--k-line);border-radius:14px;padding:10px 12px;margin-bottom:8px;background:#fff}
.pf2-un{font-size:.72rem;font-weight:800;color:var(--k-mut);padding-top:10px;text-align:center;cursor:grab;user-select:none}
.pf2-uf{display:grid;gap:6px;min-width:0}
.pf2 .pf2-uf .pf2-in{padding:8px 10px;font-size:.84rem;border-radius:10px}
.pf2 .pf2-uf textarea.pf2-in{min-height:52px}
.pf2-ua{display:flex;flex-direction:column;gap:4px}
.pf2-ua button{border:0;background:#F1F5F9;border-radius:8px;width:30px;height:26px;cursor:pointer;font:inherit;font-size:.8rem;padding:0;color:var(--k-ink2)}
.pf2-ua button:hover{background:var(--k-soft)}
.pf2-ua button.d{background:#FFF1F2;color:var(--k-red)}
.pf2-unit.sold{background:#F8FAFC}
.pf2-unit.sold b{font-size:.82rem;color:var(--k-ink2)}
.pf2-ulock{margin:0;font-size:.78rem;color:var(--k-mut);font-family:ui-monospace,Menlo,Consolas,monospace;background:#F1F5F9;border-radius:9px;padding:8px 10px;white-space:pre-wrap;word-break:break-all;max-height:110px;overflow:auto}
.pf2-usold{font-size:.72rem;font-weight:700;color:var(--k-mut);white-space:nowrap;padding-top:6px;text-align:right}
.pf2-usold small{font-weight:600}
.pf2-uacts{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.pf2-bulk{margin-top:10px;border:1.5px solid #BAE6FD;background:var(--k-mist);border-radius:14px;padding:12px}
.pf2-bulk b{font-size:.84rem}
.pf2 .pf2-bulk textarea{width:100%;min-height:110px;border:1px solid var(--k-line);border-radius:10px;padding:10px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;outline:0;margin:8px 0 0;resize:vertical}
.pf2-bulk-f{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:.76rem;color:var(--k-mut)}
.pf2-btn-s.pri{background:var(--k-sky);color:#fff;border-color:var(--k-sky)}
.pf2-pct{max-width:160px}
.pf2-pct span{padding:0 13px 0 4px}
.pf2 .pf2-pct input{padding:11px 4px 11px 13px}
@media(max-width:600px){.pf2-unit{grid-template-columns:minmax(0,1fr) auto}.pf2-un{display:none}}
/* ---- form produk tahap 4: pratinjau HP ---- */
.pf2{max-width:1240px}
.pf2-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}
.pf2-main{min-width:0}
.pf2-pv{position:sticky;top:calc(var(--app-top-h,73px) + 14px)}
.pf2-pv-card{background:#fff;border:1px solid var(--k-line);border-radius:26px;padding:16px 16px 14px}
.pf2-pv-h{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.pf2-pv-h b{font-size:.9rem;color:var(--k-ink)}
.pf2-live{margin-left:auto;font-size:.72rem;font-weight:700;color:#15803D;background:#DCFCE7;border-radius:999px;padding:4px 9px}
.pf2-pv-x{display:none;border:0;background:#F1F5F9;border-radius:999px;padding:6px 12px;font:inherit;font-weight:700;font-size:.78rem;cursor:pointer}
.pf2-screen{padding:0!important;overflow:hidden!important;height:calc(100vh - var(--app-top-h,73px) - 210px);min-height:440px;max-height:600px}
.pf2-screen iframe{display:block;width:100%;height:100%;border:0;background:#F4F8FC}
.pf2-pv-tip{margin:10px auto 0;max-width:290px;font-size:.74rem;color:var(--k-mut);text-align:center;line-height:1.45}
.pf2-fab{display:none}
@media(max-width:1180px){.pf2-grid{grid-template-columns:minmax(0,1fr) 300px}}
@media(max-width:1080px){
  .pf2-grid{grid-template-columns:minmax(0,1fr)}
  .pf2-pv{display:none;position:fixed;inset:0;z-index:80;background:rgba(11,19,36,.55);backdrop-filter:blur(4px);padding:24px 16px;top:0}
  .pf2-pv.open{display:grid;place-items:center}
  .pf2-pv-card{width:100%;max-width:350px}
  .pf2-pv-x{display:block}
  .pf2-screen{height:calc(100vh - 200px);max-height:640px;min-height:0}
  .pf2-fab{display:flex;position:fixed;right:16px;bottom:calc(86px + env(safe-area-inset-bottom));z-index:55;gap:8px;border:0;border-radius:999px;padding:12px 17px;
    background:#fff;color:var(--k-ink);font:inherit;font-weight:700;box-shadow:0 10px 26px -10px rgba(2,6,23,.45);cursor:pointer}
  body.pf2-lock{overflow:hidden}
}
@media(max-width:767px){body:has(.ulik-mobile-nav) .pf2-fab{bottom:calc(150px + env(safe-area-inset-bottom))}}
@media(max-width:600px){body:has(.ulik-mobile-nav) .pf2-fab{bottom:calc(190px + env(safe-area-inset-bottom))}}
/* v1.31.1: catatan pembayaran pindah ke bawah kotak deskripsi */
.pp > .pp-paynote{margin:16px auto 0;max-width:560px}

/* ---- Admin → Email → Pratinjau template (v1.38) ---- */
.ep-cta{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px;background:linear-gradient(135deg,#F0F9FF,#fff);border-color:#BAE6FD}
.ep-grid{display:grid;grid-template-columns:260px minmax(0,1fr);gap:16px;align-items:start}
.ep-list{display:flex;flex-direction:column;gap:2px;position:sticky;top:calc(var(--app-top-h,72px) + 12px)}
.ep-list a{padding:8px 10px;border-radius:10px;color:var(--ink-2);font-weight:600;font-size:.86rem}
.ep-list a:hover{background:#F0F9FF;color:var(--ind)}
.ep-list a.on{background:var(--ulik-sky-tint);color:var(--ind);font-weight:800}
.ep-group{display:block;margin:10px 0 2px;padding:0 10px;font-size:.66rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--mut-2)}
.ep-list .ep-back{margin-top:10px;color:var(--mut);font-weight:600}
.ep-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.ep-size{display:inline-flex;gap:6px}.ep-size .btn.on{background:var(--ulik-sky-main);color:#fff;border-color:var(--ulik-sky-main)}
.ep-subject{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#F8FAFC;margin-bottom:12px}
.ep-subject span{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.ep-frame{margin:0 auto;max-width:680px;border-radius:16px;overflow:hidden;border:1px solid var(--line);background:#EEF6FC;transition:max-width .2s}
.ep-view.is-hp .ep-frame{max-width:380px}
.ep-frame iframe{display:block;width:100%;height:900px;border:0}
.ep-text{margin:12px auto 0;max-width:680px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}
.ep-text summary{cursor:pointer;font-weight:700;font-size:.85rem;color:#0369A1}
.ep-text pre{white-space:pre-wrap;font:12.5px/1.55 ui-monospace,Consolas,monospace;color:#334155;margin:10px 0 0}
.ep-send{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:14px auto 0;max-width:680px}
.ep-empty{padding:28px 16px;text-align:center;color:var(--mut);border:1px dashed #CBD5E1;border-radius:14px}
@media(max-width:900px){.ep-grid{grid-template-columns:1fr}
  /* HP: daftar jadi chip ringkas supaya pratinjau tidak terdorong jauh ke bawah */
  .ep-list{position:static;flex-direction:row;flex-wrap:wrap;gap:6px}
  .ep-list>b,.ep-list>.mini-note,.ep-group{flex-basis:100%}
  .ep-group{margin:6px 0 0;padding:0}
  .ep-list a{padding:6px 10px;border:1px solid var(--line);border-radius:999px;font-size:.8rem}
  .ep-list .ep-back{border:0;margin-top:4px;flex-basis:100%}}

/* ==========================================================================
   PESANAN ADMIN v1.41.3 — menu Pesanan & Pembayaran digabung (kelas "op-")
   Daftar: kepala + pengalih tampilan, tab status + jumlah, filter, tabel.
   Detail: ringkasan, riwayat (timeline), percobaan pembayaran.
   ========================================================================== */
.op-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:2px 0 16px}
.op-head h1{font-size:1.45rem;margin:0;letter-spacing:-.01em}
.op-head p{margin:4px 0 0;color:var(--mut);font-size:.86rem}
.op-view{display:inline-flex;padding:4px;border-radius:14px;background:rgba(255,255,255,.75);border:1px solid var(--ulik-sky-border);box-shadow:0 6px 18px -12px rgba(14,165,233,.5)}
.op-view a{padding:8px 14px;border-radius:10px;font-weight:700;font-size:.84rem;color:#475569;display:flex;align-items:center;gap:7px}
.op-view a.on{background:linear-gradient(120deg,#0EA5E9,#38BDF8);color:#fff;box-shadow:0 8px 18px -10px rgba(14,165,233,.9)}
.op-view a.on .ic{color:#fff}

.op-tabs{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin-bottom:16px}
.op-tab{position:relative;display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.95);box-shadow:0 8px 20px -16px rgba(14,165,233,.6);color:#334155;transition:transform .15s}
.op-tab:hover{transform:translateY(-2px);opacity:1}
.op-tab b{font-size:1.35rem;line-height:1.1;color:#0F172A}
.op-tab span{font-size:.76rem;font-weight:700;color:#64748B}
.op-tab i{position:absolute;top:12px;right:12px;width:9px;height:9px;border-radius:50%}
.op-tab.on{background:linear-gradient(140deg,#0EA5E9,#38BDF8);border-color:transparent;box-shadow:0 14px 26px -14px rgba(14,165,233,.95)}
.op-tab.on b,.op-tab.on span{color:#fff}
.op-tab.warn{background:linear-gradient(140deg,#FFF7ED,#FFEDD5);border-color:#FED7AA}
.op-tab.warn b{color:#C2410C}.op-tab.warn span{color:#9A3412}
@media (max-width:1100px){.op-tabs{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:620px){.op-tabs{display:flex;overflow-x:auto;scrollbar-width:none;padding:0 0 4px;max-width:100%}.op-tab{min-width:118px;flex:none}}

.op-filter{display:grid;grid-template-columns:minmax(220px,2fr) minmax(140px,1fr) minmax(250px,1.5fr) minmax(130px,.9fr) auto;gap:10px;align-items:center}
.op-filter input,.op-filter select{width:100%;margin:0}
.op-search{position:relative;display:block;margin:0}
.op-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:#94A3B8;pointer-events:none}
.op-search input{padding-left:38px}
.op-dates{display:flex;align-items:center;gap:6px}
.op-dates input{min-width:0;flex:1 1 0;width:auto}
.op-filter>*{min-width:0}
@media (max-width:1360px){.op-filter{grid-template-columns:1fr 1fr 1fr}.op-search{grid-column:1/-1}.op-dates{grid-column:span 2}}
@media (max-width:1100px){.op-filter{grid-template-columns:1fr 1fr}.op-search,.op-dates{grid-column:1/-1}}
@media (max-width:560px){.op-filter{grid-template-columns:1fr}}
.op-subfilter{margin:12px 0 0;font-size:.82rem}
.op-subfilter a{font-weight:700}

.op-tbl{margin-top:14px}
.op-tbl td{vertical-align:middle}
.op-tbl th,.op-tbl td{padding-left:10px;padding-right:10px}
.op-tbl .op-meth{white-space:normal;max-width:170px}
.op-ord{display:flex;flex-direction:column;gap:2px;min-width:0}
.op-ord .mono{font-weight:800;font-size:.82rem;color:#0F172A}
.op-ord small,.op-buyer small,.op-when small{color:#64748B;font-size:.76rem}
.op-ord small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:230px}
.op-buyer{display:flex;flex-direction:column;gap:1px}
.op-when small{display:block}
.op-amt b{display:block}
.op-amt small{color:#0369A1;font-size:.74rem;font-weight:700}
.op-meth{display:inline-flex;align-items:center;gap:7px;padding:4px 10px 4px 5px;border-radius:999px;background:#F1F9FF;border:1px solid #D6EEFC;font-size:.76rem;font-weight:700;color:#0C4A6E;white-space:nowrap}
.op-meth i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;color:#fff;font-style:normal;font-size:.6rem;font-weight:900;flex:none}
.op-st{display:flex;flex-direction:column;align-items:flex-start;gap:3px}
.op-st small{font-size:.72rem;color:#64748B}
.op-st .warnnote{color:#C2410C;font-weight:700}
.badge-orange{background:#FFEDD5;color:#9A3412}
.badge-uji{background:#FEF3C7;color:#92400E;font-size:.62rem;padding:1px 7px;margin-left:6px;vertical-align:middle}
.op-go{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:var(--ulik-sky-tint);color:#0284C7}
.op-row-warn td:first-child{box-shadow:inset 3px 0 0 #FB923C}
.op-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 4px 0;font-size:.82rem;color:#64748B}
.op-pager{display:flex;gap:6px}
.op-pager a{min-width:34px;height:34px;padding:0 6px;border-radius:10px;display:grid;place-items:center;background:#fff;border:1px solid var(--line);font-weight:700;color:#334155}
.op-pager a.on{background:#0EA5E9;border-color:#0EA5E9;color:#fff}

/* detail */
.op-sum{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:0 0 18px}
.op-sum div{background:rgba(255,255,255,.85);border:1px solid rgba(255,255,255,.95);border-radius:16px;padding:12px 14px;box-shadow:0 8px 20px -16px rgba(14,165,233,.6);min-width:0}
.op-sum span{display:block;font-size:.72rem;font-weight:700;color:#64748B;text-transform:uppercase;letter-spacing:.04em}
.op-sum b{display:block;margin-top:3px;font-size:1.02rem;color:#0F172A;overflow-wrap:anywhere}
.op-sum b small{font-size:.72rem;color:#0369A1;font-weight:700}
@media (max-width:900px){.op-sum{grid-template-columns:repeat(2,minmax(0,1fr))}}
.op-tl{list-style:none;margin:10px 0 0;padding:0;position:relative}
.op-tl:before{content:"";position:absolute;left:15px;top:8px;bottom:8px;width:2px;background:linear-gradient(#BAE6FD,#E2E8F0)}
.op-tl li{position:relative;display:grid;grid-template-columns:32px 1fr auto;gap:12px;padding:9px 0}
.op-tl .dot{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#fff;border:2px solid #BAE6FD;color:#0284C7;font-size:.72rem;font-weight:900;z-index:1}
.op-tl .dot.ok{border-color:#6EE7B7;color:#059669;background:#ECFDF5}
.op-tl .dot.x{border-color:#FCA5A5;color:#DC2626;background:#FEF2F2}
.op-tl .dot.w{border-color:#FDBA74;color:#EA580C;background:#FFF7ED}
.op-tl .dot.sys{border-color:#CBD5E1;color:#64748B;background:#F8FAFC}
.op-tl b{display:block;font-size:.88rem}
.op-tl small{display:block;color:#64748B;font-size:.78rem;margin-top:1px;overflow-wrap:anywhere}
.op-tl time{font-size:.78rem;color:#64748B;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
.op-src{display:inline-block;font-size:.64rem;font-weight:800;padding:1px 7px;border-radius:999px;background:#F1F5F9;color:#475569;margin-left:6px;vertical-align:1px}
.op-try{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 14px;border:1px solid #E2E8F0;border-radius:14px;background:#fff;margin-top:10px}
.op-try .n{width:30px;height:30px;border-radius:10px;background:var(--ulik-sky-tint);color:#0284C7;display:grid;place-items:center;font-weight:900;font-size:.78rem;flex:none}
.op-try .m{flex:1;min-width:0}
.op-try .m b{font-size:.88rem}
.op-try .m small{display:block;color:#64748B;font-size:.74rem;overflow-wrap:anywhere}
details.op-tech{margin-top:4px}
details.op-tech summary{cursor:pointer;font-weight:800;font-size:.9rem;color:#334155;list-style:none;display:flex;justify-content:space-between;align-items:center}
details.op-tech summary::-webkit-details-marker{display:none}
details.op-tech summary:after{content:"▾";color:#94A3B8}
details.op-tech[open] summary:after{content:"▴"}
.op-alert{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:16px;background:linear-gradient(120deg,#FFF7ED,#FFFBEB);border:1px solid #FED7AA;margin:0 0 18px;color:#7C2D12;font-size:.88rem;line-height:1.55}
.op-alert .ic{width:34px;height:34px;border-radius:11px;background:#FFEDD5;color:#EA580C;display:grid;place-items:center;flex:none;font-weight:900}
.op-alert a{font-weight:800;color:#C2410C}

/* ==========================================================================
   PRODUK & PENGGUNA ADMIN v1.42 (kelas "ap-"; memakai komponen op- di atas)
   ========================================================================== */
.op-tabs.ap-t5{grid-template-columns:repeat(5,minmax(0,1fr))}
.op-tabs.ap-t4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:620px){.op-tabs.ap-t5,.op-tabs.ap-t4{display:flex}}
.op-filter.ap-filter{grid-template-columns:minmax(200px,2fr) repeat(4,minmax(120px,1fr)) auto}
.op-filter.ap-filter3{grid-template-columns:minmax(220px,2fr) repeat(2,minmax(150px,1fr)) auto}
@media (max-width:1100px){.op-filter.ap-filter,.op-filter.ap-filter3{grid-template-columns:1fr 1fr}.ap-filter .op-search,.ap-filter3 .op-search{grid-column:1/-1}}
@media (max-width:560px){.op-filter.ap-filter,.op-filter.ap-filter3{grid-template-columns:1fr}}
.ap-prod{display:flex;align-items:center;gap:12px;min-width:0}
.ap-prod>div{min-width:0}
.ap-thumb{width:48px;height:48px;border-radius:12px;object-fit:cover;flex:none;background:linear-gradient(135deg,#BAE6FD,#E0F2FE);display:grid;place-items:center;color:#0284C7;font-weight:900;font-size:.9rem}
.ap-thumb.round{border-radius:50%;color:#fff;background:linear-gradient(135deg,#0EA5E9,#6366F1)}
.ap-prod b{display:-webkit-box;font-size:.88rem;line-height:1.3;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ap-prod b a{color:inherit}
.ap-prod small{display:block;color:#64748B;font-size:.76rem}
.ap-prod small a{color:inherit}
.ap-type{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:.74rem;font-weight:700;white-space:nowrap}
.ap-type.file{background:#EEF2FF;color:#4338CA}.ap-type.external{background:#ECFEFF;color:#0E7490}.ap-type.text{background:#FDF4FF;color:#A21CAF}
.ap-price b,.ap-sold b{display:block}
.ap-price s{color:#94A3B8;font-size:.74rem}
.ap-sold small{color:#0369A1;font-size:.74rem;font-weight:700}
.ap-stock{font-size:.78rem;font-weight:700}
.ap-stock.low{color:#C2410C}.ap-stock.out{color:#DC2626}.ap-stock.inf{color:#64748B;font-weight:600}
.ap-acts{display:flex;gap:6px;justify-content:flex-end;align-items:center}
.ap-ext{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:#fff;border:1px solid var(--ulik-sky-border);color:#0284C7;font-weight:900;flex:none}
.ap-ext.is-off{opacity:.35;cursor:default}

.ap-hero{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap;padding:18px;border-radius:20px;background:rgba(255,255,255,.9);border:1px solid #fff;box-shadow:0 14px 32px -22px rgba(14,165,233,.8);margin:6px 0 18px}
.ap-hero .ap-big{width:108px;height:108px;border-radius:20px;object-fit:cover;flex:none;background:linear-gradient(135deg,#BAE6FD,#E0F2FE);display:grid;place-items:center;font-size:2.2rem;font-weight:900;color:#0284C7}
.ap-hero .ap-ava{width:84px;height:84px;border-radius:50%;flex:none;overflow:hidden;box-shadow:0 0 0 5px #E0F2FE}
.ap-hero .ap-ava img,.ap-hero .ap-ava .avatar{width:84px!important;height:84px!important}
.ap-hero .who{flex:1;min-width:220px}
.ap-hero h1{font-size:1.4rem;margin:0 0 4px;line-height:1.25;overflow-wrap:anywhere}
.ap-hero .meta{color:#64748B;font-size:.86rem;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ap-hero .chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.ap-hero .btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.ap-link{display:flex;align-items:center;gap:8px;margin-top:12px;padding:8px 10px;border-radius:12px;background:#F0F9FF;border:1px solid #D6EEFC;font-size:.82rem;max-width:560px}
.ap-link .mono{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#0C4A6E}
.ap-link button{font-size:.74rem;font-weight:800;color:#0284C7;background:none;border:0;cursor:pointer;flex:none}
.op-sum.ap-sum{grid-template-columns:repeat(6,minmax(0,1fr))}
@media (max-width:1100px){.op-sum.ap-sum{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:620px){.op-sum.ap-sum{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ap-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:18px;align-items:start}
.ap-grid>*{min-width:0}
@media (max-width:1000px){.ap-grid{grid-template-columns:minmax(0,1fr)}}
.ap-kv{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed #E2E8F0;font-size:.88rem}
.ap-kv:last-child{border-bottom:0}
.ap-kv>span{color:#64748B;flex:none}
.ap-kv b{text-align:right;min-width:0;overflow-wrap:anywhere}
.ap-gal{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}
.ap-gal img{width:100%;aspect-ratio:1;border-radius:12px;object-fit:cover;background:#F0F9FF;display:block}
.ap-desc{max-height:150px;overflow:hidden;position:relative;font-size:.88rem;line-height:1.6;color:#334155}
.ap-desc:after{content:"";position:absolute;left:0;right:0;bottom:0;height:60px;background:linear-gradient(rgba(255,255,255,0),#fff)}
.ap-desc.open{max-height:none}
.ap-desc.open:after{display:none}
.ap-more{margin-top:8px;font-size:.8rem;font-weight:800;color:#0284C7;background:none;border:0;padding:0;cursor:pointer}
.ap-secret{display:flex;align-items:center;gap:10px;padding:12px;border-radius:14px;background:#0F172A;color:#E2E8F0;font-size:.84rem}
.ap-secret .mono{flex:1;min-width:0;filter:blur(5px);user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ap-secret.show .mono{filter:none;user-select:text;white-space:pre-wrap;overflow-wrap:anywhere}
.ap-secret button{font-size:.76rem;font-weight:800;color:#0F172A;background:#7DD3FC;border:0;border-radius:9px;padding:6px 10px;cursor:pointer;flex:none}
.ap-units{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.ap-units div{background:#F8FAFC;border:1px solid #E2E8F0;border-radius:12px;padding:10px 12px}
.ap-units span{display:block;font-size:.72rem;color:#64748B;font-weight:700}
.ap-units b{font-size:1.1rem}
.ap-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid #F1F5F9;font-size:.86rem}
.ap-row:last-child{border-bottom:0}
.ap-row>div{min-width:0}
.ap-row small{display:block;color:#64748B;font-size:.76rem;overflow-wrap:anywhere}
.ap-mod{display:grid;gap:8px;margin-top:10px}
.ap-mod .it{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:12px;border:1px solid #E2E8F0;background:#fff;margin:0}
.ap-mod .it small{display:block;color:#64748B;font-size:.76rem;margin-top:2px}
.ap-mod .it b{font-size:.86rem}
.ap-mod .it .btn{flex:none}
.ap-mod .danger{border-color:#FECACA;background:#FEF2F2}
.ap-feat{display:inline-flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.ap-feat span{font-size:.74rem;font-weight:700;padding:4px 10px;border-radius:999px;background:#F1F5F9;color:#475569}
.ap-feat span.on{background:#D1FAE5;color:#065F46}
.ap-wa{color:#059669;font-weight:800}
.ap-bank{display:flex;align-items:center;gap:12px;padding:12px;border-radius:14px;background:#F8FAFC;border:1px solid #E2E8F0;margin-top:10px}
.ap-bank .ic2{width:44px;height:40px;border-radius:12px;background:linear-gradient(135deg,#0EA5E9,#6366F1);color:#fff;display:grid;place-items:center;font-weight:900;font-size:.66rem;flex:none;text-align:center;line-height:1.1}
.ap-bank>div{flex:1;min-width:0}

/* ==========================================================================
   v1.44 — MY PAGE, EDIT BLOK PRODUK & PROFIL (dari mockup .scratch/mypage)
   Kelas lama (.builder, .block-item, .block-ic, .bp-host, .lp-grid, …) dan ID-nya
   tetap dipakai skrip (seret urutan, menu ⋯, picker, preview). Bagian ini hanya
   menimpa TAMPILANNYA; kelas baru berawalan mp2- (My Page) dan pf- (Profil).
   Tidak ada leluhur overflow:hidden di editor → .mp2-ed-foot (sticky) tetap jalan.
   ========================================================================== */
/* kartu atas */
.mp2-hero{position:relative;overflow:clip;display:flex;gap:22px;align-items:center;justify-content:space-between;flex-wrap:wrap;
  padding:22px 24px;border-radius:24px;margin-bottom:18px;color:#fff;
  background:linear-gradient(120deg,#0284C7 0%,var(--ulik-sky-main) 45%,var(--ulik-sky-light) 100%);box-shadow:0 22px 44px -26px rgba(2,132,199,.9)}
.mp2-hero::after{content:"";position:absolute;right:-60px;top:-70px;width:260px;height:260px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.28),rgba(255,255,255,0) 70%);pointer-events:none}
.mp2-hero-who{display:flex;gap:16px;align-items:center;min-width:0;position:relative;z-index:1}
.mp2-ava{width:68px;height:68px;border-radius:50%;flex:none;overflow:hidden;display:grid;place-items:center;background:#fff;box-shadow:0 0 0 4px rgba(255,255,255,.45)}
.mp2-ava img{width:100%;height:100%;object-fit:cover}
.mp2-hero-tx{min-width:0}
.mp2-kicker{display:block;font-size:.68rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;opacity:.85}
.mp2-hero h2{margin:2px 0 0;font-size:1.35rem;line-height:1.2;color:#fff;overflow-wrap:anywhere}
.mp2-handle{font-size:.84rem;opacity:.9;word-break:break-all}
.mp2-hero-link{flex:1 1 360px;max-width:520px;position:relative;z-index:1;min-width:0}
.mp2-url{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.96);border-radius:14px;padding:6px 6px 6px 12px;color:#0369A1}
.mp2-url input{flex:1;min-width:0;border:0;background:transparent;font:600 .88rem/1 ui-monospace,monospace;color:#0F172A;padding:6px 0;margin:0;outline:0;box-shadow:none}
.mp2-url button{border:0;border-radius:10px;padding:8px 14px;background:var(--grad-soft);color:#fff;font-weight:800;cursor:pointer;flex:none}
.mp2-hero-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.mp2-hbtn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:12px;background:rgba(255,255,255,.2);color:#fff;
  font:inherit;font-weight:700;font-size:.82rem;border:1px solid rgba(255,255,255,.35);cursor:pointer}
.mp2-hbtn:hover{background:rgba(255,255,255,.3);color:#fff;opacity:1}
.mp2-hbtn.ghost{background:transparent}
.mp2-hero-note{margin:8px 0 0;font-size:.76rem;opacity:.88;color:#fff}
@media(max-width:560px){.mp2-hero{padding:18px;border-radius:20px}.mp2-hero h2{font-size:1.15rem}}

/* kartu umum */
.panel.mp2-card,.mp2-card{background:rgba(255,255,255,.9);border:1px solid #fff;border-radius:22px;padding:18px 20px;
  box-shadow:0 16px 36px -26px rgba(14,165,233,.85)}
.mp2-card-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}
.mp2-card-h h3{margin:0;font-size:1.02rem}
.mp2-card-h p{margin:2px 0 0;font-size:.78rem;color:var(--mut-2)}
.mp2-tip{display:flex;gap:8px;align-items:flex-start;margin:0 0 12px;padding:9px 12px;border-radius:12px;background:#F0F9FF;
  border:1px solid var(--ulik-sky-border);font-size:.78rem;color:#0C4A6E;line-height:1.5}
.mp2-tip .ic{flex:none;margin-top:2px;color:#0284C7}

/* daftar blok */
.block-list .block-item{gap:12px;padding:12px 12px 12px 8px;border-radius:18px;border-color:#E0F2FE;box-shadow:0 6px 16px -14px rgba(15,23,42,.45)}
.block-list .block-item:hover{border-color:var(--ulik-sky-border)}
.block-list .block-item.is-off{background:#F8FAFC}
.block-list .block-ic{width:52px;height:52px;border-radius:15px;overflow:hidden}
.block-list .block-ic img{width:100%;height:100%;object-fit:cover}
.block-list .block-ic .ic{width:20px;height:20px}
.block-list .block-body b{font-size:.92rem;line-height:1.3}
.mp2-chips{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:1px}
.mp2-chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:.64rem;font-weight:800;letter-spacing:.04em;
  text-transform:uppercase;background:var(--ulik-sky-tint);color:#0369A1;white-space:nowrap}
.mp2-chip.t-product{background:#FCE7F3;color:#BE185D}.mp2-chip.t-link{background:#EEF2FF;color:#4338CA}
.mp2-chip.t-shop{background:#FEF3C7;color:#B45309}.mp2-chip.t-image{background:#D1FAE5;color:#047857}
.mp2-chip.t-video{background:#FEE2E2;color:#B91C1C}
.mp2-chip.aff{background:#F3E8FF;color:#7E22CE}.mp2-chip.off{background:#F1F5F9;color:#64748B}
.block-list .block-at,.block-list .block-menu-btn{width:36px;height:36px;min-width:36px;padding:0;border-radius:12px;display:grid;place-items:center;cursor:pointer}
.block-list .block-at{background:var(--ulik-sky-tint);color:#0284C7;border:1px solid transparent}
.block-list .block-at:hover{border-color:var(--ulik-sky-border)}
@media(max-width:560px){
  .block-list .block-item{gap:9px;row-gap:8px;padding:10px 10px 10px 6px}
  .block-list .block-ic{width:42px;height:42px;border-radius:12px}
  .block-list .block-body{flex:1 1 calc(100% - 80px)}
  .block-list .block-body b,.block-list .block-sub{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .block-list .block-actions{width:100%;justify-content:flex-end;gap:6px;padding-top:8px;border-top:1px dashed #E0F2FE}
  .block-list .block-at,.block-list .block-menu-btn{width:32px;height:32px;min-width:32px}
}
/* tombol "+ Tambah blok" (summary picker) */
.bp-host > summary{flex-direction:column;gap:2px;padding:14px;border-radius:18px;border:2px dashed var(--ulik-sky-border);
  color:#0284C7;font-weight:800;background:rgba(240,249,255,.7)}
.bp-host > summary small{font-weight:600;color:var(--mut-2);font-size:.74rem}
/* preview */
.builder > .builder-right{align-self:stretch}
.builder-right .panel.mp2-prev{position:sticky;top:calc(var(--app-top-h,64px) + 14px)}
@media(max-width:1119px){.builder-right .panel.mp2-prev{position:static}}

/* ---------- EDIT BLOK: daftar blok disembunyikan, editor lebar + preview ---------- */
.builder.is-editing .builder-left{display:none}
@media(min-width:1120px){
  .builder.is-editing{grid-template-columns:minmax(0,1fr) 340px}
  .builder.is-editing .builder-editor{grid-column:1;grid-row:1}
  .builder.is-editing .builder-right{grid-column:2;grid-row:1}
}
.mp2-editor{background:rgba(255,255,255,.94);border:1px solid #fff;border-radius:24px;box-shadow:0 18px 40px -26px rgba(14,165,233,.9)}
.mp2-ed-head{position:relative;padding:16px 64px 18px 22px;background:linear-gradient(180deg,#F0F9FF,rgba(255,255,255,0));
  border-bottom:1px solid #E0F2FE;border-radius:24px 24px 0 0}
.mp2-back,.mp2-ed-link{font-size:.8rem;font-weight:700;color:#0284C7}
.mp2-ed-link{display:inline-flex;align-items:center;gap:6px;margin-top:10px}
.mp2-ed-title{display:flex;gap:14px;align-items:center;margin-top:8px}
.mp2-ed-title .block-ic{width:52px;height:52px;border-radius:15px}
.mp2-ed-title h2{margin:0;font-size:1.3rem}
.mp2-ed-title h2 small{font-size:.8rem;color:var(--mut-2);font-weight:700}
.mp2-ed-title p{margin:2px 0 0;font-size:.8rem;color:var(--mut-2)}
.mp2-x{position:absolute;right:16px;top:14px;width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:#fff;
  border:1px solid #E2E8F0;color:#475569;cursor:pointer}
.mp2-x:hover{background:var(--ulik-sky-tint);color:#0284C7;opacity:1}
.mp2-sec{display:flex;flex-direction:column;gap:12px;padding:18px 22px;border-bottom:1px solid #F1F5F9}
.mp2-sec h3{display:flex;align-items:center;gap:10px;margin:0;font-size:1rem}
.mp2-n{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--grad-soft);color:#fff;font-size:.8rem;font-weight:900;flex:none}
.mp2-sec label:not(.mp2-pk):not(.mp2-tg):not(.lp-card):not(.pbp-radio):not(.mp2-search){display:flex;flex-direction:column;gap:6px;font-size:.84rem;font-weight:700;color:var(--ink-2)}
.mp2-sec input[type=text],.mp2-sec select{width:100%}
.pbp-when-single,.pbp-when-all{display:flex;flex-direction:column;gap:10px}
.mp2-ed-foot{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 22px;
  background:rgba(255,255,255,.97);backdrop-filter:blur(8px);border-top:1px solid #E0F2FE}
.mp2-ed-foot .btn{min-width:120px;justify-content:center}
.mp2-grow{flex:1}
.mp2-danger{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:16px 22px 22px;padding:12px 14px;
  border-radius:14px;border:1px dashed #FCA5A5;background:#FEF2F2}
.mp2-danger b{display:flex;align-items:center;gap:6px;color:#B91C1C;font-size:.86rem}
.mp2-danger small{display:block;color:#7F1D1D;font-size:.76rem}
.mp2-danger form{margin:0}
@media(max-width:560px){
  .mp2-ed-head{padding:14px 56px 14px 16px}.mp2-sec{padding:16px}.mp2-ed-foot{padding:12px 16px}
  .mp2-ed-foot .mp2-grow{display:none}.mp2-ed-foot .btn{flex:1;min-width:0}
  .mp2-danger{margin:14px 16px 16px}
}
/* mode: dua kartu */
.mp2-seg{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mp2-seg .pbp-radio{position:relative;display:block;cursor:pointer;margin:0}
.mp2-seg .pbp-radio input{position:absolute;opacity:0;width:1px;height:1px}
.mp2-seg .pbp-radio > span{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-radius:16px;border:1.5px solid #E2E8F0;background:#fff;transition:all .15s}
.mp2-seg .pbp-radio small{color:var(--mut-2);font-size:.76rem;font-weight:500}
.mp2-seg .pbp-radio:has(input:checked) > span{border-color:var(--ulik-sky-main);background:#F0F9FF;box-shadow:0 0 0 3px rgba(14,165,233,.15)}
.mp2-seg .pbp-radio input:focus-visible + span{outline:2px solid var(--ind);outline-offset:2px}
@media(max-width:480px){.mp2-seg{grid-template-columns:1fr}}
/* pilihan produk */
.mp2-pick-tools{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.mp2-search{flex:1 1 220px;display:flex;align-items:center;gap:8px;padding:0 12px;border-radius:12px;border:1px solid #E2E8F0;background:#fff;color:#94A3B8;margin:0}
.mp2-search input{border:0 !important;outline:0;flex:1;padding:10px 0;background:transparent;font:inherit;margin:0;box-shadow:none !important}
.mp2-count{font-size:.78rem;color:#475569;background:#F0F9FF;border-radius:999px;padding:5px 12px;margin-left:auto}
.mp2-count b{color:#0284C7}
.pb-pick.is-empty .mp2-count b{color:#B91C1C}
.mp2-group{display:flex;align-items:baseline;gap:8px;margin:6px 0 -2px}
.mp2-group span{font-size:.72rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:#0369A1}
.mp2-group small{font-size:.74rem;color:#94A3B8}
.mp2-picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}
.mp2-pk{position:relative;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:16px;border:1.5px solid #E2E8F0;background:#fff;cursor:pointer;transition:all .15s;margin:0}
.mp2-pk:hover{border-color:var(--ulik-sky-border)}
.mp2-pk input{position:absolute;opacity:0;width:1px;height:1px}
.mp2-pk:has(input:checked){border-color:var(--ulik-sky-main);background:#F0F9FF}
.mp2-pk.aff:has(input:checked){border-color:#A855F7;background:#FAF5FF}
.mp2-pk.warn{border-style:dashed}
.mp2-pk:has(input:focus-visible){outline:2px solid var(--ind);outline-offset:2px}
.mp2-pk-img{width:44px;height:44px;border-radius:12px;flex:none;overflow:hidden;display:grid;place-items:center;background:linear-gradient(135deg,var(--ulik-sky-border),var(--ulik-sky-tint));color:#0284C7}
.mp2-pk-img img{width:100%;height:100%;object-fit:cover}
.mp2-pk-tx{flex:1;min-width:0;display:flex;flex-direction:column}
.mp2-pk-tx b{font-size:.84rem;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.mp2-pk-tx small{font-size:.74rem;color:var(--mut-2);font-weight:500}
.mp2-pk-tx em{color:#B45309;font-style:normal;font-weight:700}
.mp2-pk-tx .mp2-warn{color:#B45309;font-weight:700}
.mp2-pk-ck{width:22px;height:22px;border-radius:7px;border:2px solid #CBD5E1;flex:none;display:grid;place-items:center;background:#fff}
.mp2-pk:has(input:checked) .mp2-pk-ck{background:var(--ulik-sky-main);border-color:var(--ulik-sky-main)}
.mp2-pk.aff:has(input:checked) .mp2-pk-ck{background:#A855F7;border-color:#A855F7}
.mp2-pk:has(input:checked) .mp2-pk-ck::after{content:"✓";color:#fff;font-weight:900;font-size:.8rem}
/* jumlah Mobile/Desktop & layout */
.mp2-limits{display:flex;flex-direction:column;gap:8px}
.mp2-limits .lp-limit{padding:10px 14px;border-radius:14px;background:#F8FAFC}
.lp-grid .lp-card{grid-column:auto}
/* saklar harga/deskripsi */
.mp2-toggles{display:grid;gap:8px}
.mp2-tg{position:relative;display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;border:1px solid #E2E8F0;background:#fff;cursor:pointer;margin:0}
.mp2-tg > span{flex:1;display:flex;flex-direction:column;font-size:.86rem}
.mp2-tg small{font-size:.74rem;color:var(--mut-2);font-weight:500}
.mp2-tg input[type=checkbox]{position:absolute;opacity:0;width:1px;height:1px}
.mp2-tg i{width:44px;height:26px;border-radius:999px;background:#CBD5E1;position:relative;transition:background .15s;flex:none}
.mp2-tg i::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 2px 6px rgba(0,0,0,.2)}
.mp2-tg input:checked + i{background:linear-gradient(120deg,var(--ulik-sky-main),var(--ulik-sky-light))}
.mp2-tg input:checked + i::after{transform:translateX(18px)}
.mp2-tg input:focus-visible + i{outline:2px solid var(--ind);outline-offset:2px}

/* ---------- PROFIL ---------- */
.pf-ava-wrap{position:relative;flex:none}
.pf-ava{width:88px;height:88px}
.pf-cam{position:absolute;right:-2px;bottom:-2px;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;cursor:pointer;
  background:#fff;color:#0284C7;box-shadow:0 6px 14px -6px rgba(15,23,42,.5)}
.pf-hero-act{position:relative;z-index:1;max-width:380px}
.pf-hero-act form{margin:0;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pf-hero-act input[type=file]{position:absolute;width:1px;height:1px;opacity:0}
.pf-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}
@media(max-width:1000px){.pf-grid{grid-template-columns:minmax(0,1fr)}}
.pf-col{min-width:0;display:flex;flex-direction:column;gap:18px}
.pf-col .mp2-card{margin:0}
.pf-aside{position:sticky;top:calc(var(--app-top-h,64px) + 14px)}
@media(max-width:1000px){.pf-aside{position:static}}
.pf-form label{display:block;font-weight:700;font-size:.84rem;color:var(--ink-2);margin-bottom:12px}
.pf-form label small{font-weight:500;color:#94A3B8}
.pf-form label input,.pf-form label textarea{display:block;width:100%;margin-top:6px}
.pf-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.pf-row{grid-template-columns:1fr}}
.pf-locked{display:flex;align-items:center;margin-top:6px;border-radius:12px;border:1px solid #E2E8F0;background:#F8FAFC;overflow:hidden}
.pf-locked > span{padding:0 0 0 12px;color:#94A3B8;font-weight:600}
.pf-form .pf-locked input{flex:1;border:0;background:transparent;margin:0;box-shadow:none;color:#475569}
.pf-locked em{font-style:normal;font-size:.72rem;font-weight:800;color:#64748B;background:#E2E8F0;padding:4px 9px;border-radius:999px;margin-right:8px;white-space:nowrap}
.pf-count{float:right}
.pf-wa{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:16px;background:#F0FDF4;border:1px solid #BBF7D0}
.pf-wa label{flex:1;margin:0}
.pf-wa label small{display:block;margin-top:6px;line-height:1.5;color:#166534;font-weight:500}
.pf-wa-ic{width:38px;height:38px;border-radius:12px;flex:none;display:grid;place-items:center;background:#22C55E;color:#fff}
.pf-wa-ic svg{width:20px;height:20px}
.pf-save{display:flex;margin-top:16px}
.pf-dl{margin:0;display:grid;gap:2px}
.pf-dl div{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid #F1F5F9;font-size:.84rem}
.pf-dl dt{color:var(--mut-2)}.pf-dl dd{margin:0;font-weight:700;text-align:right;word-break:break-all}
.pf-design{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.pf-design > div{flex:1;min-width:160px}
.pf-design small{display:block;color:var(--mut-2);font-size:.76rem;margin-top:2px}
.pf-design .block-ic{width:42px;height:42px;border-radius:13px;color:#fff;display:grid;place-items:center;flex:none}
.pf-social > .panel{margin:0}
/* jendela crop */
.pf-crop{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;padding:16px;background:rgba(15,23,42,.55);backdrop-filter:blur(4px)}
.pf-crop[hidden]{display:none}
.pf-crop-box{width:min(400px,100%);background:#fff;border-radius:24px;padding:18px;box-shadow:0 30px 70px -20px rgba(2,6,23,.6)}
.pf-crop-box header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.pf-crop-box header .mp2-x{position:static}
.pf-stage{position:relative;width:320px;max-width:100%;aspect-ratio:1;margin:0 auto;border-radius:18px;overflow:hidden;background:#0F172A;cursor:grab;touch-action:none}
.pf-stage canvas{width:100%;height:100%;display:block}
.pf-ring{position:absolute;inset:0;pointer-events:none;border-radius:18px;
  background:radial-gradient(circle closest-side at center,transparent 0 92%,rgba(15,23,42,.55) 92.5%)}
.pf-ring::after{content:"";position:absolute;inset:4%;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px rgba(14,165,233,.6)}
.pf-zoom{display:flex;align-items:center;gap:10px;margin:14px 6px 0;font-weight:900;color:#64748B}
.pf-zoom input{flex:1;accent-color:var(--ulik-sky-main);margin:0}
.pf-crop-note{margin:8px 0 0;text-align:center;font-size:.78rem;color:var(--mut-2)}
.pf-crop-box footer{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
@media(max-width:767px){body:has(.ulik-mobile-nav) .mp2-ed-foot{bottom:calc(60px + env(safe-area-inset-bottom))}}
@media(max-width:900px){.mp2-sec .lp-grid,.bp-prod-form .lp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ==========================================================================
   Pusat Bantuan (v1.45) — /panduan (.pd) & /panduan/{slug} (.pa).
   Memakai token .cp (Laman CMS) supaya seragam dengan laman lain.
   ========================================================================== */
.pd .cp-hero{padding:34px 0 26px}
.pd-hero-in{max-width:760px}
.pd .cp-hero h1{margin-bottom:10px}
.pd-search{display:flex;align-items:center;gap:10px;background:#fff;border:1.5px solid var(--ulik-sky-border,#BAE6FD);border-radius:16px;padding:6px 6px 6px 16px;box-shadow:0 10px 30px -18px rgba(14,165,233,.55);max-width:640px}
.pd-search .ic{color:var(--cp-sky);flex:none}
.pd-search input{flex:1;min-width:0;border:0;outline:0;box-shadow:none;margin:0;font:inherit;font-size:1rem;padding:10px 0;background:transparent;color:var(--cp-ink)}
.pd-search button{border:0;border-radius:12px;background:var(--grad-soft);color:#fff;font:inherit;font-weight:700;font-size:.92rem;padding:11px 18px;cursor:pointer}
.pd-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.pd-chips a{display:inline-flex;align-items:center;padding:7px 13px;border-radius:999px;background:#fff;border:1px solid var(--cp-line);font-size:.84rem;font-weight:600;color:var(--cp-ink-2);text-decoration:none}
.pd-chips a:hover{border-color:var(--ulik-sky-border);color:var(--cp-sky)}
.pd-sec{margin-top:30px}
.pd-sec[hidden],.pd-cat[hidden],.pd-cat li[hidden]{display:none}
.pd-sec-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 14px}
.pd-sec-h h2{font-size:1.3rem;font-weight:800;letter-spacing:-.01em;margin:0}
.pd-sec-h small{color:var(--cp-mut);font-weight:600;font-size:.84rem}
.pd-sec-h small a{color:var(--cp-sky)}
.pd-pop{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.pd-pop a{display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:16px;background:#fff;border:1px solid var(--cp-line);text-decoration:none;color:var(--cp-ink);transition:border-color .15s}
.pd-pop a:hover{border-color:var(--ulik-sky-border)}
.pd-pop .n{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;background:var(--cp-soft);color:var(--cp-sky);font-weight:800;font-size:.9rem;flex:none}
.pd-pop b{font-size:.98rem;line-height:1.35}
.pd-pop small{margin-top:auto;font-size:.76rem;font-weight:700;color:var(--cp-mut);text-transform:uppercase;letter-spacing:.04em}
.pd-cats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.pd-cat{background:#fff;border:1px solid var(--cp-line);border-radius:18px;padding:18px 18px 8px;scroll-margin-top:20px}
.pd-cat-h{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.pd-cat-ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--cp-soft);color:var(--cp-sky);flex:none}
.pd-cat-h b{display:block;font-size:1.05rem}
.pd-cat-h small{color:var(--cp-mut);font-size:.8rem;font-weight:600}
.pd-cat ul{list-style:none;margin:0;padding:0}
.pd-cat li a{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid #F1F5F9;color:var(--cp-ink-2);font-size:.93rem;font-weight:500;text-decoration:none;line-height:1.4}
.pd-cat li:first-child a{border-top:0}
.pd-cat li a::after{content:"›";color:#94A3B8;font-size:1.15rem;font-weight:700}
.pd-cat li a:hover{color:var(--cp-sky)}
.pd-none{margin:14px 0 0;padding:16px;border-radius:14px;background:#fff;border:1px dashed var(--cp-line);color:var(--cp-mut);text-align:center}
.pd-help{margin-top:30px;display:flex;align-items:center;gap:16px;justify-content:space-between;flex-wrap:wrap;padding:20px 22px;border-radius:18px;background:var(--cp-mist);border:1px solid var(--ulik-sky-border,#BAE6FD)}
.pd-help b{display:block;font-size:1.05rem;margin-bottom:2px;color:var(--cp-ink)}
.pd-help p{margin:0;color:var(--cp-ink-2);font-size:.92rem}
.pd-help .btn{flex:none}
.pa .cp-hero{padding:26px 0 18px}
.pa-wrap{max-width:760px}
.pa-cat{display:inline-flex;font-size:.76rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--cp-sky);background:var(--cp-soft);border-radius:999px;padding:5px 11px;margin-bottom:10px;text-decoration:none}
.pa-art .pa-intro{margin:4px 0 22px;padding:14px 16px;border-radius:14px;background:var(--cp-mist);border:1px solid var(--ulik-sky-border,#BAE6FD);font-size:.95rem}
.pa-art .pa-intro > :last-child{margin-bottom:0}
.pa-steps{list-style:none;margin:0;padding:0;counter-reset:pa}
.pa-art .pa-step{position:relative;margin:0;padding:0 0 26px 50px}
.pa-step::before{counter-increment:pa;content:counter(pa);position:absolute;left:0;top:0;width:34px;height:34px;border-radius:50%;background:var(--grad-soft);color:#fff;font-weight:800;display:grid;place-items:center;font-size:.95rem;box-shadow:0 8px 18px -10px rgba(14,165,233,.9)}
.pa-step::after{content:"";position:absolute;left:16px;top:40px;bottom:6px;width:2px;background:var(--cp-soft)}
.pa-step:last-child::after{display:none}
.pa-art .pa-step > h2{font-size:1.1rem;line-height:1.35;font-weight:800;margin:5px 0 6px}
.pa-step-b{font-size:.98rem;line-height:1.65}
.pa-step-b p{margin:0 0 12px}
.pa-art .pa-step-b img{max-width:min(100%,300px);margin:6px 0 14px;border:1px solid var(--cp-line);border-radius:18px;box-shadow:0 14px 30px -22px rgba(15,23,42,.5)}
.pa-rel{margin-top:30px}
.pa-back{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
@media (max-width:1080px) and (min-width:761px){
  .pd-pop{grid-template-columns:repeat(3,minmax(0,1fr))}
  .pd-cats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .pd .cp-hero{padding:22px 0 20px}
  .pd-search button{display:none}
  .pd-chips{flex-wrap:nowrap;overflow-x:auto;margin-right:-20px;padding-right:20px;scrollbar-width:none}
  .pd-chips a{flex:none}
  .pd-pop{display:flex;flex-direction:column;gap:0;border:1px solid var(--cp-line);border-radius:16px;overflow:hidden;background:#fff}
  .pd-pop a{flex-direction:row;align-items:center;gap:12px;border:0;border-top:1px solid #F1F5F9;border-radius:0;padding:12px 14px}
  .pd-pop a:first-child{border-top:0}
  .pd-pop small{display:none}
  .pd-pop b{font-size:.95rem;font-weight:600}
  .pd-cats{grid-template-columns:1fr}
  .pd-help{flex-direction:column;align-items:flex-start}
  .pa-art .pa-step{padding-left:44px}
  .pa-art .pa-step-b img{max-width:78%}
}
/* Admin Laman → Artikel Panduan & Kategori Panduan (v1.45) */
.pd-adm-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.pd-adm-tabs a{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:12px;border:1px solid var(--line,#E2E8F0);background:#fff;font-weight:700;font-size:.88rem;color:var(--ink-2,#334155);text-decoration:none}
.pd-adm-tabs a i{font-style:normal;font-size:.74rem;background:#F1F5F9;border-radius:999px;padding:1px 8px;color:#64748B}
.pd-adm-tabs a.on{border-color:#0EA5E9;background:#F0F9FF;color:#0369A1}
.pd-adm-tabs a.on i{background:#0EA5E9;color:#fff}
.pg-list-tools .pd-cat-filter{width:auto;flex:0 0 auto;margin:0;border:1px solid var(--line,#E2E8F0);border-radius:10px;padding:8px 10px;font:inherit;font-size:.88rem;background:#fff}
.pd-pop-chip{display:inline-block;font-size:.76rem;font-weight:800;color:#B45309;background:#FFFBEB;border:1px solid #FDE68A;border-radius:999px;padding:2px 9px;white-space:nowrap}
.pd-hint{display:block;margin:0 0 8px;padding:10px 12px;border-radius:10px;background:#F0F9FF;border:1px solid #BAE6FD;color:#0C4A6E;font-size:.84rem;line-height:1.5}
.pd-hint[hidden],.pd-adm-set[hidden],[data-guide-pop-n][hidden]{display:none}
.pd-adm-set{border-color:#BAE6FD;box-shadow:0 0 0 3px #F0F9FF}
.pd-adm-set select{width:100%}
.pg-tpl-guide{background:linear-gradient(90deg,#BAE6FD 0 8px,transparent 8px 12px,#E2E8F0 12px) 0 0/100% 7px repeat-y}
.pd-kat-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:900px){.pd-kat-grid{grid-template-columns:1fr}}
.pd-ord{display:inline-flex;align-items:center;gap:6px}
.pd-ord form{margin:0}
.pd-ord button{border:1px solid var(--line,#E2E8F0);background:#fff;border-radius:8px;width:26px;height:26px;font-size:.7rem;color:#64748B;cursor:pointer}
.pd-ord button:disabled{opacity:.35;cursor:default}

/* Admin: index Google per produk & pengguna (v1.47) */
.ix-panel{border:1.5px solid var(--ulik-sky-border,#BAE6FD)}
.ix-now{display:flex;align-items:center;gap:10px;margin-top:10px;padding:10px 12px;border-radius:12px;font-size:.84rem;line-height:1.45}
.ix-now i{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;font-style:normal;font-weight:900;color:#fff}
.ix-now.yes{background:#F0FDF4;border:1px solid #BBF7D0;color:#166534}.ix-now.yes i{background:#22C55E}
.ix-now.no{background:#F8FAFC;border:1px solid #E2E8F0;color:#334155}.ix-now.no i{background:#94A3B8}
.ix-now small{display:block;color:#64748B;font-size:.76rem}
.ix-opts{display:grid;gap:8px;margin-top:10px}
.ix-opt{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:12px;border:1px solid #E2E8F0;background:#fff;cursor:pointer;margin:0}
.ix-opt input{margin-top:3px;accent-color:#0EA5E9;flex:none}
.ix-opt span>b{font-size:.86rem;display:block}.ix-opt small{display:block;color:#64748B;font-size:.76rem;margin-top:2px}
.ix-opt:has(input:checked){border-color:#0EA5E9;background:#F0F9FF;box-shadow:0 0 0 3px rgba(14,165,233,.12)}
.ix-opt.no:has(input:checked){border-color:#F87171;background:#FEF2F2;box-shadow:0 0 0 3px rgba(239,68,68,.1)}
.ix-tag{display:inline-block;font-size:.68rem;font-weight:800;padding:1px 6px;border-radius:999px;margin-left:4px;vertical-align:1px;background:#E0F2FE;color:#0369A1}
.ix-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:2px;flex-wrap:wrap}
.ix-note{margin:8px 0 0;font-size:.78rem;color:#64748B;line-height:1.5}
.ix-warn{margin:8px 0 0;padding:8px 10px;border-radius:10px;background:#FFFBEB;border:1px solid #FDE68A;color:#92400E;font-size:.78rem;line-height:1.5}
.ix-g{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;font-weight:700;padding:1px 7px;border-radius:999px;white-space:nowrap}
.ix-g.yes{background:#DCFCE7;color:#15803D}.ix-g.no{background:#F1F5F9;color:#64748B}.ix-g.lock{background:#FEE2E2;color:#B91C1C}.ix-g.force{background:#E0F2FE;color:#0369A1}

/* --- menu Rekomendasi (route shopcase): tambah produk + pratinjau kartu --- */
.shopm-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px;align-items:start}
.shopm-main{min-width:0}
.shopm-lead{font-size:.98rem;color:var(--ink);margin:0 0 14px;line-height:1.5}
.shopm-paste{display:flex;gap:8px}
.shopm-paste input{flex:1;min-width:0;font-size:1rem;padding:14px 16px;border:1.5px solid var(--ulik-sky-border);border-radius:14px}
.shopm-paste .btn{padding:0 22px;flex:none}
.shopm-hint{font-size:.8rem;color:var(--mut);margin-top:8px}
.shopm-more{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px}
.shopm-more-flat{margin:0;border:0;padding:0}
.shopm-more summary{list-style:none;cursor:pointer;font-weight:700;color:var(--ind);font-size:.84rem}
.shopm-more summary::-webkit-details-marker{display:none}
.shopm-more .form-stack{margin-top:12px}
.shopm-steps{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.shopm-steps li{background:var(--ulik-sky-tint);border-radius:14px;padding:12px;font-size:.84rem;line-height:1.35}
.shopm-steps b{display:block;color:var(--ind);font-size:.74rem;margin-bottom:3px}
.shopm-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.shopm-head b{font-size:.98rem}
.shopm-warn{display:inline-flex;font-size:.76rem;font-weight:700;color:#B45309;background:#FEF3C7;border-radius:999px;padding:3px 10px}
.shopm-set{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}
.shopm-set>div{flex:1;min-width:200px}
.shopm-set b{font-size:.88rem}
.shopm-set form{margin:0}
.shopm-rules{margin:14px 0 0;padding-left:18px}
.shopm-side{position:sticky;top:calc(var(--app-top-h) + 16px)}
.shopm-side>b{display:block;font-size:.9rem}
.shopm-side>span{display:block;font-size:.78rem;color:var(--mut);margin-bottom:10px}
.shopm-pv{border-radius:22px;padding:6px 14px 16px;min-height:280px;pointer-events:none}
.shopm-pv .shop-sec{margin-top:10px}
.shopm-pv-note{padding:34px 12px;text-align:center;font-size:.84rem;color:var(--c-sub);margin:0}
.shopm-cell{display:contents}
.shopm-sample .shop-card{opacity:.62}
@media(max-width:1100px){
  .shopm-grid{grid-template-columns:minmax(0,1fr)}
  .shopm-side{position:static}
  .shopm-pv{max-width:360px;margin:0 auto}
  .shopm-side>b,.shopm-side>span{text-align:center}
}
@media(max-width:640px){
  .shopm-paste{flex-direction:column}
  .shopm-paste .btn{padding:13px}
  .shopm-steps{grid-template-columns:1fr}
  .shopm-steps li{padding:10px 12px}
}

/* --- katalog Affiliate: Rekomendasi & rak --- */
.afr-why{margin:0 0 16px;font-size:.84rem;color:var(--mut)}
.afr-why summary{cursor:pointer;font-weight:700;color:var(--ind);list-style:none}
.afr-why summary::-webkit-details-marker{display:none}
.afr-why ul{margin:8px 0 0;padding-left:18px}
.afr-rack{margin-bottom:24px}
.afr-rack-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}
.afr-rack-h h2,.afr-all-h h2{font-size:1.05rem;margin:0;color:var(--ink)}
.afr-rack-h p{margin:2px 0 0;font-size:.8rem;color:var(--mut)}
.afr-rack-h a{flex:none;color:var(--ind);font-weight:700;font-size:.82rem;text-decoration:none}
.afr-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(208px,1fr);gap:14px;overflow-x:auto;padding:2px 2px 10px;scroll-snap-type:x proximity}
.afr-row .af-card{scroll-snap-align:start;min-width:0}
.afr-sign{display:inline-flex;align-self:flex-start;background:var(--ulik-sky-tint);color:#0369A1;border-radius:999px;font-size:.72rem;font-weight:700;padding:3px 9px}
.afr-all-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;scroll-margin-top:calc(var(--app-top-h) + 12px)}
.af-comm-v{font-size:1.02rem}
@media(max-width:640px){.afr-row{grid-auto-columns:78%}}

/* --- Design: pilihan Mode halaman --- */
.dzm-opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.dzm-opt{position:relative;display:flex;flex-direction:column;gap:3px;background:#fff;border:2px solid var(--line);border-radius:16px;padding:12px;cursor:pointer}
.dzm-opt input{position:absolute;opacity:0}
.dzm-opt:has(input:checked){border-color:var(--ind);box-shadow:0 0 0 3px var(--ulik-sky-tint)}
.dzm-opt:has(input:focus-visible){outline:2px solid var(--ind);outline-offset:2px}
.dzm-opt b{font-size:.95rem}
.dzm-opt small{font-size:.8rem;color:var(--mut);line-height:1.35}
.dzm-art{display:flex;flex-direction:column;align-items:center;gap:4px;height:112px;background:#F1F5F9;border-radius:10px;padding:10px;margin-bottom:6px;overflow:hidden}
.dzm-art i{display:block;background:#CBD5E1;border-radius:4px}
.dzm-art .a{width:26px;height:26px;border-radius:50%;background:var(--ulik-sky-light)}
.dzm-art .l{width:44%;height:5px}
.dzm-art .b{width:72%;height:12px}
.dzm-art .h{width:100%;height:26px;background:var(--ulik-sky-light)}
.dzm-art .t{width:100%;height:7px}
.dzm-art .g{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;width:100%;flex:1}
.dzm-art .g i{height:auto}
.dzm-note{margin:12px 0 0;font-size:.82rem;color:var(--mut);line-height:1.45}
.dzm-sw,.dzm-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding:13px 0}
.dzm-sw{margin-top:14px;border-top-style:dashed}
.dzm-sw>div,.dzm-row>div{min-width:0}
.dzm-sw b,.dzm-row b{display:block;font-size:.9rem}
.dzm-sw small,.dzm-row small{display:block;font-size:.78rem;color:var(--mut);line-height:1.35}
.dzm-row .btn{flex:none}
.dzm-h{margin:8px 0 2px;font-size:.92rem}
.dzm-tg{position:relative;flex:none;width:44px;height:26px;cursor:pointer}
.dzm-tg input[type=checkbox]{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.dzm-tg span{position:absolute;inset:0;border-radius:999px;background:#CBD5E1;transition:background .15s}
.dzm-tg span::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .15s}
.dzm-tg input:checked+span{background:var(--ind)}
.dzm-tg input:checked+span::after{transform:translateX(18px)}
.dzm-tg input:focus-visible+span{outline:2px solid var(--ind);outline-offset:2px}
@media(max-width:560px){.dzm-opts{grid-template-columns:1fr}.dzm-art{height:92px}.dzm-row{flex-wrap:wrap}}

/* --- Mode Toko: halaman kreator --- */
.st-wrap{max-width:1040px;margin:0 auto;padding:22px 16px 28px;color:var(--c-ink)}
.st-head{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);background:var(--c-card);border:1px solid var(--c-card-border);border-radius:var(--c-rad);box-shadow:0 8px 22px -14px var(--c-glow);overflow:hidden}
.st-id{display:flex;align-items:center;gap:16px;padding:20px;background:var(--c-acc);color:var(--c-acc-ink);min-width:0}
.st-id .avatar-ring{width:84px;height:84px;flex:none;margin:0}
.st-id .avatar{width:100%;height:100%}
.st-id-t{min-width:0}
.st-id h1{margin:0;font-size:1.5rem;line-height:1.15;overflow-wrap:anywhere;color:inherit}
.st-id p{margin:2px 0 0;font-size:.88rem;font-weight:600;color:inherit;overflow-wrap:anywhere}
.st-id .socials{justify-content:flex-start;margin:8px 0 0;padding:0;gap:6px}
.st-id .so-chip{width:34px;height:34px}
.st-stats{display:flex;align-items:center;padding:12px 6px}
.st-stats div{flex:1;min-width:0;text-align:center;padding:6px}
.st-stats b{display:block;font-size:1.15rem;font-weight:900}
.st-stats span{font-size:.8rem;color:var(--c-sub)}
.st-tools{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:14px;margin:16px 0;background:var(--c-card);border:1px solid var(--c-card-border);border-radius:var(--c-rad);padding:6px 8px}
.st-tabs{display:flex;gap:2px;min-width:0;overflow-x:auto}
.st-tabs a{flex:none;color:var(--c-ink);font-weight:700;font-size:.92rem;padding:9px 13px;border-radius:var(--c-rad-sm);text-decoration:none}
.st-tabs a[aria-current]{background:var(--c-acc);color:var(--c-acc-ink)}
.st-search{flex:0 1 250px;min-width:150px;margin:0}
.st-search input{width:100%;font:500 .92rem var(--font);color:var(--c-ink);background:var(--c-pill-bg);border:1px solid var(--c-line);border-radius:var(--c-rad-sm);padding:9px 12px}
.st-sec{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin:0 0 12px}
.st-sec h2{margin:0;font-size:1.1rem;font-weight:900;color:var(--c-ink)}
.st-sec>a{color:var(--c-ink);font-weight:700;font-size:.86rem}
.st-filter{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.st-filter>a{border:1px solid var(--c-line);background:var(--c-card);color:var(--c-ink);border-radius:999px;font-weight:700;font-size:.8rem;padding:6px 12px;text-decoration:none}
.st-filter>a[aria-current]{background:var(--c-acc);color:var(--c-acc-ink)}
.st-filter form{margin:0}
.st-filter select{font:600 .84rem var(--font);color:var(--c-ink);background:var(--c-card);border:1px solid var(--c-line);border-radius:var(--c-rad-sm);padding:7px}
.st-block{margin-bottom:24px}
.st-block .linkstack{margin:0}
.st-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.st-cell{display:contents}
.creator-shell .st-card{display:flex;flex-direction:column;min-width:0;background:var(--c-card);border:1px solid var(--c-card-border);border-radius:var(--c-rad);box-shadow:0 8px 22px -14px var(--c-glow);overflow:hidden;color:var(--c-ink);text-decoration:none;transition:transform .14s ease}
.creator-shell .st-card:hover{transform:translateY(-2px);opacity:1}
.creator-shell[data-theme="neo"] .st-card,.creator-shell[data-theme="neo"] .st-head{box-shadow:4px 4px 0 var(--c-ink);border-width:2px}
.st-media{position:relative;display:block;aspect-ratio:1/1;background:var(--c-pill-bg)}
.st-media img{display:block;width:100%;height:100%;object-fit:cover}
.st-ph{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--c-sub)}
.st-off{position:absolute;left:0;top:10px;background:#DC2626;color:#fff;font-size:.75rem;font-weight:800;padding:3px 8px}
.st-body{display:flex;flex-direction:column;gap:3px;padding:11px 12px 13px;flex:1}
.st-type,.st-note{font-size:.75rem;font-weight:600;color:var(--c-sub)}
.st-note.is-out{color:#DC2626}
.st-tag{display:inline-block;background:var(--c-acc);color:var(--c-acc-ink);font-size:.68rem;font-weight:800;padding:1px 6px;border-radius:999px}
.st-name{font-size:.88rem;font-weight:700;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.6em}
.st-price{margin-top:auto;padding-top:6px;font-weight:900}
.st-price .price{font-size:1rem}
.st-price .price-old{font-size:.75rem;margin-left:4px}
.st-empty{padding:36px 12px;text-align:center;color:var(--c-sub);font-weight:600}
.creator-shell .st-grid .shop-card{height:100%}
.phone-page .st-wrap{padding:0 0 8px}
.phone-page .st-head{grid-template-columns:1fr;border-radius:0;border-width:0 0 1px}
.phone-page .st-id{padding:12px}
.phone-page .st-id .avatar-ring{width:52px;height:52px}
.phone-page .st-id h1{font-size:1rem}
.phone-page .st-id p{font-size:.72rem}
.phone-page .st-id .so-chip{width:26px;height:26px}
.phone-page .st-stats{padding:4px}
.phone-page .st-stats b{font-size:.86rem}
.phone-page .st-stats span{font-size:.64rem}
.phone-page .st-bio p{font-size:.7rem}
.phone-page .st-block{padding:0 10px}
.phone-page .st-block .st-grid,.phone-page .st-block .st-sec{padding:0}
.phone-page .st-tools{position:static;flex-direction:column;align-items:stretch;gap:6px;margin:0 0 10px;border-radius:0;border-width:0 0 1px}
.phone-page .st-tabs a{flex:1;text-align:center;font-size:.7rem;padding:7px 2px}
.phone-page .st-search{flex:none}
.phone-page .st-search input{font-size:.74rem;padding:7px 9px}
.phone-page .st-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 10px}
.phone-page .st-sec{padding:0 10px}
.phone-page .st-sec h2{font-size:.86rem}
.phone-page .st-block{margin-bottom:14px}
.phone-page .st-name{font-size:.7rem}
.phone-page .st-body{padding:7px 8px 9px}
.phone-page .st-type,.phone-page .st-note{font-size:.62rem}
.phone-page .st-price .price{font-size:.76rem}
.phone-page .st-empty{padding:18px 10px;font-size:.76rem}
@media(max-width:900px){.st-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){
  .st-head{grid-template-columns:1fr}
  .st-id{padding:16px}
  .st-id .avatar-ring{width:68px;height:68px}
  .st-id h1{font-size:1.3rem}
  .st-tools{position:static;flex-direction:column;align-items:stretch;gap:6px}
  .st-search{flex:none}
  .st-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .st-tabs a{font-size:.86rem;padding:9px 10px}
}
@media(prefers-reduced-motion:reduce){.creator-shell .st-card{transition:none}.creator-shell .st-card:hover{transform:none}}

/* --- Mode Toko: bio di kartu & layout blok produk di Beranda --- */
.st-bio{margin-top:6px;max-width:44ch}
.st-bio p{margin:0;font-size:.82rem;font-weight:500;line-height:1.4;white-space:pre-line;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.st-bio.is-open p{display:block}
.st-bio button{border:0;background:none;color:inherit;font:800 .76rem var(--font);text-decoration:underline;padding:2px 0;cursor:pointer}
.st-aff{display:none}
.st-wrap .st-aff{display:inline-block;background:var(--c-acc);color:var(--c-acc-ink);font-size:.68rem;font-weight:800;padding:1px 6px;border-radius:999px}
.st-wrap .pcard .view-detail,.st-wrap .pcard .price-note{display:none}
.st-block .pb-sec-title{font-size:1.1rem;font-weight:900}
@media(min-width:681px){
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-list,
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-compact,
  .creator-shell:not(.phone-page) .st-wrap .linkstack>.pcard{max-width:620px;width:100%;margin-inline:auto}
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-grid .pb-pitems{grid-template-columns:repeat(4,minmax(0,1fr))}
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-featured .pb-pitems{grid-template-columns:repeat(4,minmax(0,1fr))}
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-featured .pbg-card:first-child{grid-column:span 2;grid-row:span 2}
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-hscroll .pbg-card{flex:0 0 24%}
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-masonry .pb-pitems{columns:4}
}
@media(min-width:681px) and (max-width:900px){
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-grid .pb-pitems,
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-featured .pb-pitems{grid-template-columns:repeat(3,minmax(0,1fr))}
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-masonry .pb-pitems{columns:3}
  .creator-shell:not(.phone-page) .st-wrap .pb-prod-hscroll .pbg-card{flex-basis:32%}
}

/* --- Verifikasi kreator --- */
.vf-wrap{max-width:760px}
.vf-wrap.wide{max-width:1040px}
.vf-h{margin:0 0 4px;font-size:1.25rem;color:var(--ink)}
.vf-sub{margin:0 0 14px;color:var(--mut);font-size:.9rem;line-height:1.5}
.vf-row{display:grid;grid-template-columns:140px minmax(0,1fr);gap:8px;margin-bottom:10px}
.vf-row select,.vf-row input{min-width:0}
.vf-add{border:1.5px dashed var(--ulik-sky-border);background:#fff;color:var(--ind);border-radius:12px;font:700 .84rem var(--font);padding:10px;width:100%}
.vf-check{list-style:none;margin:0;padding:0}
.vf-check li{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line);font-size:.9rem;line-height:1.4}
.vf-check li:first-child{border-top:0}
.vf-tick{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#D1FAE5;color:#047857;font-size:.8rem;font-weight:800}
.vf-tick.no{background:#F1F5F9;color:#94A3B8}
.vf-tick.bad{background:#FEE2E2;color:#B91C1C}
.vf-tick.warn{background:#FEF3C7;color:#B45309}
.vf-state{display:flex;flex-direction:column;gap:10px}
.vf-state-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.vf-state-h b{font-size:1rem}
.vf-note{background:#F8FAFC;border-left:3px solid var(--ulik-sky-light);border-radius:0 10px 10px 0;padding:10px 12px;font-size:.88rem;line-height:1.45}
.vf-note small{display:block;color:var(--mut);font-weight:700;margin-bottom:3px}
.vf-note.err{background:#FEF2F2;border-left-color:#EF4444}
.vf-note.warn{background:#FFFBEB;border-left-color:#F59E0B}
.vf-actions{display:flex;gap:8px;flex-wrap:wrap}
.vf-lock{align-self:flex-start;margin-bottom:6px;background:#0F172A;color:#fff;border-radius:999px;font-size:.68rem;font-weight:700;padding:3px 9px}
.dzm-opt.is-locked{background:#F8FAFC;cursor:default}
.dzm-opt.is-locked .dzm-art{opacity:.55}
.vf-cta{margin-top:14px;background:var(--ulik-sky-tint);border-radius:14px;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.vf-cta b{display:block;color:#075985}
.vf-cta small{display:block;color:#0C4A6E;font-size:.8rem;line-height:1.4;margin-top:2px;max-width:42ch}
.vf-banner{display:flex;gap:12px;align-items:flex-start;background:#FFFBEB;border:1px solid #FDE68A;border-radius:16px;padding:14px;margin-bottom:18px;color:#78350F}
.vf-banner-ic{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#FEF3C7;font-weight:800;font-size:1.05rem}
.vf-banner-b{flex:1;min-width:0}
.vf-banner-b b{display:block;font-size:.96rem}
.vf-banner-b p{margin:3px 0 8px;font-size:.86rem;line-height:1.45}
.vf-days{height:7px;border-radius:999px;background:#FDE68A;overflow:hidden;margin-bottom:10px}
.vf-days i{display:block;width:29%;height:100%;background:#D97706}
.vf-side-n{margin-left:auto;background:#EF4444;color:#fff;border-radius:999px;font-size:.68rem;font-weight:800;padding:1px 7px}
.vf-adm-filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.vf-adm-filter input{flex:1;min-width:200px}
.vf-review{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.vf-soc{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:8px;min-width:0}
.vf-soc b{font-size:.95rem}
.vf-soc a.u{color:var(--ind);font-size:.86rem;font-weight:600;overflow-wrap:anywhere}
.vf-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.vf-meta{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:.86rem;margin:0}
.vf-meta dt{color:var(--mut)}
.vf-meta dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.vf-plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.vf-plan{display:flex;flex-direction:column;gap:10px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;min-width:0}
.vf-plan.on{border:2px solid var(--ind);box-shadow:0 0 0 3px var(--ulik-sky-tint)}
.vf-plan.soon{background:#F8FAFC}
.vf-plan h3{margin:0;font-size:1.1rem;display:flex;align-items:center;gap:6px}
.vf-plan p{margin:0;color:var(--mut);font-size:.84rem;line-height:1.4;min-height:3.6em}
.vf-plan ul{list-style:none;margin:0;padding:0;font-size:.86rem;flex:1}
.vf-plan li{display:flex;gap:8px;padding:6px 0;line-height:1.35}
.vf-plan li::before{content:"✓";color:#059669;font-weight:800}
.vf-plan.soon li::before{color:#94A3B8}
.vf-plan .btn{width:100%}
.vf-badge{display:inline-block;width:.86em;height:.86em;margin-left:.22em;vertical-align:-.06em}
@media(max-width:900px){.vf-layout,.vf-plans{grid-template-columns:1fr}.vf-plan p{min-height:0}}
@media(max-width:640px){
  .vf-row{grid-template-columns:1fr}
  .vf-review{grid-template-columns:1fr}
  .vf-banner{padding:12px}
  .vf-actions .btn{flex:1}
}
.vf-step{font-size:.92rem}
.vf-add{display:block;text-align:center;cursor:pointer;list-style:none}
.vf-add::-webkit-details-marker{display:none}
.dzm-opt.is-on{border-color:var(--ind);cursor:default}
.vf-soc .u{font-size:.86rem;font-weight:600;overflow-wrap:anywhere}

/* --- Editor Laman mengikuti tampilan halaman publik (.cp-art) --- */
.rte-edit.rte-page{font-size:1.07rem;line-height:1.8;color:#334155;overflow-wrap:anywhere}
.rte-edit.rte-page>*{max-width:740px;margin-left:auto;margin-right:auto}
.rte-edit.rte-page p,.rte-edit.rte-page>div{margin-top:0;margin-bottom:1.1em}
.rte-edit.rte-page h1{font-size:2rem;line-height:1.2;font-weight:800;margin-top:1.4em;margin-bottom:.5em;color:#0F172A}
.rte-edit.rte-page h2{font-size:1.55rem;line-height:1.25;font-weight:800;letter-spacing:-.015em;margin-top:1.8em;margin-bottom:.5em;color:#0F172A}
.rte-edit.rte-page h3{font-size:1.2rem;line-height:1.3;font-weight:700;margin-top:1.5em;margin-bottom:.4em;color:#0F172A}
.rte-edit.rte-page h4{font-size:1.05rem;font-weight:700;margin-top:1.3em;margin-bottom:.3em;color:#0F172A}
.rte-edit.rte-page ul,.rte-edit.rte-page ol{padding-left:1.3em;margin-top:0;margin-bottom:1.1em}
.rte-edit.rte-page li{margin:.35em 0}
.rte-edit.rte-page blockquote{margin-top:1.4em;margin-bottom:1.4em;padding:4px 0 4px 20px;border-left:4px solid var(--ulik-sky-light);font-size:1.12rem;font-style:italic}
.rte-edit.rte-page table{width:100%;border-collapse:collapse;font-size:.94rem;margin-bottom:1.3em}
.rte-edit.rte-page th,.rte-edit.rte-page td{padding:10px 14px;border:1px solid var(--line);text-align:left;vertical-align:top}
.rte-edit.rte-page th{background:#F1F5F9;font-weight:700}
.cp-art h1{font-size:2rem;line-height:1.2;font-weight:800;margin:1.4em 0 .5em}
@media(min-width:1101px){.pg-edit-grid{grid-template-columns:minmax(0,1fr) 300px}}
.rte-tbl{display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:var(--ulik-sky-tint);padding:7px 9px;font-size:.78rem;font-weight:700;color:#075985}
.rte-tbl button{border:0;background:#fff;color:#075985;border-radius:8px;font:700 .75rem var(--font);padding:5px 9px;cursor:pointer}
.rte-paste-note{background:#ECFDF5;color:#065F46;padding:8px 12px;font-size:.82rem;font-weight:600}
.rte-h1-warn{background:#FFFBEB;color:#92400E;padding:8px 12px;font-size:.8rem}
.rte-tbl[hidden],.rte-paste-note[hidden],.rte-h1-warn[hidden]{display:none}

/* --- Blog publik --- */
.bl-wrap{padding-bottom:48px}
.bl-hero{padding:34px 0 8px}
.bl-hero h1{margin:0;font-size:clamp(1.9rem,4vw,2.6rem);letter-spacing:-.02em}
.bl-hero p{margin:6px 0 0;color:var(--mut)}
.bl-chips{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 20px}
.bl-chips a{border:1px solid var(--line);border-radius:999px;padding:6px 13px;font-size:.84rem;font-weight:700;text-decoration:none;color:var(--ink);background:#fff}
.bl-chips a.on{background:var(--ind);color:#fff;border-color:var(--ind)}
.bl-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:20px}
.bl-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;color:var(--ink);text-decoration:none}
.bl-cover{display:block;aspect-ratio:16/9;background:linear-gradient(120deg,#0EA5E9,#38BDF8)}
.bl-cover img{display:block;width:100%;height:100%;object-fit:cover}
.bl-body{padding:14px 15px 16px;display:flex;flex-direction:column;gap:6px;min-width:0}
.bl-body small{color:var(--ind);font-weight:800;font-size:.74rem}
.bl-body h2,.bl-body h3{margin:0;font-size:1.05rem;line-height:1.3}
.bl-body p{margin:0;color:var(--mut);font-size:.87rem;line-height:1.45}
.bl-body>span{color:var(--mut);font-size:.76rem}
.bl-feat{display:grid;grid-template-columns:1.15fr 1fr;background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;margin-bottom:20px;color:var(--ink);text-decoration:none}
.bl-feat .bl-cover{aspect-ratio:auto;min-height:230px}
.bl-feat .bl-body{padding:22px;justify-content:center}
.bl-feat h2{font-size:1.45rem}
.bl-art{max-width:780px}
@media(max-width:800px){.bl-grid{grid-template-columns:1fr}.bl-feat{grid-template-columns:1fr}.bl-feat .bl-cover{min-height:170px}}

/* Admin → Pendapatan Kode Unik */
.ku-set,.ku-alert{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border-radius:14px;padding:12px 14px;margin-bottom:14px;font-size:.88rem;line-height:1.45}
.ku-set{background:var(--ulik-sky-tint);border:1px solid #BAE6FD;color:#075985}
.ku-alert{background:#FFFBEB;border:1px solid #FDE68A;color:#92400E;margin-top:14px}
.ku-alert b,.ku-alert span{display:block}
.ku-plus{color:#047857}
.ku-minus{color:#B91C1C}
.ku-page .tbl td,.ku-page .tbl th{white-space:nowrap}
@media(max-width:720px){.ku-page .tbl td,.ku-page .tbl th{white-space:normal}}

/* ==========================================================================
   MENU BIRU MUDA (v1.57) — sidebar + header admin & kreator
   Dasar biru langit lembut, teks biru laut, menu aktif putih, area isi melengkung.
   Lengkungan = ::after di header sticky, jadi tetap ada saat halaman digulir.
   ========================================================================== */
body.nav-sky{--nv:#C7EBFE;--nv-2:#D6F1FE;--nv-3:#E6F6FF;--nv-text:#0C4A6E;--nv-soft:#27648A;--nv-ink:#0369A1;
  background:#F7FBFE;background-image:none}
body.nav-sky .app-side.app-side{background:linear-gradient(180deg,var(--nv) 0,var(--nv) 96px,var(--nv-2) 62%,var(--nv-3) 100%);color:var(--nv-text);
  border-right:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;scrollbar-width:thin;scrollbar-color:rgba(3,105,161,.25) transparent;transition:width .18s ease}
body.nav-sky .side-brand{border-bottom:0;padding-bottom:10px}
body.nav-sky .side-brand .ulik-logo{color:var(--nv-text)}
body.nav-sky .side-sub{color:var(--nv-soft)}
body.nav-sky .side-user{margin:0 12px 6px;padding:10px 12px;border:0;border-radius:14px;background:rgba(255,255,255,.6)}
body.nav-sky .su-meta b{color:var(--nv-text)}
body.nav-sky .su-meta span,body.nav-sky .side-group,body.nav-sky .anv-chev{color:var(--nv-soft)}
body.nav-sky .anv-head:hover{color:var(--nv-text)}
body.nav-sky .sn{color:var(--nv-text);font-weight:600}
body.nav-sky .sn .ic{color:var(--nv-ink)}
body.nav-sky .sn:hover{background:rgba(255,255,255,.55);color:var(--nv-text)}
body.nav-sky .sn:hover .ic{color:var(--nv-ink)}
body.nav-sky .sn.active{background:#fff;color:var(--nv-ink);font-weight:700;box-shadow:0 8px 20px -12px rgba(3,105,161,.45)}
body.nav-sky .sn.active .ic{color:var(--nv-ink)}
body.nav-sky .sn-badge:not(.anv-badge),body.nav-sky .sn.active .sn-badge:not(.anv-badge){background:#0284C7;color:#fff}
body.nav-sky .side-foot{border-top-color:rgba(3,105,161,.14)}
body.nav-sky .side-help{background:rgba(255,255,255,.65);border-color:rgba(255,255,255,.9)}
body.nav-sky .side-help b{color:var(--nv-text)}
body.nav-sky .side-help p{color:var(--nv-soft)}
body.nav-sky .side-help .btn-soft{background:#fff;color:var(--nv-ink);border-color:transparent}
body.nav-sky .side-help .btn-primary{background:#0284C7;color:#fff;box-shadow:none}
body.nav-sky .sn-btn:hover{background:#FEE2E2;color:#B91C1C}
.side-mini-logo,.side-mini-help{display:none}

body.nav-sky .app-top{background:var(--nv);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:0;padding:11px 24px 11px 16px;gap:12px}
body.nav-sky .app-top::after{content:"";position:absolute;left:0;top:100%;width:28px;height:28px;pointer-events:none;
  background:radial-gradient(circle at 100% 100%,transparent 27.5px,var(--nv) 28px)}
body.nav-sky .app-top-title,body.nav-sky .atu-name,body.nav-sky .anv-acct-btn{color:var(--nv-text)}
body.nav-sky .app-top-sub,body.nav-sky .atu-role,body.nav-sky .anv-acct-chev{color:var(--nv-soft)}
body.nav-sky .app-top-head{flex:1 1 auto}
body.nav-sky .app-top-user{background:transparent;border:0;box-shadow:none;margin-left:0;padding:0}
body.nav-sky .anv-acct-btn{background:transparent}
body.nav-sky .drawer-btn{border-color:transparent;background:rgba(255,255,255,.65);color:var(--nv-ink)}
body.nav-sky .drawer-btn span{width:20px;height:20px;background:transparent;border-radius:0}
body.nav-sky .app-content{padding-top:30px}

.atp-btn{position:relative;width:38px;height:38px;flex:none;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:11px;
  background:rgba(255,255,255,.65);color:var(--nv-ink);cursor:pointer}
.atp-btn:hover{background:#fff}
.atp-btn.is-done{background:#DCFCE7;color:#047857}
.atp-btn i{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#EF4444;color:#fff;font:800 .62rem/18px var(--font);font-style:normal}
.atp-look{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border-radius:11px;background:#fff;color:var(--nv-ink);font-size:.82rem;font-weight:700;white-space:nowrap;
  box-shadow:0 8px 18px -14px rgba(3,105,161,.6)}
.atp-look:hover{opacity:.9;color:var(--nv-ink)}
.atp-search{position:relative;flex:0 1 270px;min-width:150px}
.atp-s-ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--nv-soft);display:flex}
body.nav-sky .atp-search input{width:100%;height:38px;margin:0;padding:0 12px 0 36px;border:1px solid transparent;border-radius:11px;background:rgba(255,255,255,.65);color:var(--nv-text);font:500 .84rem var(--font);outline:0;box-shadow:none}
body.nav-sky .atp-search input::placeholder{color:var(--nv-soft)}
body.nav-sky .atp-search input:focus{background:#fff;border-color:#7DD3FC}
.atp-results,.atp-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:80;min-width:260px;max-height:min(420px,70vh);overflow-y:auto;padding:8px;border-radius:14px;background:#fff;color:var(--ink);box-shadow:0 18px 44px -14px rgba(15,23,42,.45)}
.atp-results{left:0;right:auto;width:100%;min-width:0}
.atp-results[hidden],.atp-pop[hidden]{display:none}
.atp-results a,.atp-pop a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--ink-2);font-size:.84rem}
.atp-results a:hover,.atp-results a.is-on,.atp-pop a:hover{background:#F0F9FF;opacity:1}
.atp-results small{display:block;color:var(--mut);font-size:.72rem}
.atp-results p,.atp-pop p{margin:6px 10px;color:var(--mut);font-size:.8rem}
.atp-pop>b{display:block;padding:6px 10px 8px;font-size:.84rem}
.atp-pop strong{display:block;font-size:.83rem}
.atp-pop small{color:var(--mut)}
.atp-bell{position:relative}
.atp-search-drawer{display:none}

@media(min-width:901px){
  body.nav-sky.is-mini .app-side.app-side{width:76px;overflow-x:hidden}
  body.nav-sky.is-mini .side-sub,body.nav-sky.is-mini .su-meta,body.nav-sky.is-mini .side-group,
  body.nav-sky.is-mini .sn>span:not(.ic):not(.sn-badge),body.nav-sky.is-mini .side-help,body.nav-sky.is-mini .sn-kids,
  body.nav-sky.is-mini .side-brand .ulik-logo{display:none}
  body.nav-sky.is-mini .side-mini-logo{display:block;width:100%;text-align:center;font-weight:900;font-size:1.25rem;color:var(--nv-text)}
  body.nav-sky.is-mini .side-brand{padding:18px 0 10px}
  body.nav-sky.is-mini .side-user{margin:0 14px 6px;padding:4px;background:transparent;justify-content:center}
  body.nav-sky.is-mini .side-nav{padding:8px 12px}
  body.nav-sky.is-mini .sn{position:relative;justify-content:center;padding:11px 0}
  body.nav-sky.is-mini .sn-badge{position:absolute;top:3px;right:3px;min-width:16px;height:16px;padding:0 4px;font-size:.58rem;line-height:16px;margin:0}
  body.nav-sky.is-mini .anv-g{border-top:1px solid rgba(3,105,161,.14);padding-top:6px;margin-top:6px}
  body.nav-sky.is-mini .anv-g:first-child{border-top:0;padding-top:0;margin-top:0}
  body.nav-sky.is-mini .anv-g.is-closed .anv-items{display:block}
  body.nav-sky.is-mini .side-mini-help{display:flex}
}
@media(max-width:900px){
  body.nav-sky .app-side.app-side{width:280px}
  body.nav-sky .atp-collapse,body.nav-sky .app-top-sub,body.nav-sky .atp-search-top{display:none}
  body.nav-sky .app-top{padding:9px 14px}
  body.nav-sky .atp-search-drawer{display:block;flex:none;margin:0 12px 6px}
  body.nav-sky .side-close{background:rgba(255,255,255,.65);color:var(--nv-ink)}
  body.nav-sky .app-content{padding-top:26px}
}
@media(max-width:560px){
  body.nav-sky .atu-wrap,body.nav-sky .anv-acct-chev,body.nav-sky .atp-look span:not(.ic){display:none}
  body.nav-sky .atp-look{width:38px;height:38px;padding:0;justify-content:center}
  body.nav-sky .atp-pop{position:fixed;left:14px;right:14px;top:66px;min-width:0}
}
@media(min-width:901px){
  body.nav-sky.is-mini .side-user{margin:0 auto 6px;padding:0;width:36px}
  body.nav-sky.is-mini .side-user .avatar{flex:none;width:36px!important;height:36px!important}
}
