/* =====================================================================
   Lisya SB — Premium 3D UI  (v2)
   Background putih · kaca (glass) · ikon & tombol 3D · animasi bergerak
   File ini HANYA styling. Tidak mengubah logika / skrip / API apa pun.
   ===================================================================== */

/* ---------- 0. Font lokal (tetap tampil walau offline) ---------- */
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-display:swap;font-weight:200 800;
  src:url(/fonts/plus-jakarta-sans-latin-wght-normal.woff2) format('woff2-variations'),url(/fonts/plus-jakarta-sans-latin-wght-normal.woff2) format('woff2')}
@font-face{font-family:'Unbounded';font-style:normal;font-display:swap;font-weight:200 900;
  src:url(/fonts/unbounded-latin-wght-normal.woff2) format('woff2-variations'),url(/fonts/unbounded-latin-wght-normal.woff2) format('woff2')}

/* ---------- 1. Token ---------- */
:root{
  --pink:#ec1e79; --pink-ink:#c2166a; --pink-soft:#fff0f7; --pink-line:rgba(236,30,121,.16);
  --ink:#2a1830; --ink2:#55465e; --muted:#76687e;
  --line:#efe5f0; --line2:#f6eff5;
  --glass:rgba(255,255,255,.74);
  --r-lg:24px; --r:20px; --r-sm:14px;
  --sh-card:0 1px 0 rgba(255,255,255,.95) inset,0 0 0 1px rgba(236,30,121,.05),0 22px 44px -26px rgba(84,24,72,.34),0 2px 6px -2px rgba(84,24,72,.06);
  --sh-card-hi:0 1px 0 rgba(255,255,255,.95) inset,0 0 0 1px rgba(236,30,121,.09),0 34px 60px -28px rgba(120,30,90,.42),0 4px 10px -4px rgba(84,24,72,.08);
  --ease:cubic-bezier(.2,.8,.2,1);
  --f-body:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --f-disp:'Unbounded','Plus Jakarta Sans',system-ui,sans-serif;
}

/* ---------- 2. Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{font-family:var(--f-body);color:var(--ink);background:#fdfbfd;min-height:100vh;word-spacing:.025em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
img{max-width:100%}
.u{font-family:var(--f-disp);letter-spacing:-.02em}
.mut{color:var(--muted)}
.grad{background:linear-gradient(95deg,#ff4f9e,#ec1e79 40%,#8440f0);-webkit-background-clip:text;background-clip:text;color:transparent}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid rgba(236,30,121,.45);outline-offset:2px;border-radius:10px}

/* ---------- 3. Shim kompatibilitas (kelas yang dipakai script asli) ---------- */
.hidden{display:none!important}
.border{border:1px solid var(--line)} .border-b{border-bottom:1px solid var(--line2)}
.hover\:bg-gray-50:hover{background:#fdf4fa}
.p-3{padding:.75rem} .mt-4{margin-top:1rem}
.font-bold{font-weight:800!important} .font-semibold{font-weight:750!important} .font-medium{font-weight:650!important}
.text-sm{font-size:13.5px} .text-xs{font-size:12px}
.text-green-600{color:#138a42!important} .text-gray-900{color:var(--ink)!important} .text-gray-500{color:var(--muted)!important}
.rounded-md{border-radius:14px}
.mb-4{margin-bottom:1rem}
.bg-blue-50,.bg-red-50,.bg-green-50{font-weight:650;line-height:1.5;border-radius:14px}
.bg-green-50{background:#e9f9ef} .border-green-200{border-color:#b8ebc9} .text-green-700{color:#137a3e}
.bg-red-50{background:#fdedf0} .border-red-200{border-color:#f6c2cc} .text-red-700{color:#c01d3f}
.bg-blue-50{background:#ebf4ff} .border-blue-200{border-color:#bcd8fb} .text-blue-700{color:#1559b0}

/* ---------- 4. Background 3D bergerak ---------- */
.bg3d{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  background:
    radial-gradient(1100px 620px at 90% -8%,rgba(236,30,121,.10),transparent 60%),
    radial-gradient(900px 640px at -8% 22%,rgba(132,64,240,.08),transparent 60%),
    radial-gradient(1000px 700px at 55% 118%,rgba(36,135,240,.08),transparent 62%),
    #fdfbfd}
.bg3d::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(42,24,48,.07) 1px,transparent 1.3px);background-size:24px 24px;
  -webkit-mask-image:linear-gradient(180deg,#000 0%,transparent 75%);mask-image:linear-gradient(180deg,#000 0%,transparent 75%)}
.orb{position:absolute;border-radius:50%;
  background:radial-gradient(circle at 32% 28%,#fff 0 5%,var(--o1) 20%,var(--o2) 60%,var(--o3) 100%);
  box-shadow:inset -18px -26px 50px rgba(0,0,0,.14),inset 12px 16px 30px rgba(255,255,255,.55),0 60px 90px -45px var(--o2);
  animation:orbDrift var(--t,26s) ease-in-out infinite alternate;will-change:transform}
.orb.o1{width:360px;height:360px;top:-120px;right:-70px;--o1:#ffc6e1;--o2:#ff5fa8;--o3:#c8126a;opacity:.42;--t:28s}
.orb.o2{width:230px;height:230px;bottom:4%;left:-80px;--o1:#e7d6ff;--o2:#9b62f5;--o3:#5b22b8;opacity:.32;--t:32s}
.orb.o3{width:150px;height:150px;top:42%;right:5%;--o1:#d4ecff;--o2:#4aa8f5;--o3:#1460b8;opacity:.30;--t:24s;filter:blur(1px)}
.orb.o4{width:84px;height:84px;top:64%;left:23%;--o1:#fff3c9;--o2:#ffc23d;--o3:#d98a05;opacity:.26;--t:20s;filter:blur(2px)}
.orb.o5{width:120px;height:120px;bottom:-34px;right:36%;--o1:#cbfbf2;--o2:#2fd1bd;--o3:#0a7f71;opacity:.26;--t:30s;filter:blur(3px)}
@keyframes orbDrift{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(34px,-42px,0) scale(1.06)}100%{transform:translate3d(-24px,28px,0) scale(.95)}}
/* cincin 3D (torus) yang berputar pelan di latar */
.tor{position:absolute;border-radius:50%;pointer-events:none;
  background:conic-gradient(from 0deg,#ffd1e8,#ff5fa8,#b46cff,#5fb4ff,#5ff0dc,#ffd36b,#ffd1e8);
  -webkit-mask:radial-gradient(closest-side,transparent 63%,#000 65%,#000 97%,transparent 100%);mask:radial-gradient(closest-side,transparent 63%,#000 65%,#000 97%,transparent 100%);
  animation:torSpin var(--t,30s) linear infinite;will-change:transform}
.tor.t1{width:260px;height:260px;top:-70px;left:38%;opacity:.16;--t:34s}
.tor.t2{width:150px;height:150px;bottom:10%;right:12%;opacity:.16;--t:24s;animation-direction:reverse}
@keyframes torSpin{from{transform:perspective(900px) rotateX(66deg) rotateY(-10deg) rotateZ(0)}to{transform:perspective(900px) rotateX(66deg) rotateY(-10deg) rotateZ(360deg)}}

/* ---------- 5. Shell ---------- */
.shell{position:relative;z-index:1;display:grid;grid-template-columns:268px minmax(0,1fr);min-height:100vh}
.sidebar{position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:6px;padding:16px 16px 16px;
  background:rgba(255,255,255,.66);-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);
  border-right:1px solid rgba(236,30,121,.08);box-shadow:10px 0 34px -28px rgba(84,24,72,.4);z-index:30}
.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-thumb{background:rgba(236,30,121,.2);border-radius:99px}
.sidebar>*{flex-shrink:0}

/* Logo 3D showcase */
.logo-wrap{position:relative;display:block;width:166px;margin:0 auto 8px;padding-bottom:10px;perspective:700px}
.logo3d{position:relative;display:block;animation:logoFloat 7s ease-in-out infinite;will-change:transform;transform-style:preserve-3d}
.logo3d picture,.logo3d img{display:block;width:100%;height:auto}
.logo3d img{position:relative;z-index:1;filter:drop-shadow(0 12px 16px rgba(200,18,106,.30)) drop-shadow(0 2px 2px rgba(120,0,60,.18))}
.logo3d .glow{position:absolute;inset:12% 6% 16%;border-radius:50%;z-index:0;background:radial-gradient(closest-side,rgba(255,95,168,.55),rgba(255,95,168,0));filter:blur(16px);animation:glowPulse 4.2s ease-in-out infinite}
.logo3d .shine{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(105deg,rgba(255,255,255,0) 40%,rgba(255,255,255,.95) 50%,rgba(255,255,255,0) 60%) no-repeat;background-size:300% 100%;
  -webkit-mask:var(--logo-mask,url(/images/logo-lisya.webp)) center/contain no-repeat;mask:var(--logo-mask,url(/images/logo-lisya.webp)) center/contain no-repeat;
  animation:shineSweep 5s ease-in-out infinite;opacity:.85}
.logo-wrap .floor{position:absolute;left:20%;right:20%;bottom:0;height:12px;border-radius:50%;background:radial-gradient(closest-side,rgba(120,20,80,.30),transparent);filter:blur(3px);animation:floorPulse 6s ease-in-out infinite}
.spk{position:absolute;width:14px;height:14px;z-index:3;color:#fff;pointer-events:none;animation:twinkle 2.6s ease-in-out infinite}
.spk svg{width:100%;height:100%;filter:drop-shadow(0 0 4px rgba(255,79,158,.9)) drop-shadow(0 0 1px #fff)}
@keyframes logoFloat{0%,100%{transform:translateY(0) rotateY(-11deg) rotateX(3deg) rotate(-1deg)}50%{transform:translateY(-9px) rotateY(11deg) rotateX(-3deg) rotate(1deg)}}
@keyframes glowPulse{0%,100%{opacity:.5;transform:scale(.95)}50%{opacity:1;transform:scale(1.06)}}
@keyframes shineSweep{0%,35%{background-position:100% 0}75%,100%{background-position:0% 0}}
@keyframes floorPulse{0%,100%{transform:scaleX(1);opacity:.95}50%{transform:scaleX(.78);opacity:.55}}
@keyframes twinkle{0%,100%{opacity:0;transform:scale(.4) rotate(0)}45%{opacity:1;transform:scale(1.1) rotate(45deg)}70%{opacity:.6;transform:scale(.8) rotate(70deg)}}

/* Nav */
.nav{display:flex;flex-direction:column;gap:4px}
.nav-lbl{font-size:10.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);padding:10px 12px 4px}
.nav a{position:relative;display:flex;align-items:center;gap:12px;padding:7px 12px 7px 8px;border-radius:16px;color:var(--ink2);font-weight:650;font-size:14px;line-height:1.25;
  transition:background .25s,color .25s,transform .25s var(--ease),box-shadow .25s}
.nav .ico{width:40px;height:40px;border-radius:13px;--ex:3px}
.nav a:hover{background:rgba(255,255,255,.9);color:var(--ink);transform:translateX(3px);box-shadow:0 10px 20px -16px rgba(84,24,72,.45)}
.nav a.on{color:var(--pink-ink);background:linear-gradient(135deg,#ffffff,#fff3f9);box-shadow:0 0 0 1.5px var(--pink-line),0 14px 26px -16px rgba(236,30,121,.6)}
.nav a.on::after{content:"";margin-left:auto;width:8px;height:8px;border-radius:50%;background:var(--pink);box-shadow:0 0 0 4px rgba(236,30,121,.14),0 0 12px rgba(236,30,121,.7);animation:dotPulse 2s ease-in-out infinite}
@keyframes dotPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.35)}}
.side-card{margin-top:auto;position:relative;overflow:hidden;border-radius:18px;padding:15px;color:#fff;
  background:linear-gradient(140deg,#2a1830,#5a2552 60%,#7a2a62);box-shadow:0 18px 30px -18px rgba(42,24,48,.7)}
.side-card::before{content:"";position:absolute;inset:-40% -20% auto auto;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,rgba(255,95,168,.55),transparent 70%)}
.side-card .row{position:relative;display:flex;align-items:center;gap:11px}
.side-card h4{font-size:14px}.side-card p{font-size:11.5px;color:#f7d6ea;margin-top:2px}
.side-card .meter{position:relative;height:7px;border-radius:99px;background:rgba(255,255,255,.18);margin-top:12px;overflow:hidden}
.side-card .meter i{display:block;height:100%;width:72%;border-radius:99px;background:linear-gradient(90deg,#ffd778,#ff5fa8,#ec1e79);background-size:200% 100%;animation:flow 3s linear infinite}
@keyframes flow{to{background-position:-200% 0}}
.logout{display:flex;align-items:center;gap:11px;padding:10px 12px;margin-top:6px;border-radius:14px;color:#c0355f;font-weight:700;font-size:14px;transition:background .2s}
.logout:hover{background:#fdeaf1}.logout svg{width:20px;height:20px}

/* ---------- 6. Topbar ---------- */
.main{display:flex;flex-direction:column;min-width:0}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;padding:13px 28px;
  background:rgba(255,255,255,.62);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);border-bottom:1px solid rgba(236,30,121,.07)}
.menu-btn{display:none;width:44px;height:44px;border-radius:14px;border:1px solid var(--line);background:#fff;cursor:pointer;place-items:center}
.menu-btn svg{width:20px;height:20px}
.search{flex:1;max-width:460px;display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.92);border:1px solid var(--line);border-radius:16px;padding:0 15px;height:46px;
  box-shadow:0 10px 24px -20px rgba(84,24,72,.55);transition:border-color .2s,box-shadow .2s}
.search:focus-within{border-color:rgba(236,30,121,.4);box-shadow:0 0 0 4px rgba(236,30,121,.1)}
.search svg{width:18px;height:18px;color:var(--muted);flex:none}
.search input{border:0;outline:0;font-size:14px;width:100%;background:transparent}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px}
.bell{position:relative;width:46px;height:46px;border:1px solid var(--line);background:#fff;border-radius:15px;display:grid;place-items:center;cursor:pointer;color:var(--ink2);transition:transform .2s}
.bell:hover{transform:translateY(-2px)}.bell svg{width:20px;height:20px}
.bell .dot{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:99px;background:linear-gradient(180deg,#ff6b7d,#e01030);color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center;box-shadow:0 3px 0 #a10a24,0 6px 10px -3px rgba(224,16,48,.6);animation:bellDot 2.4s ease-in-out infinite}
@keyframes bellDot{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}
.me{display:flex;align-items:center;gap:11px;padding:4px 6px 4px 4px;border-radius:16px}
.avatar{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;color:#fff;background:linear-gradient(150deg,#ff9ccc,#ec1e79 65%);box-shadow:inset 0 2px 1px rgba(255,255,255,.6),0 3px 0 #b0105a,0 10px 18px -8px rgba(236,30,121,.6)}
.avatar.pp{background:linear-gradient(150deg,#d3b0ff,#8440f0 65%);box-shadow:inset 0 2px 1px rgba(255,255,255,.6),0 3px 0 #5b22b8,0 10px 18px -8px rgba(132,64,240,.6)}
.avatar svg{width:22px;height:22px}
.me b{font-size:14px;display:block;line-height:1.25}.me div>span{font-size:12px;color:var(--pink-ink);font-weight:700}
.me .avatar{color:#fff;animation:avaSwing 6s ease-in-out infinite}
@keyframes avaSwing{0%,100%{transform:perspective(300px) rotateY(0)}50%{transform:perspective(300px) rotateY(18deg) translateY(-2px)}}
.datepill{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:0 13px;height:46px;font-size:12.5px;font-weight:700;color:var(--ink2);white-space:nowrap}
.datepill>svg{width:18px;height:18px;color:var(--pink-ink);flex:none}
.datepill .ico{animation:none;transform:none}

/* ---------- 7. Konten & grid ---------- */
.wrap{position:relative;padding:26px 30px 48px;max-width:1240px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:22px}
/* Banner judul halaman + panggung 3D bergerak */
.pagehead{position:relative;display:flex;align-items:center;gap:18px;min-height:136px;padding:24px 270px 24px 26px;border-radius:28px;overflow:hidden;isolation:isolate;
  background:linear-gradient(115deg,rgba(255,255,255,.96),rgba(255,255,255,.78) 55%,rgba(255,255,255,.62));border:1px solid #fff;box-shadow:var(--sh-card);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3)}
.pagehead::before{content:"";position:absolute;z-index:-1;right:-70px;top:50%;width:400px;height:400px;margin-top:-200px;border-radius:50%;
  background:radial-gradient(closest-side,var(--c1,#ffc6e1),transparent 72%);opacity:.6;animation:glowPulse 6s ease-in-out infinite}
.pagehead::after{content:"";position:absolute;z-index:-1;top:0;bottom:0;right:0;width:46%;
  background-image:radial-gradient(rgba(42,24,48,.13) 1px,transparent 1.4px);background-size:16px 16px;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 60%);mask-image:linear-gradient(90deg,transparent,#000 60%)}
.pagehead>.ico{animation:icoTurn 7s ease-in-out infinite}
.ph-txt{position:relative;z-index:1;min-width:0;flex:1}
.pagehead h1{font-size:clamp(21px,2.2vw,27px);font-weight:800;letter-spacing:-.03em;line-height:1.15;text-wrap:balance}
.pagehead p{font-size:13.5px;color:var(--muted);margin-top:6px;line-height:1.55;max-width:620px}
.pagehead .act{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
@keyframes icoTurn{0%,100%{transform:perspective(360px) translateY(-2px) rotateY(-16deg) rotateX(4deg)}50%{transform:perspective(360px) translateY(-8px) rotateY(16deg) rotateX(-4deg)}}

.ph-scene{position:absolute;right:20px;top:50%;width:236px;height:136px;margin-top:-68px;perspective:700px;pointer-events:none;z-index:0}
.ph-scene .shadow{position:absolute;border-radius:50%;background:radial-gradient(closest-side,rgba(84,24,72,.22),transparent);filter:blur(2px);animation:shadowPulse 5s ease-in-out infinite}
.ph-scene .sh1{left:20px;bottom:6px;width:76px;height:16px}
.ph-scene .sh2{right:14px;bottom:14px;width:62px;height:13px;animation-duration:4.2s;animation-delay:-1.2s}
@keyframes shadowPulse{0%,100%{transform:scaleX(1);opacity:1}50%{transform:scaleX(.72);opacity:.55}}
.ph-scene .w{position:absolute;transform-style:preserve-3d;animation:bob 5s ease-in-out infinite}
.ph-scene .w1{left:34px;top:30px}
.ph-scene .w2{right:22px;top:10px;animation-duration:4.2s;animation-delay:-1.2s}
.ph-scene .w3{left:92px;top:58px;animation-duration:6s;animation-delay:-2.4s}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
/* kubus 3D */
.cube{position:relative;display:block;width:52px;height:52px;transform-style:preserve-3d;animation:cubeSpin 14s linear infinite}
.cube i{position:absolute;inset:0;border-radius:10px;background:linear-gradient(150deg,var(--c1),var(--c2));
  box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.42),inset 0 4px 6px rgba(255,255,255,.32)}
.cube i:nth-child(1){transform:translateZ(26px)}
.cube i:nth-child(2){transform:rotateY(180deg) translateZ(26px);background:linear-gradient(150deg,var(--c2),var(--d))}
.cube i:nth-child(3){transform:rotateY(90deg) translateZ(26px);background:linear-gradient(150deg,var(--c2),var(--d))}
.cube i:nth-child(4){transform:rotateY(-90deg) translateZ(26px)}
.cube i:nth-child(5){transform:rotateX(90deg) translateZ(26px);background:linear-gradient(150deg,#fff,var(--c1) 70%)}
.cube i:nth-child(6){transform:rotateX(-90deg) translateZ(26px);background:var(--d)}
@keyframes cubeSpin{from{transform:rotateX(-26deg) rotateY(0deg)}to{transform:rotateX(-26deg) rotateY(360deg)}}
/* bola kaca 3D */
.ball{display:block;width:60px;height:60px;border-radius:50%;
  background:radial-gradient(circle at 32% 28%,#fff 0 7%,var(--c1) 26%,var(--c2) 64%,var(--d) 100%);
  box-shadow:inset -7px -11px 18px rgba(0,0,0,.18),inset 6px 8px 14px rgba(255,255,255,.4),0 18px 26px -12px var(--g)}
/* cincin 3D */
.tring{display:block;width:86px;height:86px;border-radius:50%;
  background:conic-gradient(from 0deg,var(--c1),var(--c2),var(--d),var(--c2),var(--c1));
  -webkit-mask:radial-gradient(closest-side,transparent 55%,#000 57%,#000 98%,transparent);mask:radial-gradient(closest-side,transparent 55%,#000 57%,#000 98%,transparent);
  animation:tringSpin 8s linear infinite}
@keyframes tringSpin{from{transform:rotateX(64deg) rotateY(16deg) rotateZ(0)}to{transform:rotateX(64deg) rotateY(16deg) rotateZ(360deg)}}
.ph-scene .spk{width:13px;height:13px}
.grid{display:grid;gap:20px;align-items:start}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi5{display:grid;gap:18px;grid-template-columns:repeat(5,minmax(0,1fr))}
.r21{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
.r12{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr)}
.stretch{align-items:stretch}
.stack{display:flex;flex-direction:column;gap:20px}

/* ---------- 8. Kartu kaca + glare + masuk bertahap ---------- */
.card{position:relative;background:var(--glass);-webkit-backdrop-filter:blur(16px) saturate(1.35);backdrop-filter:blur(16px) saturate(1.35);
  border:1px solid rgba(255,255,255,.95);border-radius:var(--r-lg);padding:22px;box-shadow:var(--sh-card);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease);transform-style:preserve-3d}
.card:hover{box-shadow:var(--sh-card-hi)}
.card:not([data-tilt]):hover{transform:translateY(-3px)}
.card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(460px circle at var(--mx,50%) var(--my,-20%),rgba(255,255,255,.6),transparent 42%);opacity:0;transition:opacity .35s}
.card.is-tilt::after{opacity:1}
.card-h{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.card-h h2,.card-h h3{font-size:16px;font-weight:800;letter-spacing:-.01em}
.card-h .sub{font-size:12px;color:var(--muted);font-weight:600}
.card-h .end{margin-left:auto;display:flex;gap:8px;align-items:center}
.card-h .link{margin-left:auto;font-size:12.5px;font-weight:700;color:var(--pink-ink)}
@keyframes rise{from{opacity:0;transform:perspective(1100px) translateY(34px) rotateX(16deg) scale(.97)}to{opacity:1;transform:none}}
.wrap>.pagehead,.wrap>.card,.wrap>.hero3d,.grid>*,.kpi5>*,.stack>*{animation:rise .8s var(--ease) backwards}
.wrap>:nth-child(2){animation-delay:.06s}.wrap>:nth-child(3){animation-delay:.12s}.wrap>:nth-child(4){animation-delay:.18s}.wrap>:nth-child(5){animation-delay:.24s}.wrap>:nth-child(6){animation-delay:.3s}
.grid>:nth-child(2),.kpi5>:nth-child(2),.stack>:nth-child(2){animation-delay:.09s}
.grid>:nth-child(3),.kpi5>:nth-child(3),.stack>:nth-child(3){animation-delay:.18s}
.grid>:nth-child(4),.kpi5>:nth-child(4),.stack>:nth-child(4){animation-delay:.27s}
.grid>:nth-child(5),.kpi5>:nth-child(5){animation-delay:.36s}

/* ---------- 9. Ikon 3D ber-ketebalan ---------- */
.ico{--c1:#ff9ccc;--c2:#ec1e79;--d:#b0105a;--g:rgba(236,30,121,.45);--ex:4px;
  position:relative;display:inline-grid;place-items:center;flex:none;width:50px;height:50px;border-radius:16px;color:#fff;
  background:linear-gradient(150deg,var(--c1) 0%,var(--c2) 64%);
  box-shadow:inset 0 2px 1px rgba(255,255,255,.62),inset 0 -6px 10px rgba(0,0,0,.16),0 var(--ex) 0 var(--d),0 14px 22px -8px var(--g);
  transform:translateY(-2px);animation:icoFloat 5.5s ease-in-out infinite;will-change:transform}
.ico::before{content:"";position:absolute;left:9%;right:9%;top:5%;height:46%;border-radius:12px 12px 50% 50%/12px 12px 20px 20px;background:linear-gradient(180deg,rgba(255,255,255,.75),rgba(255,255,255,0));pointer-events:none}
.ico::after{content:"";position:absolute;width:22%;height:11%;left:18%;top:15%;border-radius:50%;background:rgba(255,255,255,.9);filter:blur(.6px);transform:rotate(-28deg);pointer-events:none}
.ico svg{position:relative;z-index:1;width:48%;height:48%;filter:drop-shadow(0 1.5px 1px rgba(0,0,0,.3))}
.ico.sm{width:36px;height:36px;border-radius:12px;--ex:3px}
.ico.lg{width:62px;height:62px;border-radius:20px;--ex:5px}
.ico.xl{width:78px;height:78px;border-radius:24px;--ex:6px}
.ico--pink{--c1:#ff9ccc;--c2:#ec1e79;--d:#a80f55;--g:rgba(236,30,121,.5)}
.ico--purple{--c1:#d6b6ff;--c2:#8440f0;--d:#5420b0;--g:rgba(132,64,240,.5)}
.ico--blue{--c1:#9fdbff;--c2:#2487f0;--d:#1258ad;--g:rgba(36,135,240,.5)}
.ico--green{--c1:#a2f2b8;--c2:#1fae4a;--d:#137432;--g:rgba(31,174,74,.5)}
.ico--coral{--c1:#ffb9a9;--c2:#ff4d63;--d:#c3253b;--g:rgba(255,77,99,.5)}
.ico--gold{--c1:#ffe391;--c2:#f5960f;--d:#b06505;--g:rgba(245,150,15,.5)}
.ico--teal{--c1:#a0f6ea;--c2:#0fb6a2;--d:#08776a;--g:rgba(15,182,162,.5)}
.ico--indigo{--c1:#b9c2ff;--c2:#4a5de8;--d:#2c3caa;--g:rgba(74,93,232,.5)}
.ico--rose{--c1:#ffc0e0;--c2:#ff4fa3;--d:#c21f72;--g:rgba(255,79,163,.5)}
@keyframes icoFloat{0%,100%{transform:perspective(320px) translateY(-2px) rotateY(0) rotate(0)}30%{transform:perspective(320px) translateY(-6px) rotateY(18deg) rotate(-2deg)}70%{transform:perspective(320px) translateY(-5px) rotateY(-14deg) rotate(1deg)}}
@keyframes icoPop{0%{transform:translateY(-2px)}55%{transform:translateY(-11px) rotate(-9deg) scale(1.1)}100%{transform:translateY(-6px) rotate(-5deg) scale(1.05)}}
.nav .ico{animation:none;transform:none}
.card:hover .ico,.nav a:hover .ico,.qa:hover .ico{animation:icoPop .65s cubic-bezier(.3,1.7,.5,1) both}
.kpi .ico{animation-duration:6s}.kpi:nth-child(2) .ico{animation-delay:-1.4s}.kpi:nth-child(3) .ico{animation-delay:-2.8s}.kpi:nth-child(4) .ico{animation-delay:-4.1s}.kpi:nth-child(5) .ico{animation-delay:-5s}

/* ---------- 10. Tombol 3D ---------- */
.btn{--c1:#ee3b8f;--c2:#c2166a;--d:#8a0d4a;--g:rgba(194,22,106,.45);
  display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:46px;padding:0 20px;border:0;border-radius:14px;cursor:pointer;
  font-family:var(--f-body);font-weight:750;font-size:14.5px;line-height:1;color:#fff;white-space:nowrap;position:relative;overflow:hidden;isolation:isolate;
  background:linear-gradient(180deg,var(--c1),var(--c2));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),inset 0 -2px 0 rgba(0,0,0,.12),0 4px 0 var(--d),0 14px 24px -12px var(--g);
  transform:translateY(0);transition:transform .14s ease,box-shadow .14s ease,filter .2s;-webkit-tap-highlight-color:transparent}
.btn svg{width:18px;height:18px;flex:none}
.btn::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;z-index:-1;background:linear-gradient(100deg,transparent,rgba(255,255,255,.38),transparent);transform:skewX(-18deg);animation:btnShine 4.5s ease-in-out infinite}
@keyframes btnShine{0%,62%{left:-60%}86%,100%{left:130%}}
.btn:hover{transform:translateY(-2px);filter:brightness(1.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.45),inset 0 -2px 0 rgba(0,0,0,.12),0 6px 0 var(--d),0 18px 28px -12px var(--g)}
.btn:active{transform:translateY(3px);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 1px 0 var(--d),0 6px 12px -8px var(--g)}
.btn-block{width:100%}
.btn--sm{min-height:36px;padding:0 14px;font-size:13px;border-radius:11px;box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 3px 0 var(--d),0 10px 18px -10px var(--g)}
.btn--sm:active{transform:translateY(2px);box-shadow:0 1px 0 var(--d)}
.btn--green{--c1:#2cbb5f;--c2:#138a42;--d:#0c6230;--g:rgba(19,138,66,.45)}
.btn--blue{--c1:#3a9bf6;--c2:#1666c9;--d:#0e4890;--g:rgba(22,102,201,.45)}
.btn--purple{--c1:#9f5ff7;--c2:#6e2fd6;--d:#4a1d99;--g:rgba(110,47,214,.45)}
.btn--teal{--c1:#16b8a4;--c2:#0b7f71;--d:#065a50;--g:rgba(11,127,113,.45)}
.btn--gold{--c1:#ffd36b;--c2:#f5a623;--d:#b87708;--g:rgba(245,166,35,.45);color:#3a2200}
.btn--ghost{--d:#f3cfe1;--g:rgba(236,30,121,.18);background:#fff;color:var(--pink-ink);box-shadow:inset 0 0 0 1.5px #f7cfe3,0 4px 0 var(--d),0 12px 20px -14px var(--g)}
.btn--ghost::after{display:none}
.btn--ghost:active{box-shadow:inset 0 0 0 1.5px #f7cfe3,0 1px 0 var(--d)}
.ripple{position:absolute;border-radius:50%;pointer-events:none;background:rgba(255,255,255,.55);transform:scale(0);animation:ripple .6s ease-out forwards;z-index:0}
.btn--ghost .ripple{background:rgba(236,30,121,.18)}
@keyframes ripple{to{transform:scale(4);opacity:0}}

/* ---------- 11. KPI ---------- */
.kpi{display:flex;flex-direction:column;gap:12px;overflow:hidden}
.kpi .top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.kpi .lbl{font-size:12.5px;color:var(--muted);font-weight:700;line-height:1.35;min-width:0}
.kpi .num{font-family:var(--f-disp);font-size:clamp(21px,2vw,28px);font-weight:700;letter-spacing:-.03em;line-height:1.05;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:clip;overflow-wrap:anywhere;padding-bottom:2px}
.kpi5 .kpi .num{font-size:clamp(17px,1.45vw,22px)}
.kpi>*{position:relative;z-index:1}
.kpi::before{content:"";position:absolute;z-index:0;left:-30%;top:-60%;width:46%;height:220%;transform:rotate(25deg);pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);animation:kpiSheen 7s ease-in-out infinite}
.kpi:nth-child(2)::before{animation-delay:1.2s}.kpi:nth-child(3)::before{animation-delay:2.4s}.kpi:nth-child(4)::before{animation-delay:3.6s}.kpi:nth-child(5)::before{animation-delay:4.8s}
@keyframes kpiSheen{0%,70%{left:-70%}100%{left:130%}}
.kpi .ico{animation-name:icoTurn}
.kpi .spark-line{height:34px;margin:-2px -4px -6px}
.delta{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:800;padding:5px 9px;border-radius:99px;width:fit-content}
.delta svg{width:10px;height:10px}
.up{color:#137a3e;background:#e7f8ed}.down{color:#c01d3f;background:#fdecef}.flat{color:#8a6510;background:#fdf3dc}

/* ---------- 12. Form ---------- */
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:15px}
.field label,.flabel{font-size:12.5px;font-weight:750;color:var(--ink2)}
.inp{position:relative;display:flex;align-items:center;gap:9px;border:1.5px solid var(--line);border-radius:14px;padding:0 14px;min-height:48px;background:rgba(255,255,255,.95);
  box-shadow:inset 0 2px 4px rgba(84,24,72,.04);transition:border-color .2s,box-shadow .2s}
.inp:focus-within{border-color:rgba(236,30,121,.55);box-shadow:0 0 0 4px rgba(236,30,121,.1)}
.inp .pre{color:var(--muted);font-weight:800;font-size:13.5px;flex:none}
.inp input,.inp select,.inp textarea{border:0;outline:0;width:100%;min-height:44px;font-size:14px;background:transparent;color:var(--ink)}
.inp textarea{padding:12px 0;min-height:120px;resize:vertical;line-height:1.6}
.inp select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:26px}
.inp.sel::after{content:"";position:absolute;right:16px;top:50%;width:8px;height:8px;border-right:2px solid var(--ink2);border-bottom:2px solid var(--ink2);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.inp .eye{border:0;background:transparent;cursor:pointer;color:var(--muted);display:grid;place-items:center;padding:4px}
.file-drop{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:14px;border:2px dashed rgba(236,30,121,.28);border-radius:16px;padding:14px;background:linear-gradient(180deg,#fff9fc,#fff);transition:border-color .2s,background .2s}
.file-drop:hover{border-color:rgba(236,30,121,.55);background:#fff5fa}
input[type=file]{font-size:13px;color:var(--ink2);width:100%}
input[type=file]::file-selector-button{margin-right:12px;padding:10px 15px;border:0;border-radius:11px;font-weight:750;font-size:13px;color:#fff;cursor:pointer;background:linear-gradient(180deg,#ee3b8f,#c2166a);box-shadow:0 3px 0 #8a0d4a}
.toggle{position:relative;width:52px;height:30px;border-radius:99px;border:0;padding:0;cursor:pointer;flex:none;background:#e7dceb;box-shadow:inset 0 2px 4px rgba(0,0,0,.12);transition:background .25s}
.toggle i{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:linear-gradient(180deg,#fff,#f1e9f3);box-shadow:0 2px 0 #c9bccf,0 4px 8px rgba(0,0,0,.18);transition:left .25s var(--ease)}
.toggle.on{background:linear-gradient(180deg,#2cbb5f,#138a42);box-shadow:inset 0 2px 4px rgba(0,0,0,.18)}
.toggle.on i{left:25px}
.seg{display:flex;gap:12px;flex-wrap:wrap}
.seg .opt{flex:1;min-width:180px;display:flex;align-items:center;gap:10px;padding:13px 14px;border-radius:15px;border:1.5px solid var(--line);font-weight:750;font-size:13.5px;cursor:pointer;background:#fff;transition:.2s}
.seg .opt .rb{width:19px;height:19px;border-radius:50%;border:2px solid #f2b7d4;display:grid;place-items:center;flex:none}
.seg .opt.on{border-color:rgba(236,30,121,.5);background:var(--pink-soft);box-shadow:0 10px 20px -16px rgba(236,30,121,.6)}
.seg .opt.on .rb{border-color:var(--pink)}.seg .opt.on .rb::after{content:"";width:9px;height:9px;border-radius:50%;background:var(--pink)}
.statusbar{border-radius:14px;padding:13px 15px;font-size:13px;font-weight:650;line-height:1.5}
.st-pink{background:var(--pink-soft);border:1px solid #f7cfe3;color:var(--pink-ink)}
.st-info{background:#ebf4ff;border:1px solid #bcd8fb;color:#1559b0}
.st-ok{background:#e9f9ef;border:1px solid #b8ebc9;color:#137a3e}
.st-err{background:#fdedf0;border:1px solid #f6c2cc;color:#c01d3f}
.st-warn{background:#fff7e6;border:1px solid #f8dca2;color:#8a6510}
.statusbar{margin-top:14px;word-wrap:break-word}
.statusbar:first-child,.card-h+.statusbar{margin-top:0}

/* ---------- 13. Tabel ---------- */
.tbl-wrap{overflow-x:auto;margin:0 -4px;padding:0 4px}
.ptable{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}
.ptable thead th{text-align:left;color:var(--muted);font-weight:800;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:0 14px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.ptable td{padding:13px 14px;border-bottom:1px solid var(--line2);color:var(--ink2);font-weight:600;vertical-align:middle}
.ptable tbody tr{transition:background .2s;animation:rowIn .6s var(--ease) backwards}
.ptable tbody tr:nth-child(2){animation-delay:.05s}.ptable tbody tr:nth-child(3){animation-delay:.1s}.ptable tbody tr:nth-child(4){animation-delay:.15s}.ptable tbody tr:nth-child(5){animation-delay:.2s}
.ptable tbody tr:nth-child(6){animation-delay:.25s}.ptable tbody tr:nth-child(7){animation-delay:.3s}.ptable tbody tr:nth-child(8){animation-delay:.35s}.ptable tbody tr:nth-child(9){animation-delay:.4s}.ptable tbody tr:nth-child(n+10){animation-delay:.45s}
@keyframes rowIn{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
.ptable tbody tr:hover td{background:rgba(255,240,247,.7)}
.ptable tbody tr:last-child td{border-bottom:0}
.ptable .r{text-align:right}
#leaderboard-body td,#team-table-body td,#inbox-table-body td{padding:13px 14px;border-bottom:1px solid var(--line2)}
#leaderboard-body tr:nth-child(-n+3) td:first-child::before{content:"";display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:9px;vertical-align:-1px;box-shadow:0 2px 0 rgba(0,0,0,.18),inset 0 1px 1px rgba(255,255,255,.8)}
#leaderboard-body tr:nth-child(1) td:first-child::before{background:linear-gradient(150deg,#ffe391,#f5960f)}
#leaderboard-body tr:nth-child(2) td:first-child::before{background:linear-gradient(150deg,#eef1f7,#9aa3b6)}
#leaderboard-body tr:nth-child(3) td:first-child::before{background:linear-gradient(150deg,#ffc6b3,#d9714c)}
.empty-row td{text-align:center;color:var(--muted);padding:26px!important;font-weight:600}
.rank{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;font-weight:800;font-size:12px;color:#fff;box-shadow:inset 0 1px 1px rgba(255,255,255,.6),0 2px 0 rgba(0,0,0,.15)}
.r1{background:linear-gradient(150deg,#ffe391,#f5960f)}.r2{background:linear-gradient(150deg,#e9edf5,#9aa3b6)}.r3{background:linear-gradient(150deg,#ffc6b3,#d9714c)}.rn{background:#f3ecf4;color:var(--ink2);box-shadow:none}
.ava2{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;color:#fff;font-size:12.5px;font-weight:800;flex:none;box-shadow:inset 0 1px 1px rgba(255,255,255,.6),0 2px 0 rgba(0,0,0,.14)}
.cell{display:flex;align-items:center;gap:10px}
.pct,.ptable td.pct{font-weight:800;color:var(--pink-ink)}.good,.ptable td.good{color:#137a3e;font-weight:800}.bad,.ptable td.bad{color:#c01d3f;font-weight:800}
/* papan peringkat & tim (baris diisi script asli) — medali & avatar 3D murni CSS */
#leaderboard-body td:first-child{font-family:var(--f-disp);font-size:13px;font-weight:700;white-space:nowrap}
#leaderboard-body tr:nth-child(-n+3) td:first-child::before{width:26px;height:26px;margin-right:10px;vertical-align:-8px;
  box-shadow:inset 0 2px 1px rgba(255,255,255,.75),inset 0 -3px 4px rgba(0,0,0,.18),0 3px 0 rgba(0,0,0,.16),0 8px 12px -6px rgba(0,0,0,.3);animation:medal 4s ease-in-out infinite}
#leaderboard-body tr:nth-child(2) td:first-child::before{animation-delay:-1.3s}#leaderboard-body tr:nth-child(3) td:first-child::before{animation-delay:-2.6s}
@keyframes medal{0%,100%{transform:perspective(200px) rotateY(0)}50%{transform:perspective(200px) rotateY(180deg)}}
#leaderboard-body tr:nth-child(n+4) td:first-child{color:var(--muted)}
#leaderboard-body tr:nth-child(n+4) td:first-child{padding-left:50px}
#leaderboard-body td:nth-child(2),#team-table-body td:first-child,#inbox-table-body td:first-child{white-space:nowrap}
#leaderboard-body td:nth-child(2)::before,#team-table-body td:first-child::before,#inbox-table-body tr:not(.empty-row) td:first-child::before{content:"";display:inline-block;width:32px;height:32px;margin-right:11px;vertical-align:-11px;border-radius:10px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.3' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8.5' r='3.6'/%3E%3Cpath d='M5.5 19.5a6.5 6.5 0 0 1 13 0'/%3E%3C/svg%3E") center/17px no-repeat,linear-gradient(150deg,var(--a1,#ff9ccc),var(--a2,#ec1e79));
  box-shadow:inset 0 1px 1px rgba(255,255,255,.6),0 2px 0 rgba(0,0,0,.14),0 8px 12px -8px var(--a2,#ec1e79)}
#leaderboard-body tr:nth-child(5n+2),#team-table-body tr:nth-child(5n+2),#inbox-table-body tr:nth-child(5n+2){--a1:#d6b6ff;--a2:#8440f0}
#leaderboard-body tr:nth-child(5n+3),#team-table-body tr:nth-child(5n+3),#inbox-table-body tr:nth-child(5n+3){--a1:#9fdbff;--a2:#2487f0}
#leaderboard-body tr:nth-child(5n+4),#team-table-body tr:nth-child(5n+4),#inbox-table-body tr:nth-child(5n+4){--a1:#a0f6ea;--a2:#0fb6a2}
#leaderboard-body tr:nth-child(5n+5),#team-table-body tr:nth-child(5n+5),#inbox-table-body tr:nth-child(5n+5){--a1:#ffe391;--a2:#f5960f}
#leaderboard-body td:nth-child(3){font-weight:800;color:#137a3e}
#leaderboard-body td:nth-child(2),#team-table-body td:first-child,#inbox-table-body td:first-child{color:var(--ink);font-weight:750}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:800;padding:5px 10px;border-radius:99px;white-space:nowrap}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.bg-on{color:#137a3e;background:#e7f8ed}.bg-pr{color:#1559b0;background:#e8f1fe}.bg-wt{color:#8a6510;background:#fdf3dc}.bg-no{color:#c01d3f;background:#fdecef}
.tag{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:800;padding:5px 10px;border-radius:99px;background:#f4edf5;color:var(--ink2);white-space:nowrap}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;padding:6px 11px;border-radius:99px;background:var(--pink-soft);color:var(--pink-ink);border:1px solid #f7d3e5;cursor:pointer;transition:transform .15s}
.chip:hover{transform:translateY(-1px)}

/* ---------- 14. Grafik ---------- */
.legend{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.legend span{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--ink2)}
.legend i{width:11px;height:11px;border-radius:4px}
.chart-wrap{position:relative}
.lc{width:100%;height:240px;display:block;overflow:visible}
.lc .draw{stroke-dasharray:1400;stroke-dashoffset:1400;animation:draw 2.2s var(--ease) .3s forwards}
.lc .area{opacity:0;animation:fadeIn 1.2s ease 1s forwards}
@keyframes draw{to{stroke-dashoffset:0}}@keyframes fadeIn{to{opacity:1}}
.axis{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;font-weight:650;margin-top:8px;padding:0 4px}
.tip{position:absolute;left:51%;top:6%;background:linear-gradient(160deg,#3a2140,#241328);color:#fff;border-radius:12px;padding:9px 12px;font-size:11px;font-weight:650;line-height:1.55;
  box-shadow:0 4px 0 #120812,0 16px 26px -10px rgba(0,0,0,.5);white-space:nowrap;animation:tipBob 3s ease-in-out infinite}
.tip .pk{color:#ff9ecf}.tip .pu{color:#cdb0ff}.tip .gr{color:#8ff0a8}.tip .go{color:#ffd36b}
@keyframes tipBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.donut{position:relative;width:170px;height:170px;border-radius:50%;margin:6px auto;animation:donutIn 1.4s var(--ease) both;
  box-shadow:0 18px 30px -16px rgba(84,24,72,.45),inset 0 -6px 12px rgba(0,0,0,.12)}
.donut::before{content:"";position:absolute;inset:26px;background:radial-gradient(circle at 40% 35%,#fff,#faf4f9);border-radius:50%;box-shadow:inset 0 3px 10px rgba(84,24,72,.16),0 1px 0 #fff}
.donut::after{content:"";position:absolute;inset:0;border-radius:50%;background:linear-gradient(180deg,rgba(255,255,255,.35),transparent 45%);pointer-events:none}
.donut .ctr{position:absolute;inset:0;display:grid;place-content:center;text-align:center;z-index:1}
@keyframes donutIn{from{transform:rotate(-120deg) scale(.6);opacity:0}to{transform:none;opacity:1}}
.lg-row{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.lg-item{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700}
.lg-item .sw{width:12px;height:12px;border-radius:4px;flex:none;box-shadow:0 2px 0 rgba(0,0,0,.15)}
.lg-item .v{margin-left:auto;font-weight:800}
.bars{display:flex;align-items:flex-end;gap:8px;height:170px;padding-top:10px}
.bars .grp{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px}
.bars .pair{display:flex;gap:4px;align-items:flex-end;height:148px}
.bars .b{width:13px;border-radius:7px 7px 3px 3px;transform-origin:bottom;animation:grow 1.1s var(--ease) backwards;box-shadow:inset 0 2px 1px rgba(255,255,255,.5),0 3px 0 rgba(0,0,0,.12)}
.bars .grp:nth-child(2) .b{animation-delay:.08s}.bars .grp:nth-child(3) .b{animation-delay:.16s}.bars .grp:nth-child(4) .b{animation-delay:.24s}.bars .grp:nth-child(5) .b{animation-delay:.32s}.bars .grp:nth-child(6) .b{animation-delay:.4s}.bars .grp:nth-child(7) .b{animation-delay:.48s}
@keyframes grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.b-new{background:linear-gradient(180deg,#b9c2ff,#4a5de8)}.b-act{background:linear-gradient(180deg,#ff9ccc,#ec1e79)}
.bars .lab{font-size:10.5px;color:var(--muted);font-weight:650}

/* ---------- 15. Komponen kecil ---------- */
.feed{display:flex;flex-direction:column;gap:2px}
.feed-i{display:flex;gap:12px;align-items:center;padding:10px 6px;border-radius:14px;transition:background .2s}
.feed-i:hover{background:rgba(255,240,247,.8)}
.feed-i .tx{flex:1;font-size:12.5px;color:var(--ink2);line-height:1.45}.feed-i .tx b{color:var(--ink);font-weight:800}
.feed-i .tm{display:block;font-size:11px;color:var(--muted);margin-top:2px}
.wait{font-size:10.5px;font-weight:800;color:#8a6510;background:#fdf3dc;padding:4px 8px;border-radius:99px}
.status-i{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line2)}
.status-i:last-child{border-bottom:0}
.status-i .meta{line-height:1.3}.status-i .meta b{font-size:13.5px;font-weight:800}.status-i .meta span{font-size:11.5px;color:var(--muted)}
.status-i .st{margin-left:auto;font-size:11.5px;font-weight:800;padding:5px 11px;border-radius:99px}
.on-ok{color:#137a3e;background:#e7f8ed}.on-nm{color:#1559b0;background:#e8f1fe}.on-pr{color:#8a6510;background:#fdf3dc}.on-cl{color:#0b6b60;background:#e2f7f3}
.live{position:relative;display:inline-block;width:8px;height:8px;border-radius:50%;background:#1fae4a;margin-right:6px}
.live::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid #1fae4a;animation:ping 1.8s ease-out infinite}
@keyframes ping{from{transform:scale(.5);opacity:1}to{transform:scale(1.8);opacity:0}}
.info{display:flex;gap:12px;align-items:flex-start;border:1px solid #f7d3e5;background:linear-gradient(180deg,#fff7fb,#fff);border-radius:16px;padding:14px 16px}
.info .tx{font-size:13px;color:var(--ink2);line-height:1.55}.info .tx b{color:var(--ink)}
.mini4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.mini4 .m{border:1px solid var(--line);border-radius:16px;padding:12px;text-align:center;background:rgba(255,255,255,.9)}
.mini4 .m b{font-family:var(--f-disp);font-size:18px;font-weight:700;display:block}
.mini4 .m span{font-size:11px;color:var(--muted);font-weight:650}
.pq{display:flex;flex-direction:column;gap:16px}
.pq .it{display:flex;align-items:center;gap:14px}
.pq .it .meta{flex:1;min-width:0}.pq .it .meta b{font-size:13.5px;font-weight:800}.pq .it .meta span{font-size:12px;color:var(--muted)}
.bar{height:10px;border-radius:99px;background:#f2e7ef;overflow:hidden;margin-top:9px;box-shadow:inset 0 1px 2px rgba(0,0,0,.08)}
.bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#ff5fa8,#ec1e79);position:relative;overflow:hidden;animation:fillIn 1.6s var(--ease) backwards}
.bar i::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(-45deg,rgba(255,255,255,.28) 0 8px,transparent 8px 16px);animation:stripes 1s linear infinite}
.bar i.done{background:linear-gradient(90deg,#2cbb5f,#8ff0a8)}
@keyframes fillIn{from{width:0!important}}@keyframes stripes{to{background-position:22px 0}}
.pqp{font-size:12px;font-weight:800;min-width:72px;text-align:right}
.media{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.media .m{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#fff;transition:transform .3s var(--ease),box-shadow .3s}
.media .m:hover{transform:translateY(-4px) rotate(-.6deg);box-shadow:0 20px 34px -22px rgba(120,30,90,.45)}
.media .th{height:100px;display:grid;place-items:center;color:#fff;position:relative}
.media .th svg{width:30px;height:30px;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25))}
.media .th .pill{position:absolute;top:8px;left:8px;font-size:10px;font-weight:800;background:rgba(255,255,255,.92);color:var(--ink);padding:3px 8px;border-radius:99px}
.media .mt{padding:10px 12px}.media .mt b{font-size:12.5px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media .mt span{font-size:11px;color:var(--muted)}
.tabs{display:inline-flex;gap:4px;background:#f8f1f7;border:1px solid var(--line);border-radius:14px;padding:4px}
.tabs button{border:0;background:transparent;padding:8px 14px;border-radius:10px;font-weight:750;font-size:13px;color:var(--ink2);cursor:pointer;transition:.2s}
.tabs button.on{background:linear-gradient(180deg,#ee3b8f,#c2166a);color:#fff;box-shadow:0 3px 0 #8a0d4a}
.qa{display:flex;align-items:center;gap:14px;padding:16px;border-radius:18px;border:1px solid var(--line);background:rgba(255,255,255,.9);transition:transform .3s var(--ease),box-shadow .3s}
.qa:hover{transform:translateY(-3px);box-shadow:0 20px 34px -24px rgba(120,30,90,.45)}
.qa .tx{flex:1}.qa .tx b{font-size:14.5px;font-weight:800;display:block}.qa .tx span{font-size:12px;color:var(--muted)}
.steps{position:relative;display:flex;flex-direction:column;gap:18px}
.steps::before{content:"";position:absolute;left:25px;top:30px;bottom:30px;width:3px;border-radius:3px;background:linear-gradient(180deg,#9fdbff,#ffe391,#a2f2b8);opacity:.9}
.step{position:relative;display:flex;gap:14px;align-items:flex-start}
.step b{display:block;font-size:14.5px;font-weight:800;margin-top:4px}.step>div>span{display:block;font-size:12.5px;color:var(--muted);line-height:1.5;margin-top:3px}
.step>.ico{z-index:1}
.step:nth-child(2)>.ico{animation-delay:-1.8s}.step:nth-child(3)>.ico{animation-delay:-3.6s}
.step .no{font-family:var(--f-disp);font-size:11px;font-weight:700;color:var(--pink-ink);background:var(--pink-soft);border-radius:99px;padding:3px 8px;margin-right:6px}

/* ---------- 16. Hero 3D (beranda) dengan orbit ---------- */
.hero3d{position:relative;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:10px;align-items:center;padding:30px 36px;border-radius:30px;overflow:hidden;
  background:linear-gradient(135deg,rgba(255,255,255,.92),rgba(255,243,249,.78));border:1px solid #fff;box-shadow:var(--sh-card-hi);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
.hero3d::before{content:"";position:absolute;width:520px;height:520px;right:-140px;top:-180px;border-radius:50%;background:conic-gradient(from 0deg,rgba(236,30,121,.18),rgba(132,64,240,.14),rgba(36,135,240,.12),rgba(245,150,15,.12),rgba(236,30,121,.18));filter:blur(40px);animation:spin 22s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.hero3d .txt{position:relative;z-index:2}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:800;color:var(--pink-ink);background:#fff;border:1px solid #f7d3e5;padding:7px 13px;border-radius:99px;box-shadow:0 8px 16px -12px rgba(236,30,121,.6)}
.eyebrow svg{width:14px;height:14px}
.hero3d h1{font-family:var(--f-disp);font-size:clamp(24px,2.6vw,34px);line-height:1.12;letter-spacing:-.035em;font-weight:800;margin:14px 0 10px;text-wrap:balance}
.hero3d p{font-size:14.5px;color:var(--ink2);line-height:1.6;max-width:480px}
.hero3d .cta{display:flex;gap:12px;margin-top:20px;flex-wrap:wrap}
.stage{position:relative;height:330px;perspective:900px;transform-style:preserve-3d;transition:transform .3s var(--ease)}
.stage .core{position:absolute;left:50%;top:50%;width:226px;margin:-140px 0 0 -113px;z-index:2}
.stage .core .logo-wrap{width:100%;margin:0}
/* orbit di "alas" logo: satelit lewat di depan bagian bawah & di belakang logo (3D), tidak menutupi tulisan logo */
.arm{position:absolute;left:50%;top:calc(50% + 70px);width:0;height:0;z-index:3;animation:orbit 16s linear infinite;animation-delay:var(--dl,0s)}
.arm .sat{position:absolute;left:168px;top:0;transform:translate(-50%,-50%)}
.arm .tw{display:block;animation:counter 16s linear infinite;animation-delay:var(--dl,0s)}
.arm .tw .ico{animation:none;transform:none}
@keyframes orbit{0%{transform:scaleY(.4) rotate(0deg);z-index:3}49.9%{z-index:3}50%{z-index:1}99.9%{z-index:1}100%{transform:scaleY(.4) rotate(360deg);z-index:3}}
@keyframes counter{0%{transform:rotate(0deg) scaleY(2.5) scale(1);filter:none}25%{transform:rotate(-90deg) scaleY(2.5) scale(1.2);filter:none}50%{transform:rotate(-180deg) scaleY(2.5) scale(1);filter:none}75%{transform:rotate(-270deg) scaleY(2.5) scale(.72);filter:blur(.6px) saturate(.8)}100%{transform:rotate(-360deg) scaleY(2.5) scale(1);filter:none}}
.ring-floor{position:absolute;left:50%;top:50%;width:360px;height:140px;margin:0 0 0 -180px;border-radius:50%;z-index:0;
  background:radial-gradient(closest-side,rgba(236,30,121,.14),rgba(236,30,121,0) 70%);border:1.5px dashed rgba(236,30,121,.22);animation:ringSpin 30s linear infinite}
@keyframes ringSpin{to{transform:rotate(360deg)}}

/* ---------- 17. Kartu dompet 3D (saldo) & tiket referral ---------- */
.wallet{position:relative;overflow:hidden;border-radius:26px;padding:24px;color:#fff;min-height:210px;display:flex;flex-direction:column;justify-content:space-between;
  background:linear-gradient(135deg,#2a1830 0%,#5a2552 45%,#a01e66 100%);
  box-shadow:0 1px 0 rgba(255,255,255,.2) inset,0 30px 50px -26px rgba(84,24,72,.75),0 6px 0 #1c0f20;transform-style:preserve-3d;transition:transform .4s var(--ease)}
.wallet::before{content:"";position:absolute;inset:-50%;background:conic-gradient(from 0deg,transparent 0 60%,rgba(255,160,210,.35) 70%,rgba(160,120,255,.3) 78%,transparent 90%);animation:spin 9s linear infinite;mix-blend-mode:screen}
.wallet::after{content:"";position:absolute;inset:0;background:radial-gradient(420px circle at var(--mx,70%) var(--my,10%),rgba(255,255,255,.28),transparent 45%);pointer-events:none}
.wallet>*{position:relative;z-index:1}
.wallet .w-top{display:flex;align-items:center;justify-content:space-between}
.wallet .chipc{width:46px;height:34px;border-radius:8px;background:linear-gradient(135deg,#ffe9a8,#e0a93c 50%,#fff1c8);box-shadow:inset 0 0 0 1px rgba(120,80,0,.35),0 3px 0 rgba(0,0,0,.25)}
.wallet .brand-s{font-family:var(--f-disp);font-size:13px;font-weight:700;letter-spacing:.06em;opacity:.95}
.wallet .lbl{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#f7d6ea;font-weight:700}
.wallet .amt{font-family:var(--f-disp);font-size:clamp(30px,3.4vw,40px);font-weight:800;letter-spacing:-.03em;margin-top:6px;text-shadow:0 3px 0 rgba(0,0,0,.25)}
.wallet .w-bot{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:#f7d6ea;font-weight:650;letter-spacing:.08em}
.refcard{position:relative;overflow:hidden;border-radius:26px;padding:24px;color:#fff;
  background:linear-gradient(135deg,#ec1e79 0%,#b5179e 50%,#6e2fd6 100%);box-shadow:0 30px 50px -26px rgba(181,23,158,.7),0 6px 0 #5a1270;transition:transform .4s var(--ease)}
.refcard::before{content:"";position:absolute;inset:-50%;background:conic-gradient(from 90deg,transparent 0 55%,rgba(255,255,255,.28) 65%,transparent 80%);animation:spin 8s linear infinite;mix-blend-mode:overlay}
.refcard>*{position:relative;z-index:1}
.refcard .lbl{font-size:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:800;opacity:.9}
.refcode{display:flex;align-items:center;gap:12px;margin:12px 0 18px;padding:14px 16px;border-radius:18px;background:rgba(255,255,255,.16);border:1.5px dashed rgba(255,255,255,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.refcode>svg{width:24px;height:24px;flex:none;opacity:.95}
.refcode code{font-family:var(--f-disp);font-size:clamp(20px,2.3vw,26px);font-weight:800;letter-spacing:.04em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.copy-btn{border:0;cursor:pointer;display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border-radius:12px;background:#fff;color:var(--pink-ink);font-weight:800;font-size:12.5px;box-shadow:0 3px 0 rgba(0,0,0,.2);transition:transform .15s}
.copy-btn:active{transform:translateY(2px)}.copy-btn svg{width:15px;height:15px}
.refcard .share{display:flex;gap:10px;flex-wrap:wrap}
.refcard .btn--white{--d:rgba(0,0,0,.25);background:#fff;color:var(--pink-ink);box-shadow:0 4px 0 var(--d),0 12px 20px -12px rgba(0,0,0,.4)}
.refcard .btn--white::after{display:none}
.sumchips{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- 18. QR placeholder (broadcast) ---------- */
.qrbox{width:220px;height:220px;border-radius:22px;padding:14px;background:#fff;border:1px solid var(--line);box-shadow:0 6px 0 #f1e3ee,0 24px 40px -24px rgba(84,24,72,.5);margin:0 auto;display:grid;place-items:center}
.qrbox img{max-width:100%;max-height:100%;border-radius:8px}
.qr-stage{position:relative;margin:24px auto 4px;width:220px;height:300px;perspective:900px}
.qr-stage .floor{position:absolute;left:18%;right:18%;bottom:0;height:18px;border-radius:50%;background:radial-gradient(closest-side,rgba(84,24,72,.28),transparent);filter:blur(2px);animation:shadowPulse 4.5s ease-in-out infinite}
.qr-ph{position:absolute;left:50%;top:0;margin-left:-92px;width:184px;height:270px;border-radius:32px;background:linear-gradient(160deg,#4a2a52,#1d0f22 70%);padding:11px;
  box-shadow:inset 0 1px 1px rgba(255,255,255,.25),inset 0 0 0 1.5px rgba(255,255,255,.08),0 7px 0 #12070f,0 30px 46px -24px rgba(42,24,48,.8);
  transform-style:preserve-3d;animation:phone3d 6s ease-in-out infinite}
.qr-ph::before{content:"";position:absolute;top:16px;left:50%;width:46px;height:6px;margin-left:-23px;border-radius:99px;background:#12070f;z-index:2}
.qr-ph .scr{position:relative;height:100%;border-radius:22px;overflow:hidden;background:linear-gradient(180deg,#fff,#fdf2f8);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}
.qr-ph .scr::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,rgba(255,255,255,0) 30%,rgba(255,255,255,.7) 45%,rgba(255,255,255,0) 60%);background-size:250% 100%;animation:shineSweep 5s ease-in-out infinite;pointer-events:none}
.qr-ph .qr{width:118px;height:118px;padding:8px;border-radius:14px;background:#fff;box-shadow:0 0 0 1px #f3e2ec,0 10px 18px -12px rgba(84,24,72,.5)}
.qr-ph .qr svg{display:block;width:100%;height:100%}
.qr-ph .scan{position:absolute;left:12%;right:12%;height:3px;border-radius:3px;background:linear-gradient(90deg,transparent,#ec1e79,transparent);box-shadow:0 0 14px #ec1e79;animation:scan 2.4s ease-in-out infinite}
.qr-ph .cap{font-size:11px;font-weight:800;color:var(--pink-ink);display:flex;align-items:center;gap:6px}
.qr-ph .cap svg{width:14px;height:14px;color:#1fae4a;flex:none}
#qr-container:not(.hidden)+.qr-stage{display:none}
.col-flex{display:flex;flex-direction:column}
.col-flex>.qr-stage{margin:auto}
.col-flex>.btn{margin-bottom:22px}
@keyframes scan{0%,100%{top:24%}50%{top:62%}}
@keyframes phone3d{0%,100%{transform:translateY(0) rotateY(-16deg) rotateX(6deg) rotateZ(-2deg)}50%{transform:translateY(-10px) rotateY(16deg) rotateX(-2deg) rotateZ(2deg)}}
@keyframes phoneBob{0%,100%{transform:perspective(900px) translateY(0) rotateY(-10deg) rotateZ(-1deg)}50%{transform:perspective(900px) translateY(-8px) rotateY(10deg) rotateZ(1deg)}}

/* ---------- 19. Slideshow (beranda) ---------- */
.slide-stage{position:relative;overflow:hidden;border-radius:20px;padding:26px 28px;min-height:132px;display:flex;align-items:center;gap:20px;
  background:linear-gradient(120deg,#fff4fa,#f3eeff 55%,#ecf6ff);border:1px solid #fff;box-shadow:inset 0 1px 0 #fff}
.slide-stage .art{display:flex;gap:-6px;flex:none}
.slide-stage .art .ico{margin-left:-10px}.slide-stage .art .ico:first-child{margin-left:0}
#slide-content{font-family:var(--f-disp);font-size:clamp(15px,1.6vw,19px);font-weight:700;letter-spacing:-.02em;line-height:1.35;color:var(--ink)}
#slide-content.swap{animation:slideSwap .6s var(--ease)}
@keyframes slideSwap{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.slide-foot{display:flex;align-items:center;gap:14px;margin-top:14px}
.dots8{display:flex;gap:7px}
.dots8 i{width:8px;height:8px;border-radius:99px;background:#efd9e7;transition:width .35s var(--ease),background .35s}
.dots8 i.on{width:24px;background:linear-gradient(90deg,#ff5fa8,#ec1e79)}
.sprog{flex:1;height:4px;border-radius:99px;background:#f3e5ee;overflow:hidden}
.sprog i{display:block;height:100%;width:100%;transform-origin:left;background:linear-gradient(90deg,#ff5fa8,#8440f0);animation:sprog 4s linear forwards}
@keyframes sprog{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- 20. Profil ---------- */
.profile{text-align:center}
.pava{position:relative;width:118px;height:118px;margin:4px auto 14px;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(from 0deg,#ff5fa8,#8440f0,#2487f0,#0fb6a2,#f5960f,#ff5fa8);animation:spin 6s linear infinite;box-shadow:0 18px 30px -16px rgba(236,30,121,.6)}
.pava .in{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(150deg,#ff9ccc,#ec1e79 65%);color:#fff;animation:spin 6s linear infinite reverse;box-shadow:inset 0 3px 2px rgba(255,255,255,.55),inset 0 -8px 14px rgba(0,0,0,.18)}
.pava .in svg{width:48px;height:48px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.25))}
.profile h2{font-family:var(--f-disp);font-size:20px;font-weight:800;letter-spacing:-.02em}
.kv{display:flex;flex-direction:column;gap:2px;text-align:left;margin-top:16px}
.kv div{display:flex;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--line2);font-size:13px}
.kv div:last-child{border-bottom:0}.kv span{color:var(--muted);font-weight:650}.kv b{font-weight:800}

/* ---------- 21. Pengaturan ---------- */
.set-grid{display:grid;grid-template-columns:240px minmax(0,1fr);gap:22px;align-items:start}
.set-nav{position:sticky;top:90px;display:flex;flex-direction:column;gap:4px;padding:10px}
.set-nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:14px;font-weight:750;font-size:13.5px;color:var(--ink2);transition:.2s}
.set-nav a:hover{background:rgba(255,255,255,.9)}
.set-nav a.on{background:linear-gradient(135deg,#fff,#fff3f9);color:var(--pink-ink);box-shadow:0 0 0 1.5px var(--pink-line),0 10px 20px -14px rgba(236,30,121,.6)}
.set-nav .ico{animation:none;transform:none}
.set-sec{scroll-margin-top:96px}
.feerow{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line2)}
.feerow:last-child{border-bottom:0}.feerow b{flex:1;font-size:13.5px}
.feerow .inp{max-width:190px;min-height:42px}.feerow .inp input{min-height:38px}

/* ---------- 21b. Elemen 3D tambahan per halaman ---------- */
/* Saldo: kartu bayangan + koin 3D berputar */
.wallet-wrap{position:relative}
.wallet-ghost{position:absolute;left:18px;right:18px;top:16px;bottom:-12px;border-radius:26px;background:linear-gradient(135deg,#ffb3d6,#a679ff 55%,#6fb6ff);opacity:.62;
  box-shadow:0 22px 34px -20px rgba(132,64,240,.6);animation:ghostSway 7s ease-in-out infinite}
@keyframes ghostSway{0%,100%{transform:rotate(-3.5deg) translateY(0)}50%{transform:rotate(-1.2deg) translateY(5px)}}
.coin{position:absolute;z-index:3;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;color:#8a5200;font-family:var(--f-disp);font-weight:800;font-size:12px;letter-spacing:-.02em;pointer-events:none;
  background:radial-gradient(circle at 34% 28%,#fffbe6 0 8%,#ffe08a 30%,#f5b324 66%,#c27a06 100%);
  box-shadow:inset 0 0 0 3px rgba(255,255,255,.38),inset 0 -4px 6px rgba(120,70,0,.35),0 12px 18px -8px rgba(176,101,5,.7);animation:coinSpin 5s linear infinite}
.coin{transform-style:preserve-3d}
.coin b{grid-area:1/1;-webkit-backface-visibility:hidden;backface-visibility:hidden}
.coin b.bk{transform:rotateY(180deg)}
.coin.c1{right:-8px;top:-18px}
.coin.c2{right:52px;top:-30px;width:32px;height:32px;font-size:8.5px;animation-duration:3.8s;animation-delay:-1s}
.coin.c3{left:-12px;bottom:30px;width:38px;height:38px;font-size:10px;animation-duration:4.4s;animation-delay:-2s}
@keyframes coinSpin{0%{transform:perspective(400px) translateY(0) rotateY(0)}50%{transform:perspective(400px) translateY(-9px) rotateY(180deg)}100%{transform:perspective(400px) translateY(0) rotateY(360deg)}}
.trust{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}
.trust div{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:16px;background:rgba(255,255,255,.88);border:1px solid var(--line);font-size:12px;font-weight:700;color:var(--ink2);line-height:1.35}
.trust div:nth-child(2) .ico{animation-delay:-1.6s}.trust div:nth-child(3) .ico{animation-delay:-3.2s}
/* Monogram bank / e-wallet */
.mono b{position:relative;z-index:1;font-family:var(--f-disp);font-size:10px;font-weight:800;letter-spacing:-.03em;text-shadow:0 1px 1px rgba(0,0,0,.28)}
/* Broadcast: checklist */
.checklist{display:grid;gap:8px;margin-top:18px}
.ck{display:flex;align-items:center;gap:11px;font-size:13px;font-weight:650;color:var(--ink2);padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.85);border:1px solid var(--line)}
.ck .tick{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;flex:none;color:#fff;background:linear-gradient(150deg,#a2f2b8,#1fae4a);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.6),0 2px 0 #137432;animation:tickPop 4s ease-in-out infinite}
.ck .tick svg{width:14px;height:14px}
.ck:nth-child(3) .tick{animation-delay:.35s}.ck:nth-child(4) .tick{animation-delay:.7s}.ck:nth-child(5) .tick{animation-delay:1.05s}
@keyframes tickPop{0%,78%,100%{transform:scale(1) rotate(0)}86%{transform:scale(1.2) rotate(-10deg)}}
/* Affiliate: kartu referal penuh */
.refcard{display:flex;flex-direction:column}
.ref-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ref-stats{margin-top:auto;padding-top:20px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ref-stats div{padding:13px 14px;border-radius:16px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.38);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);min-width:0}
.ref-stats span{display:block;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;opacity:.88}
.ref-stats b{display:block;font-family:var(--f-disp);font-size:clamp(15px,1.5vw,20px);font-weight:700;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Grafik: titik penanda berdenyut + tooltip menempel */
.lc-dot{position:absolute;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:#fff;border:3.5px solid var(--dc);box-shadow:0 4px 10px -2px rgba(0,0,0,.25);z-index:2}
.lc-dot::after{content:"";position:absolute;inset:-9px;border-radius:50%;border:2px solid var(--dc);animation:ping 1.8s ease-out infinite}
.chart-wrap .tip{translate:-50% calc(-100% - 20px);z-index:3}
.chart-wrap .tip::after{content:"";position:absolute;left:50%;bottom:-6px;width:12px;height:12px;margin-left:-6px;background:#241328;transform:rotate(45deg);border-radius:2px}
/* CRM: bar perbandingan status (angka dari API) */
.statbars{display:flex;flex-direction:column;gap:18px;margin-top:4px}
.sb-top{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:750;color:var(--ink2)}
.sb-top .sw{width:12px;height:12px;border-radius:4px;flex:none;box-shadow:0 2px 0 rgba(0,0,0,.15)}
.sb-top .v{margin-left:auto;font-family:var(--f-disp);font-size:15px;color:var(--ink)}
.statbars .bar{height:14px;margin-top:9px}
.statbars .bar i{transition:width 1.3s var(--ease);box-shadow:inset 0 2px 1px rgba(255,255,255,.45)}
/* Media: ikon melayang */
.media .th svg{animation:icoFloat 5s ease-in-out infinite}
.media .m:nth-child(2n) .th svg{animation-delay:-1.7s}.media .m:nth-child(3n) .th svg{animation-delay:-3.1s}
/* Inbox: pratinjau percakapan */
#inbox-table-body tr{cursor:pointer}
#inbox-table-body td:last-child{white-space:nowrap}
#inbox-table-body tr.sel td{background:rgba(255,240,247,.95)}
#inbox-table-body tr.sel td:first-child{box-shadow:inset 3px 0 0 var(--pink)}
.chatpv{display:flex;flex-direction:column;border-radius:20px;overflow:hidden;border:1px solid var(--line);background:#fff;min-height:320px;box-shadow:0 18px 30px -22px rgba(84,24,72,.45)}
.cp-head{display:flex;align-items:center;gap:11px;padding:12px 14px;color:#fff;background:linear-gradient(135deg,#1fae4a,#127a36)}
.cp-head b{display:block;font-size:13.5px;line-height:1.3}.cp-head span{font-size:11px;opacity:.85}
.cp-ava{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none;background:rgba(255,255,255,.22);box-shadow:inset 0 1px 1px rgba(255,255,255,.4)}
.cp-ava svg{width:18px;height:18px}
.cp-body{flex:1;padding:18px 14px;background:#efe7e1 radial-gradient(rgba(42,24,48,.06) 1px,transparent 1.3px) 0 0/14px 14px}
.cp-bubble{position:relative;max-width:90%;background:#fff;border-radius:4px 16px 16px 16px;padding:10px 12px 8px;font-size:13px;line-height:1.5;color:var(--ink);box-shadow:0 2px 4px rgba(0,0,0,.08);word-wrap:break-word}
.cp-time{display:block;text-align:right;font-size:10px;color:#9a8ea0;margin-top:4px}
.cp-body.pop .cp-bubble{animation:bubbleIn .55s var(--ease)}
@keyframes bubbleIn{from{opacity:0;transform:perspective(600px) translateY(16px) rotateX(-24deg) scale(.95)}to{opacity:1;transform:none}}
.cp-foot{display:flex;gap:8px;align-items:center;padding:10px;border-top:1px solid var(--line);background:#fff}
.cp-foot .inp{flex:1;min-height:40px;border-radius:12px}.cp-foot .inp input{min-height:36px;font-size:13px}
/* Pengaturan: pratinjau pop-up iklan (bergerak) */
.pop-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:20px;align-items:start}
.pop-pv{position:sticky;top:96px;display:flex;flex-direction:column;align-items:center;padding:22px 16px 16px;border-radius:20px;perspective:900px;
  background:linear-gradient(160deg,rgba(132,64,240,.07),rgba(236,30,121,.05));border:1.5px dashed rgba(236,30,121,.22)}
.pp-modal{width:100%;max-width:250px;background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 6px 0 #efdfe9,0 30px 44px -22px rgba(84,24,72,.55);transform-style:preserve-3d}
.pp-modal.flip{animation:ppFlip .75s var(--ease)}
@keyframes ppFlip{from{opacity:.15;transform:rotateY(-75deg) translateZ(-40px)}to{opacity:1;transform:none}}
.pp-media{position:relative;height:128px;display:grid;place-items:center;color:#fff;background:linear-gradient(140deg,#ff9ccc,#ec1e79)}
.pp-media>svg{width:34px;height:34px;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25));animation:icoFloat 4s ease-in-out infinite}
.pp-badge{position:absolute;top:10px;left:10px;font-size:10.5px;font-weight:800;background:rgba(255,255,255,.92);color:var(--ink);padding:3px 9px;border-radius:99px}
.pp-x{position:absolute;top:10px;right:10px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.92);color:var(--ink)}
.pp-x svg{width:12px;height:12px}
.pp-text{padding:14px 16px 6px;font-family:var(--f-disp);font-size:14px;font-weight:700;line-height:1.4;color:var(--ink);min-height:66px;letter-spacing:-.01em}
.pp-dots{display:flex;gap:5px;padding:4px 16px 12px}
.pp-dots i{width:7px;height:7px;border-radius:99px;background:#f1e6ee;transition:width .3s var(--ease),background .3s}
.pp-dots i.av{background:#f5bfd9}
.pp-dots i.on{width:20px;background:linear-gradient(90deg,#ff5fa8,#ec1e79)}
.pp-btn{display:flex;margin:0 16px 16px;width:calc(100% - 32px);pointer-events:none;min-height:38px;font-size:13px}
.pp-cap{font-size:11.5px;color:var(--muted);font-weight:700;margin-top:14px;text-align:center}
.slide-row .num{font-family:var(--f-disp)}

/* ---------- 21c. Komponen fungsional (v3) ---------- */
.btn:disabled,.btn[disabled]{opacity:.55;cursor:not-allowed;transform:none!important;filter:saturate(.7)}
.btn:disabled::after{display:none}
.btn--danger{--c1:#ff6b7d;--c2:#d81e44;--d:#9c0f2c;--g:rgba(216,30,68,.45)}
.spin{width:16px;height:16px;border-radius:50%;border:2.5px solid currentColor;border-right-color:transparent;display:inline-block;animation:spin .7s linear infinite;flex:none}
.btn--ghost .spin{border-color:var(--pink-ink);border-right-color:transparent}
.link-inline{color:var(--pink-ink);font-weight:800;text-decoration:underline;text-underline-offset:3px}
.empty-box{grid-column:1/-1;text-align:center;padding:26px 16px;border:1.5px dashed var(--line);border-radius:18px;color:var(--muted);font-size:13px;font-weight:600}
.np-empty{padding:14px;text-align:center;color:var(--muted);font-size:12.5px;font-weight:600}
.act-row{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.chart-box{position:relative;min-height:240px}
.chart-empty{position:absolute;inset:0;display:grid;place-items:center;text-align:center;color:var(--muted);font-size:13px;font-weight:700;padding:20px;pointer-events:none}
.lcv .chart-empty{background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.7))}
.lc .gridl line{stroke:#efe5f0;stroke-width:1}
.lc .ticks text{fill:#9a8ea0;font-size:11px;font-weight:600;font-family:var(--f-body)}
.lc .hover-line{stroke:#d9c5d5;stroke-width:1.5;stroke-dasharray:4 4}
.lcv{cursor:crosshair}
.tip.hov{translate:-50% calc(-100% - 16px);z-index:4;animation:none;pointer-events:none}
.sidebar .side-card .sc-amt{font-family:var(--f-disp);font-size:17px;font-weight:700;color:#fff;margin-top:3px}
.side-card .sc-link{position:relative;display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding:9px 12px;border-radius:12px;background:rgba(255,255,255,.14);font-size:12.5px;font-weight:800;color:#fff;transition:background .2s}
.side-card .sc-link:hover{background:rgba(255,255,255,.24)}
.side-card .sc-help{position:relative;display:flex;gap:12px;margin-top:10px;flex-wrap:wrap}
.side-card .sc-help a{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:800;color:#f7d6ea}
.side-card .sc-help a:hover{color:#fff}
.side-card .sc-help.hidden,.side-card .sc-help a.hidden{display:none}
.logout.soft{color:var(--ink2)}.logout.soft:hover{background:#f4eef6}
a.me{transition:background .2s}a.me:hover{background:rgba(255,255,255,.8)}
.avatar.has-img{padding:0;overflow:hidden}.avatar.has-img img{width:100%;height:100%;object-fit:cover}
.pava .in img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.pava .in:has(img){animation:none}
/* notifikasi */
.notif-pop{position:absolute;top:calc(100% + 12px);right:0;width:min(360px,calc(100vw - 32px));z-index:60;border-radius:20px;background:#fff;border:1px solid var(--line);
  box-shadow:0 30px 60px -24px rgba(84,24,72,.45),0 2px 6px rgba(84,24,72,.08);opacity:0;transform:translateY(-8px) scale(.98);pointer-events:none;transition:opacity .2s,transform .25s var(--ease)}
.notif-pop{visibility:hidden}
.notif-pop.show{opacity:1;transform:none;pointer-events:auto;visibility:visible}
/* daftar biaya admin ringkas (2 kolom) */
.fee-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:6px 0 14px}
.fee-it{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.85);min-width:0;transition:transform .2s var(--ease),box-shadow .2s}
.fee-it:hover{transform:translateY(-2px);box-shadow:0 12px 20px -16px rgba(84,24,72,.5)}
.fee-it .ico.sm{width:30px;height:30px;border-radius:10px;--ex:2px}
.fee-it>b{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fee-it>span:not(.ico){font-size:11.5px;font-weight:800;color:var(--muted);white-space:nowrap}
#form-maint .field{margin-top:14px}
.np-h{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;border-bottom:1px solid var(--line2)}
.np-h b{font-size:14px}.np-read{border:0;background:none;color:var(--pink-ink);font-weight:800;font-size:12px;cursor:pointer}
.np-list{max-height:360px;overflow-y:auto;padding:6px}
.np-i{display:flex;gap:10px;padding:10px;border-radius:14px}
.np-i.unread{background:#fff5fa}
.np-i p{font-size:12.5px;color:var(--ink2);line-height:1.45;font-weight:600}.np-i span{font-size:11px;color:var(--muted)}
.np-dot{width:9px;height:9px;border-radius:50%;background:#c8bccc;flex:none;margin-top:5px}
.np-i.unread .np-dot{background:var(--pink);box-shadow:0 0 0 4px rgba(236,30,121,.14)}
.bell .dot.hidden{display:none!important}
/* pencarian menu */
.search{position:relative}
.search-pop{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:60;background:#fff;border:1px solid var(--line);border-radius:16px;padding:6px;
  box-shadow:0 24px 50px -22px rgba(84,24,72,.45);display:none}
.search-pop.show{display:block}
.search-pop a{display:flex;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:11px;font-size:13px;font-weight:700;color:var(--ink)}
.search-pop a{min-width:0}.search-pop a span{font-size:11px;color:var(--muted);font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search-pop a.on,.search-pop a:hover{background:#fff0f7;color:var(--pink-ink)}
.mini-search{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:12px;padding:0 10px;height:36px;background:#fff;color:var(--muted)}
.mini-search input{border:0;outline:0;font-size:12.5px;width:170px;background:transparent}
/* modal & dialog */
.modal{position:fixed;inset:0;z-index:90;display:none;place-items:center;padding:20px;background:rgba(42,24,48,.45);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);perspective:1000px}
.modal.show{display:grid;animation:fadeIn .25s ease}
.modal-card{width:min(420px,100%);background:#fff;border-radius:26px;padding:22px;box-shadow:0 8px 0 #efdfe9,0 40px 80px -30px rgba(42,24,48,.6);animation:popIn .45s var(--ease)}
.modal-card.flip{animation:ppFlip .7s var(--ease)}
@keyframes popIn{from{opacity:0;transform:translateY(24px) rotateX(18deg) scale(.95)}to{opacity:1;transform:none}}
.modal-card h3{font-size:18px;font-weight:800;font-family:var(--f-disp);letter-spacing:-.02em}
.modal-card p{font-size:13.5px;color:var(--ink2);line-height:1.6;margin-top:8px}
.modal-act{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}
.modal-card.promo{padding:0;overflow:hidden;width:min(400px,100%)}
.pm-media{position:relative;height:210px;background:linear-gradient(140deg,#ff9ccc,#ec1e79)}
.pm-media:not(.has-img)::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.45),transparent 45%)}
.pm-art{position:absolute;inset:0;z-index:1;display:grid;place-items:center}
.pm-art .ico{animation:icoTurn 5s ease-in-out infinite}
.pm-media.has-img .pm-art{display:none}
.pm-no{position:absolute;top:12px;left:12px;z-index:1;font-size:11px;font-weight:800;background:rgba(255,255,255,.92);color:var(--ink);padding:4px 10px;border-radius:99px}
.pm-x{position:absolute;top:10px;right:10px;z-index:1;width:32px;height:32px;border-radius:50%;border:0;display:grid;place-items:center;background:rgba(255,255,255,.92);color:var(--ink);cursor:pointer}
.pm-x svg{width:14px;height:14px}
.modal-card p.pm-text{font-family:var(--f-disp);font-size:17px;font-weight:700;line-height:1.4;letter-spacing:-.01em;color:var(--ink);padding:18px 20px 4px;margin:0}
.pm-dots{display:flex;gap:6px;padding:8px 20px 0}
.pm-dots i{width:8px;height:8px;border-radius:99px;background:#efd9e7;transition:width .3s var(--ease),background .3s}
.pm-dots i.on{width:22px;background:linear-gradient(90deg,#ff5fa8,#ec1e79)}
.promo .modal-act{padding:0 20px 20px}
/* broadcast user */
.device-card{display:flex;align-items:center;gap:14px;margin-top:16px;padding:16px;border-radius:20px;background:linear-gradient(135deg,#ecfdf3,#f7fffa);border:1px solid #c9f0d6}
.dc-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.dc-meta b{font-family:var(--f-disp);font-size:17px;color:#137a3e}.dc-meta span{font-size:12.5px;color:var(--ink2);font-weight:650}
.mini4 .m small{display:block;font-size:10.5px;margin-top:4px;font-weight:650;line-height:1.35}
.tpl-preview{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:16px;background:#fbf7fa;border:1px dashed var(--line);margin:-4px 0 16px;min-height:52px}
.tpl-preview img,.tpl-preview video{width:64px;height:64px;border-radius:12px;object-fit:cover;flex:none;background:#eee}
.tpl-preview p{font-size:12.5px;color:var(--ink2);line-height:1.5;white-space:pre-wrap;max-height:96px;overflow:auto}
.send-hint{font-size:12px;color:var(--muted);font-weight:650;margin-top:10px;text-align:center}
.send-hint.ok{color:#137a3e}
.send-progress{margin-top:14px;padding:14px;border-radius:16px;background:#fff;border:1px solid var(--line)}
.sp-top{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;margin-bottom:2px}
.calc{font-size:12.5px;color:var(--ink2);margin:-6px 0 14px;font-weight:600;min-height:18px}
.wallet .w-note{font-size:12px;color:#f7d6ea;font-weight:650;margin-top:6px}
/* broadcast material */
.tpl-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-6px 0 16px;flex-wrap:wrap}
.tg-row{display:flex;align-items:center;gap:10px;font-size:12.5px;font-weight:750;color:var(--ink2);cursor:pointer}
.wa-phone{border:9px solid #2a1830;border-radius:30px;overflow:hidden;max-width:270px;margin:0 auto;box-shadow:0 8px 0 #12070f,0 26px 40px -22px rgba(42,24,48,.6);animation:phoneBob 5s ease-in-out infinite}
.wa-head{background:linear-gradient(135deg,#1fae4a,#127a36);color:#fff;padding:12px 15px;display:flex;align-items:center;gap:10px}
.wa-head b{font-size:13px;display:block}.wa-head span{font-size:10px;opacity:.85}
.wa-body{padding:16px 14px;background:#efe7e1 radial-gradient(rgba(42,24,48,.05) 1px,transparent 1.3px) 0 0/14px 14px;min-height:260px}
.wa-bubble{background:#fff;border-radius:4px 14px 14px 14px;padding:8px 10px;font-size:12.5px;line-height:1.5;max-width:94%;box-shadow:0 2px 4px rgba(0,0,0,.08);white-space:pre-wrap;word-wrap:break-word}
.pv-media{margin:-2px -4px 8px;border-radius:9px;overflow:hidden}
.pv-media img,.pv-media video{display:block;width:100%;max-height:220px;object-fit:cover}
.pv-ph{display:grid;place-items:center;height:110px;background:linear-gradient(140deg,#ff9ccc,#ec1e79);color:#fff}
.pv-ph svg{width:34px;height:34px}
.wa-time{font-size:9.5px;color:#9a8ea0;text-align:right;margin-top:5px}
.media .th img,.media .th video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.media .th .play{position:relative;z-index:1;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:rgba(0,0,0,.35)}
.media .th .play svg{width:18px;height:18px}
.media .th .pill{z-index:1}
.media .th .del{position:absolute;top:8px;right:8px;z-index:2;width:28px;height:28px;border-radius:50%;border:0;display:grid;place-items:center;background:rgba(255,255,255,.92);color:#c01d3f;cursor:pointer;opacity:0;transition:opacity .2s}
.media .m:hover .del,.media .del:focus-visible{opacity:1}
.media .th .del svg{width:13px;height:13px;filter:none;animation:none}
@media (hover:none){.media .th .del{opacity:1}}
/* data */
.ck-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ck-grid .inp{min-height:44px}.ck-grid .inp input{min-height:40px}
.mini-prog{display:flex;flex-direction:column;gap:2px}
.mini-prog .bar{margin-top:0;height:8px}.mini-prog span{font-size:11px;color:var(--muted);font-weight:700}
/* inbox */
.cp-sub{font-size:11px;opacity:.85}
.cp-body{display:flex;flex-direction:column;gap:10px;align-items:flex-start;max-height:420px;overflow-y:auto}
.cp-bubble.out{align-self:flex-end;background:#d9fdd3;border-radius:16px 4px 16px 16px}
.cp-bubble span:first-child{display:block;white-space:pre-wrap}
.tabs button .n{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;margin-left:4px;border-radius:99px;background:rgba(42,24,48,.08);font-size:11px}
.tabs button.on .n{background:rgba(255,255,255,.25)}
/* pengaturan: slide pop-up */
.slide-row .thumb{width:84px;height:54px;border-radius:12px;flex:none;display:grid;place-items:center;color:#fff;border:0;cursor:pointer;box-shadow:0 3px 0 rgba(0,0,0,.14);transition:transform .2s}
.slide-row .thumb:hover{transform:translateY(-2px)}
.slide-row .thumb svg{width:22px;height:22px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.3))}
.slide-row .thumb.has-img svg{opacity:0;transition:opacity .2s}.slide-row .thumb.has-img:hover svg{opacity:1}
.slide-act{display:flex;gap:6px;align-self:flex-end;margin-bottom:6px}
.icon-btn{width:34px;height:34px;border-radius:11px;border:1.5px solid var(--line);background:#fff;display:grid;place-items:center;color:var(--ink2);cursor:pointer;transition:.2s}
.icon-btn svg{width:15px;height:15px}.icon-btn:hover{border-color:var(--pink-line);color:var(--pink-ink)}
.icon-btn.danger:hover{background:#fdecef;color:#c01d3f;border-color:#f6c2cc}
.pp-media.has-img>svg{opacity:0}
/* halaman mandiri: login, maintenance, 404 */
.solo-wrap{position:relative;z-index:1;min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.solo-card{width:min(440px,100%);text-align:center;padding:30px 26px}
.solo-card h1{font-size:22px;font-weight:800;margin-top:6px}
.solo-card p{font-size:13.5px;margin-top:8px;line-height:1.6}
.solo-card form{text-align:left;margin-top:20px}
.solo-logo{width:150px;margin:-4px auto 8px}.solo-logo .logo-wrap{width:100%;margin:0}
.nf-code{font-size:64px;font-weight:800;line-height:1;background:linear-gradient(95deg,#ff4f9e,#ec1e79 40%,#8440f0);-webkit-background-clip:text;background-clip:text;color:transparent}
/* cetak laporan (Export PDF) */
@media print{
  .sidebar,.topbar,.bg3d,.ph-scene,.pagehead .act,.toast{display:none!important}
  .shell{display:block}.wrap{padding:0;max-width:none}
  .card,.pagehead{box-shadow:none!important;border:1px solid #e5dbe5;-webkit-backdrop-filter:none;backdrop-filter:none;break-inside:avoid;animation:none!important}
  .ptable tbody tr{animation:none!important}
  body{background:#fff}
}

/* ---------- 22. Toast ---------- */
.toast{position:fixed;left:50%;bottom:26px;z-index:100;display:flex;align-items:center;gap:10px;padding:13px 18px;border-radius:16px;color:#fff;font-size:13.5px;font-weight:700;
  background:linear-gradient(160deg,#3a2140,#241328);box-shadow:0 5px 0 #120812,0 20px 36px -14px rgba(0,0,0,.5);transform:translate(-50%,140%);opacity:0;transition:transform .45s var(--ease),opacity .3s}
.toast.show{transform:translate(-50%,0);opacity:1}
.toast svg{width:18px;height:18px;color:#ff9ecf}

/* ---------- 23. Responsif ---------- */
@media (max-width:1280px){.kpi5{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:1080px){
  .g3,.r21,.r12{grid-template-columns:minmax(0,1fr)}
  .hero3d{grid-template-columns:1fr}.stage{height:300px}
  .set-grid{grid-template-columns:1fr}.set-nav{position:static;flex-direction:row;overflow-x:auto}
  .pop-grid{grid-template-columns:1fr}.pop-pv{position:static}
}
@media (max-width:860px){
  .shell{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;width:280px;transform:translateX(-105%);transition:transform .35s var(--ease)}
  body.nav-open .sidebar{transform:none}
  body.nav-open .shell::after{content:"";position:fixed;inset:0;background:rgba(42,24,48,.35);z-index:25}
  .menu-btn{display:grid}
  .g2,.kpi5,.g4{grid-template-columns:minmax(0,1fr)}
  .wrap{padding:18px 16px 36px}.topbar{padding:12px 16px}
  .datepill,.me div{display:none}
  .hero3d{padding:24px 20px}
  .stage{height:276px}.arm{top:calc(50% + 54px)}.arm .sat{left:126px}.stage .core{width:176px;margin:-112px 0 0 -88px}
  .ring-floor{width:276px;height:106px;margin:1px 0 0 -138px}
  .arm .ico.lg{width:50px;height:50px;border-radius:16px}
  .mini4{grid-template-columns:repeat(2,1fr)}
  .pagehead{flex-wrap:wrap;align-items:flex-start;min-height:0;padding:124px 18px 20px;gap:14px}
  .pagehead::after{width:100%;height:130px;bottom:auto;-webkit-mask-image:linear-gradient(180deg,#000,transparent);mask-image:linear-gradient(180deg,#000,transparent)}
  .pagehead::before{right:auto;left:50%;top:0;margin:-200px 0 0 -200px}
  .ph-scene{left:50%;right:auto;top:8px;margin:0 0 0 -118px;transform:scale(.84);transform-origin:top center}
  .pagehead>.ico{width:52px;height:52px;border-radius:17px}
  .pagehead .act .btn{flex:1 1 auto}
  .tor.t1{left:10%}
  .trust{grid-template-columns:1fr}
  .ref-stats{grid-template-columns:1fr;gap:8px}
  .ref-stats div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px}
  .ref-stats b{margin-top:0;font-size:16px}
  .coin.c1{right:-4px}.coin.c3{left:-6px}
  .ck-grid{grid-template-columns:1fr}
  .mini-search input{width:120px}
  .device-card{flex-wrap:wrap}
  .notif-pop{position:fixed;top:72px;left:16px;right:16px;width:auto}
  #fee-list .fee-grid{grid-template-columns:1fr}
  .refcode{padding:12px;gap:10px}.refcode>svg{display:none}.refcode code{font-size:17px;letter-spacing:.02em}
  .g4,.kpi5{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .kpi5>:last-child:nth-child(odd){grid-column:span 2}
  .g4 .kpi,.kpi5 .kpi{padding:16px;gap:10px}
  .g4 .kpi .ico,.kpi5 .kpi .ico{width:40px;height:40px;border-radius:13px;--ex:3px}
  .g4 .kpi .lbl,.kpi5 .kpi .lbl{font-size:11.5px}
  .g4 .kpi .num{font-size:20px}.kpi5 .kpi .num{font-size:17px}
  .g4 .delta,.kpi5 .delta{font-size:10.5px;padding:4px 8px}
}

/* ---------- 21d. Perbaikan tampilan (gambar slide, tab di HP, teks panjang, lompatan menu) ---------- */
.slide-img{flex:none;width:clamp(96px,28%,200px);height:80px;object-fit:cover;border-radius:16px;box-shadow:0 10px 20px -14px rgba(84,24,72,.55)}
.slide-img.hidden{display:none}
#slide-content{flex:1;min-width:0;overflow-wrap:anywhere}
.kv b{min-width:0;text-align:right;overflow-wrap:anywhere}
.card[id],section[id],.set-sec{scroll-margin-top:96px}
@media (max-width:860px){
  .tabs{max-width:100%;overflow-x:auto;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tabs button{flex:none}
  .slide-img{width:88px;height:72px;border-radius:14px}
  .card[id],section[id],.set-sec{scroll-margin-top:84px}
}

/* ---------- 21e. Tombol template, data sisa (.txt), laporan Excel ---------- */
.field label .opt{font-weight:600;color:var(--muted);font-size:11.5px}
.btn-fields{gap:0 14px}
.field-hint{font-size:11.5px;color:var(--muted);line-height:1.5;margin:-8px 0 14px}
.wa-cta{display:flex;flex-direction:column;gap:1px;margin-top:8px;padding-top:7px;border-top:1px dashed rgba(42,24,48,.14);white-space:normal}
.wa-cta b{font-weight:800}
.wa-link{color:#027eb5;text-decoration:underline;word-break:break-all}
.tpl-btn-tag{display:inline-block;margin-top:5px;font-size:11px;font-weight:800;color:#0f6e8a;background:#e7f6fb;border-radius:99px;padding:3px 9px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tpl-pv-txt{flex:1;min-width:0}
.tpl-cta{display:flex;flex-direction:column;margin-top:6px;font-size:12px;color:var(--ink2)}
.tpl-cta span{color:#027eb5;text-decoration:underline;word-break:break-all}
.sisa-bar{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;padding:12px 14px;margin:-4px 0 16px;border-radius:16px;border:1px solid #cfeedd;background:linear-gradient(180deg,#f3fcf6,#fff)}
.sisa-info{display:flex;align-items:center;gap:12px;min-width:0}
.sisa-info b{display:block;font-size:14.5px;color:var(--ink);font-weight:800}
.sisa-info span{display:block;font-size:11.5px;margin-top:2px}
.sisa-act{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sisa-act .inp{min-height:38px;border-radius:11px;padding:0 12px}
.sisa-act .inp select{min-height:34px;font-size:13px;padding-right:22px}
.xl-card{width:min(560px,100%);max-height:calc(100vh - 40px);overflow-y:auto}
.xl-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:16px}
.xl-head .ico{flex:none}
.xl-head p{margin-top:4px}
.xl-custom{gap:0 14px}
.xl-sum{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:14px;background:#f6fbf8;border:1px solid #d7efe0;min-height:50px;font-size:13px;justify-content:center}
.xl-total{font-family:var(--f-disp);font-size:18px;color:#137a3e;letter-spacing:-.02em}
.xl-chips{display:flex;flex-wrap:wrap;gap:6px}
.xl-chips span{font-size:11.5px;font-weight:800;padding:4px 10px;border-radius:99px}
.xl-chips .c-read{background:#e6f0fd;color:#1666c9}.xl-chips .c-c2{background:#e3f7f4;color:#0f8a7e}
.xl-chips .c-c1{background:#f1edf3;color:#76687e}.xl-chips .c-rep{background:#e7f8ed;color:#137a3e}
.xl-meta{font-size:11.5px}
.xl-cols{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px}
.xl-cols span{font-size:10.5px;font-weight:800;padding:3px 8px;border-radius:7px;background:#c2166a;color:#fff;box-shadow:0 2px 0 #8a0d4a}
@media (max-width:560px){
  .sisa-act{width:100%}.sisa-act .inp{flex:1}.sisa-act .btn{flex:1 1 100%}
  .xl-card{padding:18px}.xl-head .ico{display:none}
}

/* ---------- 24. Kurangi gerak bila diminta sistem ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}
