:root{--bg:#090909;--panel:#161616;--line:#3a3a3a;--edge:#ffffff4a;--text:#f5f5f5;--muted:#b5b5b5;--dim:#8a8a8a;--accent:#eee;--silver:#c9c9c9;--green:#5bde8a;--amber:#f0c060;--red:#f07070;--glass-fill:rgba(24,24,24,.72);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg);font-size:14px}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;min-height:100vh}
body{background:#05080f;isolation:isolate}
/* BACKGROUND — foto kaca biru (aset: /customer/assets/bg-*.jpg) */
body::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:#05080f url("/customer/assets/bg-mobile.jpg") center 28%/cover no-repeat}
/* scrim: jaga kontras teks di atas foto */
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(ellipse at 50% 8%,rgba(10,20,40,.02),rgba(3,6,14,.44) 78%),
    linear-gradient(180deg,rgba(4,8,16,.28),rgba(3,6,14,.16) 36%,rgba(2,4,10,.62) 100%)}
@media(min-width:760px){body::before{background-image:url("/customer/assets/bg-desktop.jpg")}}
a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:var(--text)}
button{cursor:pointer;background:#242424;border:1px solid #636363;border-radius:16px;padding:12px 18px;min-height:46px;font-weight:600}
button:active{transform:scale(.97)}
button.primary,a.primary{
  color:#0a111d;font-weight:700;
  background:
    radial-gradient(84% 120% at 50% -30%, rgba(255,255,255,.96), rgba(255,255,255,.52) 46%, rgba(255,255,255,.26) 100%),
    linear-gradient(180deg, rgba(255,255,255,.62) 0%, rgba(206,220,238,.40) 44%, rgba(150,171,199,.34) 100%);
  border:1px solid rgba(255,255,255,.82);
  -webkit-backdrop-filter:blur(10px) saturate(1.4) contrast(1.02);backdrop-filter:blur(10px) saturate(1.4) contrast(1.02);
  box-shadow:inset 0 1.4px 0 rgba(255,255,255,.98),inset 0 -1.4px 0 rgba(255,255,255,.42),inset 0 -14px 18px -16px rgba(0,0,0,.28),0 8px 20px -12px rgba(0,0,0,.52),0 20px 40px -26px rgba(0,0,0,.55);
  transition:filter .16s ease,transform .16s ease,box-shadow .16s ease}
button.primary:hover,a.primary:hover{filter:brightness(1.06)}
button.primary:active,a.primary:active{transform:scale(.985);filter:brightness(.97)}
button.ghost{
  color:#eef4ff;
  background:
    radial-gradient(90% 120% at 50% -24%, rgba(255,255,255,.24), rgba(255,255,255,.05) 58%, rgba(255,255,255,0) 100%),
    rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.30);
  -webkit-backdrop-filter:blur(10px) saturate(1.35);backdrop-filter:blur(10px) saturate(1.35);
  box-shadow:inset 0 1.3px 0 rgba(255,255,255,.44),inset 0 -1.3px 0 rgba(255,255,255,.10),0 10px 24px -18px rgba(0,0,0,.5);
  transition:background .16s ease,border-color .16s ease,transform .16s ease}
button.ghost:hover{background:radial-gradient(90% 120% at 50% -24%, rgba(255,255,255,.30), rgba(255,255,255,.10) 58%, rgba(255,255,255,0) 100%),rgba(255,255,255,.10);border-color:rgba(255,255,255,.42)}
button.ghost:active{transform:scale(.985)}
button:focus-visible,input:focus-visible{outline:3px solid #dbdbdb;outline-offset:3px}
input{background:#191919;border:1px solid #666;border-radius:14px;padding:12px;min-height:46px}
.muted{color:var(--muted)}.small{font-size:12px;color:var(--dim)}
.hidden{display:none!important}

.shell{max-width:960px;margin:0 auto;padding:14px 14px 118px}
/* topbar sticky: cegah avatar terpotong saat scroll */
.topbar{position:sticky;top:8px;z-index:45}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 16px;border-radius:100px;
background:
  radial-gradient(28% 120% at 6% 0%, rgba(255,255,255,.46), rgba(255,255,255,.12) 48%, rgba(255,255,255,0) 78%),
  radial-gradient(38% 34% at 28% 20%, rgba(255,255,255,.10), rgba(255,255,255,0) 74%),
  radial-gradient(60% 70% at 50% 130%, rgba(255,255,255,.20), rgba(255,255,255,0) 70%),
  linear-gradient(180deg, rgba(255,255,255,1) 0 1.6px, rgba(255,255,255,.38) 5px, rgba(255,255,255,0) 11px),
  linear-gradient(0deg, rgba(0,0,0,.46) 0 2px, rgba(0,0,0,.20) 9px, rgba(0,0,0,.05) 20px, rgba(0,0,0,0) 32px),
  linear-gradient(90deg, rgba(0,0,0,.30) 0 2px, rgba(0,0,0,.08) 12px, rgba(0,0,0,0) 34px),
  linear-gradient(270deg, rgba(0,0,0,.30) 0 2px, rgba(0,0,0,.08) 12px, rgba(0,0,0,0) 34px),
  linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.035) 44%, rgba(0,0,0,.10));
border:1px solid rgba(255,255,255,.50);-webkit-backdrop-filter:blur(9px) saturate(1.45) contrast(1.03);backdrop-filter:blur(9px) saturate(1.45) contrast(1.03);
box-shadow:inset 0 1.5px 0 rgba(255,255,255,.88),inset 0 -1.5px 0 rgba(255,255,255,.28),inset 0 -22px 30px -22px rgba(0,0,0,.26),0 2px 6px -3px rgba(0,0,0,.18),0 14px 26px -14px rgba(0,0,0,.30),0 44px 80px -44px rgba(0,0,0,.60);
margin-bottom:16px}
.brand{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:750;letter-spacing:-.6px;white-space:nowrap}
.mark{display:grid;place-items:center;width:28px;height:30px;background:linear-gradient(135deg,#fff,#929292);color:#151515;clip-path:polygon(22% 0,100% 0,78% 42%,100% 42%,28% 100%,42% 58%,0 58%);font-weight:700}
.topbar .right{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;justify-content:flex-end}
.chip{font-size:12px;background:#202020;border:1px solid #4c4c4c;border-radius:20px;padding:4px 11px;color:#eee;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avatar{width:32px;height:32px;border-radius:50%;background:#2c2c2c;display:grid;place-items:center;font-size:13px;font-weight:650;color:#ccc}
.profileWrap{position:relative}
.avatarBtn{position:relative;width:44px;height:44px;border-radius:50%;color:#f4f9ff;font-weight:750;font-size:15px;display:grid;place-items:center;min-height:auto;padding:0;
background:
  radial-gradient(46% 46% at 30% 16%, rgba(255,255,255,.86), rgba(255,255,255,.24) 54%, rgba(255,255,255,0) 82%),
  radial-gradient(58% 58% at 50% 54%, rgba(6,11,20,.52), rgba(9,15,26,.30) 62%, rgba(9,15,26,0) 100%),
  radial-gradient(120% 120% at 50% 118%, rgba(255,255,255,.30), rgba(255,255,255,.04) 62%, rgba(255,255,255,0) 100%),
  linear-gradient(180deg, rgba(255,255,255,.22), rgba(96,120,152,.24) 52%, rgba(12,20,34,.60));
border:1px solid rgba(255,255,255,.66);
-webkit-backdrop-filter:blur(13px) saturate(1.55) contrast(1.04);backdrop-filter:blur(13px) saturate(1.55) contrast(1.04);
box-shadow:inset 0 1.5px 0 rgba(255,255,255,.92),inset 0 -1.5px 0 rgba(255,255,255,.30),inset 0 -12px 16px -12px rgba(0,0,0,.34),0 6px 16px -10px rgba(0,0,0,.60),0 14px 28px -20px rgba(0,0,0,.55);
transition:transform .16s ease,box-shadow .16s ease}
.avatarBtn:hover{box-shadow:inset 0 1.5px 0 rgba(255,255,255,1),inset 0 -1.5px 0 rgba(255,255,255,.34),inset 0 -12px 16px -12px rgba(0,0,0,.30),0 8px 20px -10px rgba(0,0,0,.62),0 18px 34px -20px rgba(0,0,0,.55)}
.avatarBtn:active{transform:scale(.955)}
.avatarBtn svg{position:relative;z-index:1;display:block;width:20px;height:20px;margin:0;vertical-align:0;stroke:currentColor!important;stroke-width:2.1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.62))}
/* Customer profile action popup: dark/silver chain-popup material. */
/* Avoid a nested backdrop root so the popup can blur the page beneath it. */
.topbar:has(.profileMenu:not(.hidden)){position:relative;z-index:61;backdrop-filter:none;-webkit-backdrop-filter:none}
.profileMenu{position:absolute;inset-inline-end:0;top:calc(100% + 10px);width:284px;max-width:calc(100vw - 60px);max-height:calc(100dvh - 120px);overflow:auto;overscroll-behavior:contain;padding:10px;border-radius:22px;color:#f4f8ff;z-index:60;
background:
  radial-gradient(30% 46% at 10% 0%, rgba(255,255,255,.30), rgba(255,255,255,.09) 48%, rgba(255,255,255,0) 78%),
  radial-gradient(64% 60% at 50% 122%, rgba(255,255,255,.18), rgba(255,255,255,0) 72%),
  linear-gradient(180deg, rgba(255,255,255,.94) 0 1.4px, rgba(255,255,255,.32) 5px, rgba(255,255,255,0) 11px),
  linear-gradient(0deg, rgba(0,0,0,.48) 0 2px, rgba(0,0,0,.20) 9px, rgba(0,0,0,.05) 20px, rgba(0,0,0,0) 32px),
  linear-gradient(90deg, rgba(0,0,0,.34) 0 1.6px, rgba(0,0,0,.08) 10px, rgba(0,0,0,0) 28px),
  linear-gradient(270deg, rgba(0,0,0,.34) 0 1.6px, rgba(0,0,0,.08) 10px, rgba(0,0,0,0) 28px),
  linear-gradient(180deg, rgba(30,40,58,.90), rgba(14,20,30,.94));
border:1px solid rgba(255,255,255,.52);
-webkit-backdrop-filter:blur(20px) saturate(1.45) contrast(1.03);backdrop-filter:blur(20px) saturate(1.45) contrast(1.03);
box-shadow:inset 0 1.4px 0 rgba(255,255,255,.86),inset 0 -1.4px 0 rgba(255,255,255,.26),inset 0 -22px 30px -24px rgba(0,0,0,.34),0 16px 34px -16px rgba(0,0,0,.55),0 40px 78px -40px rgba(0,0,0,.66)}
.profileMenu .pmHead{display:flex;align-items:center;gap:10px;padding:4px 4px 12px;margin-bottom:8px;border-bottom:1px solid rgba(255,255,255,.20)}
.profileMenu .pmAva{width:36px;height:36px;flex:0 0 auto;border-radius:50%;display:grid;place-items:center;background:linear-gradient(160deg,rgba(255,255,255,.94),rgba(255,255,255,.44));color:#0d1420;box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 4px 12px rgba(0,0,0,.4)}
.profileMenu .pmAva svg{width:18px;height:18px}
.profileMenu .pmId{min-width:0;display:flex;flex-direction:column;gap:2px;flex:1 1 auto}
.profileMenu .pEmail{display:block;font-size:12.5px;line-height:1.4;color:#eef4ff;overflow-wrap:anywhere;min-width:0;margin:0;padding:0}
.profileMenu .pmRole{display:block;margin:0;font-size:9.5px;letter-spacing:.7px;text-transform:uppercase;color:rgba(244,249,255,.86)}
.profileMenu .pmItem{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:10px 12px;border-radius:14px;border:1px solid transparent;background:transparent;color:#f2f6ff;font-size:13.5px;font-weight:600;text-align:start;text-decoration:none;transition:background .16s ease,border-color .16s ease,transform .16s ease}
.profileMenu .pmItem svg{width:17px;height:17px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:.88}
.profileMenu .pmItem+.pmItem{margin-top:2px}
.profileMenu .pmItem:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.28)}
.profileMenu .pmItem:active{background:rgba(255,255,255,.20);transform:scale(.985)}
.profileMenu .pmItem:focus-visible,.avatarBtn:focus-visible{outline:2px solid #f2f6ff;outline-offset:2px}
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){.profileMenu{-webkit-backdrop-filter:none;backdrop-filter:none;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.05)),#0e1420}}
html[data-transparency=reduce] .profileMenu{background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.04)),#0e1420;backdrop-filter:none;-webkit-backdrop-filter:none}
html[data-transparency=reduce] body::before{background-image:none;background:#080b12}
html[data-transparency=reduce] body::after{backdrop-filter:none}
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){body::before{background-image:none;background:#080b12}body::after{background:rgba(4,7,13,.72)}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.profileMenu{background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.04)),#0e1420}}


.glass{position:relative;isolation:isolate;border:1px solid #ffffff38;background:linear-gradient(125deg,#ffffff0c,transparent 42%,#ffffff03),rgba(17,17,17,.94);box-shadow:inset 0 1px 1px #ffffff55,inset 0 -1px 0 #ffffff10,0 18px 45px #0005;border-radius:24px}
.glass::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;padding:1px;background:linear-gradient(135deg,#ffffff80 0%,#ffffff10 26%,transparent 45%,#ffffff22 75%,#ffffff55);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}

/* AUTH */
.hero{max-width:440px;margin:0 auto;padding:30px 26px}
.hero h1{font-size:28px;margin:0 0 6px}
.hero p{margin:0 0 18px;color:var(--muted)}
.tabs{display:flex;gap:8px;margin-bottom:16px}
.tabs button{background:#ffffff09;border-color:#5a5a5a;border-radius:30px;padding:9px 18px;min-height:42px}
.tabs button.active{background:#383838;border-color:#aaa}
.form{display:grid;gap:12px}
.form .field{display:grid;gap:6px}
.form label{font-size:12px;color:#c7c7c7}
.notice{min-height:18px;font-size:12px;margin-top:8px}
.notice:empty{display:none}
.notice.err{color:var(--red)}.notice.ok{color:var(--green)}
.authDivider{display:flex;align-items:center;gap:12px;margin:16px 0 12px;color:var(--dim,#8a8a8a);font-size:12px}
.authDivider::before,.authDivider::after{content:"";flex:1;height:1px;background:var(--edge,rgba(255,255,255,.29))}
.authDivider span{letter-spacing:.6px;text-transform:uppercase}
#tgLoginBox{width:100%}
.socialBtn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:46px;border-radius:12px;border:1px solid transparent;font-weight:600;font-size:14px;cursor:pointer;padding:12px 16px}
.socialBtn.tg{background:#229ED9;color:#fff;border-color:#229ED9}
.socialBtn.tg:hover{background:#1e8dc2}
.socialBtn.tg svg{width:21px;height:21px;flex:none}
.socialBtn.gg{background:#fff;color:#3c4043;border-color:#dadce0}
.socialBtn.gg:hover{background:#f7f8f8;border-color:#d2d5d9}
.socialBtn.gg svg{width:20px;height:20px;flex:none}

/* QUOTA CARD (model bandelbanget, tema silver) */
.quotaCard{border-radius:26px;padding:22px;color:#f4f8ff;
background:
  radial-gradient(22% 78% at 8% 6%, rgba(255,255,255,.42), rgba(255,255,255,.12) 48%, rgba(255,255,255,0) 78%),
  radial-gradient(38% 36% at 30% 24%, rgba(255,255,255,.10), rgba(255,255,255,0) 74%),
  radial-gradient(44% 60% at 50% 116%, rgba(255,255,255,.30), rgba(255,255,255,0) 72%),
  linear-gradient(180deg, rgba(255,255,255,1) 0 1.8px, rgba(255,255,255,.40) 6px, rgba(255,255,255,0) 13px),
  linear-gradient(0deg, rgba(0,0,0,.42) 0 2.5px, rgba(0,0,0,.20) 12px, rgba(0,0,0,.06) 24px, rgba(0,0,0,0) 38px),
  linear-gradient(90deg, rgba(0,0,0,.28) 0 2.5px, rgba(0,0,0,.09) 14px, rgba(0,0,0,0) 42px),
  linear-gradient(270deg, rgba(0,0,0,.28) 0 2.5px, rgba(0,0,0,.09) 14px, rgba(0,0,0,0) 42px),
  linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.035) 44%, rgba(0,0,0,.10));
border:1px solid rgba(255,255,255,.55);-webkit-backdrop-filter:blur(9px) saturate(1.45) contrast(1.03);backdrop-filter:blur(9px) saturate(1.45) contrast(1.03);
box-shadow:inset 0 1.6px 0 rgba(255,255,255,.92),inset 0 -1.6px 0 rgba(255,255,255,.32),inset 0 -26px 34px -24px rgba(0,0,0,.26),0 2px 6px -3px rgba(0,0,0,.18),0 16px 28px -14px rgba(0,0,0,.30),0 48px 88px -44px rgba(0,0,0,.62);margin-bottom:16px}
.quotaCard .qc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.quotaCard .qc-label{font-size:12px;color:rgba(240,246,255,.78);letter-spacing:.3px;text-transform:uppercase}
.quotaCard .qc-remaining{font-size:34px;font-weight:750;letter-spacing:-1px;margin:4px 0 2px;font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.28)}
/* QUOTA RANGE — custom select (dropdown <select> native tidak bisa di-tema, jadi pakai popover sendiri) */
.qc-range{position:relative;flex:0 0 auto}
.qc-rsel-trigger{display:inline-flex;align-items:center;gap:6px;max-width:min(150px,46vw);padding:7px 9px 7px 11px;border:1px solid rgba(255,255,255,.34);border-radius:12px;background:radial-gradient(120% 100% at 50% -18%,rgba(255,255,255,.28),rgba(255,255,255,.10) 60%,rgba(255,255,255,.06));color:#f0f5ff;font:inherit;font-size:10px;font-weight:600;line-height:1.2;min-height:0;box-shadow:inset 0 1.4px 0 rgba(255,255,255,.55)}
.qc-rsel-trigger:active{transform:scale(.97)}
.qc-rsel-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qc-rsel-trigger .qc-rsel-ic{position:static;width:11px;height:7px;flex:0 0 auto;margin:0;vertical-align:0;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:.9;transition:transform .18s ease}
.qc-range.open .qc-rsel-trigger .qc-rsel-ic{transform:rotate(180deg)}
.qc-rsel-menu{position:absolute;inset-inline-end:0;top:calc(100% + 8px);z-index:70;min-width:176px;padding:6px;border-radius:16px;color:#f4f8ff;
background:
  radial-gradient(30% 46% at 10% 0%, rgba(255,255,255,.30), rgba(255,255,255,.09) 48%, rgba(255,255,255,0) 78%),
  radial-gradient(64% 60% at 50% 122%, rgba(255,255,255,.18), rgba(255,255,255,0) 72%),
  linear-gradient(180deg, rgba(255,255,255,.94) 0 1.4px, rgba(255,255,255,.32) 5px, rgba(255,255,255,0) 11px),
  linear-gradient(0deg, rgba(0,0,0,.48) 0 2px, rgba(0,0,0,.20) 9px, rgba(0,0,0,.05) 20px, rgba(0,0,0,0) 32px),
  linear-gradient(180deg, rgba(30,40,58,.92), rgba(14,20,30,.95));
border:1px solid rgba(255,255,255,.52);
-webkit-backdrop-filter:blur(18px) saturate(1.45);backdrop-filter:blur(18px) saturate(1.45);
box-shadow:inset 0 1.4px 0 rgba(255,255,255,.86),inset 0 -1.4px 0 rgba(255,255,255,.26),0 16px 34px -16px rgba(0,0,0,.55),0 40px 78px -40px rgba(0,0,0,.66);
animation:coPop .16s ease-out}
.qc-rsel-item{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:38px;padding:8px 10px;border-radius:11px;border:1px solid transparent;background:transparent;color:#f2f6ff;font-size:11.5px;font-weight:600;text-align:start;box-shadow:none;transition:background .14s ease,border-color .14s ease}
.qc-rsel-item+.qc-rsel-item{margin-top:1px}
.qc-rsel-item:hover,.qc-rsel-item:focus-visible{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.28);outline:none}
.qc-rsel-item:active{background:rgba(255,255,255,.20);transform:scale(.985)}
.qc-rsel-item .tick{width:14px;height:14px;flex:0 0 auto;margin:0;vertical-align:0;display:none;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.qc-rsel-item[aria-checked="true"]{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.34)}
.qc-rsel-item[aria-checked="true"] .tick{display:block}
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){.qc-rsel-menu{-webkit-backdrop-filter:none;backdrop-filter:none;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.05)),#0e1420}}
html[data-transparency=reduce] .qc-rsel-menu{background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.04)),#0e1420;backdrop-filter:none;-webkit-backdrop-filter:none}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;letter-spacing:.3px;padding:4px 10px;border-radius:12px;border:1px solid}
.badge.green{color:#5bde8a;border-color:#2a6e46;background:#0d2a1c}
.badge.red{color:#ff9c9c;border-color:rgba(240,112,112,.52);background:rgba(58,14,16,.72);box-shadow:inset 0 1px 0 rgba(255,255,255,.10)}
.badge.amber{color:#f0c060;border-color:#6e552a;background:#2a200d}
.badge.gray{color:#999;border-color:#444;background:#1e1e1e}
.badge.light{color:#111;border-color:#00000030;background:#ffffff66}
.qc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}
.qc-cell{background:radial-gradient(60% 42% at 12% 0%,rgba(255,255,255,.34),rgba(255,255,255,0) 76%),radial-gradient(124% 108% at 44% -18%,rgba(255,255,255,.22),rgba(255,255,255,.07) 52%,rgba(255,255,255,.03) 100%),rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.30);border-radius:16px;padding:12px;box-shadow:inset 0 1.4px 0 rgba(255,255,255,.58),inset 0 -14px 18px -16px rgba(0,0,0,.30)}
.qc-cell .k{font-size:10px;color:rgba(238,245,255,.72);letter-spacing:.3px;text-transform:uppercase}
.qc-cell .v{font-size:16px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums;word-break:break-word;color:#fff}

/* ACTIONS */
.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}

/* ICON GRID */
.iconGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
/* Halaman Bantuan: hub kartu 2 kolom (label lebih panjang dari icon grid biasa) */
.helpGrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}
.iconBtn{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 6px 14px;border-radius:20px;cursor:pointer;color:#eef4ff;
background:
  radial-gradient(58% 44% at 14% 0%, rgba(255,255,255,.36), rgba(255,255,255,.10) 50%, rgba(255,255,255,0) 78%),
  radial-gradient(120% 104% at 46% -16%, rgba(255,255,255,.24), rgba(255,255,255,.08) 54%, rgba(255,255,255,.03) 100%),
  linear-gradient(180deg, rgba(255,255,255,.92) 0 1.3px, rgba(255,255,255,.26) 5px, rgba(255,255,255,0) 11px),
  linear-gradient(0deg, rgba(0,0,0,.40) 0 2px, rgba(0,0,0,.16) 9px, rgba(0,0,0,.04) 20px, rgba(0,0,0,0) 32px),
  linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.03) 46%, rgba(0,0,0,.14));
border:1px solid rgba(255,255,255,.34);
box-shadow:inset 0 1.4px 0 rgba(255,255,255,.66),inset 0 -1.4px 0 rgba(255,255,255,.14),inset 0 -16px 20px -18px rgba(0,0,0,.34),0 10px 22px -16px rgba(0,0,0,.50),0 26px 44px -34px rgba(0,0,0,.60)}
.iconBtn::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;padding:1px;
  background:linear-gradient(150deg,rgba(255,255,255,.72) 0%,rgba(255,255,255,.10) 28%,transparent 48%,rgba(255,255,255,.16) 76%,rgba(255,255,255,.48));
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}
.iconBtn .ico{position:relative;width:38px;height:38px;display:grid;place-items:center;border-radius:13px;font-size:18px;color:#f2f7ff;
  background:
    radial-gradient(60% 52% at 50% -12%, rgba(255,255,255,.46), rgba(255,255,255,.10) 62%, rgba(255,255,255,0) 88%),
    radial-gradient(120% 120% at 50% 118%, rgba(6,11,20,.46), rgba(6,11,20,0) 66%),
    linear-gradient(160deg, rgba(255,255,255,.20), rgba(255,255,255,.06));
  border:1px solid rgba(255,255,255,.38);
  box-shadow:inset 0 1.2px 0 rgba(255,255,255,.70),inset 0 -8px 12px -10px rgba(0,0,0,.42),0 4px 10px -8px rgba(0,0,0,.45)}
.iconBtn span{font-size:11px;letter-spacing:.1px;color:rgba(238,245,255,.86)}
.ico svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.iconBtn[data-nav],.iconBtn[id^="btn"]{transition:background .18s ease,border-color .18s ease,transform .18s ease}
.iconBtn:hover{border-color:rgba(255,255,255,.52)}
.iconBtn:hover .ico{border-color:rgba(255,255,255,.52)}
.iconBtn:active{transform:scale(.96)}

/* PANELS / SECTIONS */
.section{margin-bottom:18px}
.section>.panel+.panel{margin-top:18px}
.section h2{font-size:15px;font-weight:650;margin:0 0 12px;letter-spacing:-.2px}
.panel{border-radius:22px;padding:18px}
.row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}
.row:last-child{border:0}
code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;word-break:break-all}
.empty{border:1px dashed var(--line);border-radius:18px;padding:26px;text-align:center;color:var(--dim);font-size:13px}

/* Kartu API Key: judul + meta (2 baris), tombol ikon mata & salin */
/* wadah daftar key: transparan, biar kaca kartu bisa membiaskan foto di belakang */
.keyWrap{display:block;padding:0;border:0;background:none;box-shadow:none}
/* kartu API key — resep kaca identik dengan kartu kuota di header (.quotaCard) */
.keyCard{position:relative;isolation:isolate;display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:26px;color:#f3f8ff;
background:
  radial-gradient(22% 78% at 8% 6%, rgba(255,255,255,.42), rgba(255,255,255,.12) 48%, rgba(255,255,255,0) 78%),
  radial-gradient(38% 36% at 30% 24%, rgba(255,255,255,.10), rgba(255,255,255,0) 74%),
  radial-gradient(44% 60% at 50% 116%, rgba(255,255,255,.30), rgba(255,255,255,0) 72%),
  linear-gradient(180deg, rgba(255,255,255,1) 0 1.8px, rgba(255,255,255,.40) 6px, rgba(255,255,255,0) 13px),
  linear-gradient(0deg, rgba(0,0,0,.42) 0 2.5px, rgba(0,0,0,.20) 12px, rgba(0,0,0,.06) 24px, rgba(0,0,0,0) 38px),
  linear-gradient(90deg, rgba(0,0,0,.28) 0 2.5px, rgba(0,0,0,.09) 14px, rgba(0,0,0,0) 42px),
  linear-gradient(270deg, rgba(0,0,0,.28) 0 2.5px, rgba(0,0,0,.09) 14px, rgba(0,0,0,0) 42px),
  linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.035) 44%, rgba(0,0,0,.10));
border:1px solid rgba(255,255,255,.55);
-webkit-backdrop-filter:blur(9px) saturate(1.45) contrast(1.03);backdrop-filter:blur(9px) saturate(1.45) contrast(1.03);
box-shadow:inset 0 1.6px 0 rgba(255,255,255,.92),inset 0 -1.6px 0 rgba(255,255,255,.32),inset 0 -26px 34px -24px rgba(0,0,0,.26),0 2px 6px -3px rgba(0,0,0,.18),0 16px 28px -14px rgba(0,0,0,.30),0 48px 88px -44px rgba(0,0,0,.62);
transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.keyCard::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;padding:1px;
  background:linear-gradient(135deg,rgba(255,255,255,.78) 0%,rgba(255,255,255,.10) 26%,transparent 45%,rgba(255,255,255,.18) 75%,rgba(255,255,255,.50));
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}
.keyCard:hover{border-color:rgba(255,255,255,.62)}
.keyCard+.keyCard{margin-top:12px}
.kc-head{display:flex;align-items:center;gap:8px}
.kc-head svg{flex:0 0 auto}
.kc-name{font-size:15px;font-weight:650;letter-spacing:-.2px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff}
.kc-meta{font-size:11px;color:rgba(233,241,252,.74);letter-spacing:.1px}
.kc-value{display:flex;align-items:center;gap:8px;min-height:38px;padding:9px 12px;border:1px solid rgba(255,255,255,.30);border-radius:14px;
  background:radial-gradient(90% 130% at 50% -34%,rgba(255,255,255,.22),rgba(255,255,255,.05) 58%,rgba(255,255,255,0) 100%),rgba(6,11,20,.34);
  box-shadow:inset 0 1.3px 0 rgba(255,255,255,.34),inset 0 -10px 14px -14px rgba(0,0,0,.50)}
.kc-value code{flex:1;min-width:0;font-size:11.5px;line-height:1.45;color:#e8f0fb;user-select:all;overflow-wrap:anywhere}
.kc-prefix{flex:0 0 auto;font-size:11.5px;line-height:1.45;letter-spacing:.4px;color:rgba(214,226,242,.80)}
/* deret titik penuh: tile di-round supaya mentok rata kiri-kanan, tanpa titik terpotong */
.kc-mask{flex:1 1 auto;min-width:0;height:11px;
  background-image:radial-gradient(circle at center,rgba(214,226,242,.80) 1.2px,rgba(214,226,242,0) 1.75px);
  background-size:7px 11px;background-repeat:round;background-position:0 50%}
.kc-value.masked code{letter-spacing:2px;color:rgba(214,226,242,.80)}
.kc-tools{display:flex;align-items:center;gap:2px;margin-left:auto}
/* tombol ikon telanjang: tanpa bingkai, tanpa latar — hanya ikon */
.kc-btn{position:relative;display:grid;place-items:center;width:24px;height:24px;min-height:24px;padding:0;border:0;border-radius:999px;flex:0 0 auto;
  background:none;box-shadow:none;color:rgba(235,243,255,.86);
  transition:color .16s ease,opacity .16s ease,transform .16s ease}
.kc-btn:hover{color:#fff}
.kc-del:hover{color:#ff8f8f}
.kc-btn:active{transform:scale(.90)}
.kc-btn svg{width:15px;height:15px;display:block}
/* target sentuh tetap besar walau visual 24px — vertikal saja biar tidak tabrakan antar tombol */
.kc-btn::before{content:"";position:absolute;inset:-8px -1px;border-radius:999px}
.kc-btn.ok{color:#5bde8a}
@media(max-width:400px){.kc-name{font-size:14px}}

/* ORDER + QRIS INLINE */
/* Riwayat: tab filter status (Semua/Pending/Selesai/Batal). */
/* 4 tab muat di 390px; gap sempit, padding rampung, label pendek. */
.order-tabs{overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;scrollbar-width:none;-ms-overflow-style:none;gap:5px;padding:2px 0;scroll-snap-type:x proximity}
.order-tabs::-webkit-scrollbar{display:none}
.order-tabs button{flex:0 0 auto;scroll-snap-align:start;white-space:nowrap;padding:8px 12px;min-height:40px;font-size:12.5px;font-weight:550}
.order-tabs button.active{background:linear-gradient(160deg,#fff,#c4c4c4);border-color:#fff;color:#111;box-shadow:inset 0 1px 1px #fff,0 4px 14px #0005}
.order-tabs button[data-count]:not([data-count="0"])::after{content:attr(data-count);display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;border-radius:9px;background:#ffffff2e;font-size:11px;font-weight:600}
.order-tabs button.active[data-count]:not([data-count="0"])::after{background:#00000026;color:#111;box-shadow:inset 0 0 0 1px #00000030}
.order-tabs button:disabled{opacity:.38;cursor:default}
.order-empty{color:var(--dim);font-size:13px;text-align:center;padding:26px 14px}
/* Kartu besar Riwayat: BOLONG — 100% transparan, cuma sisa garis tepi.
   ::after (gradient border glass) dimatikan supaya tidak ada sisa isi.
   backdrop-filter & box-shadow ikut dicabut; foto di belakang tembus penuh. */
.panelHollow{background:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;
  box-shadow:none!important;border:1px solid rgba(255,255,255,.34)!important;padding:16px}
.panelHollow::after{display:none!important}
/* Kartu order di dalamnya tetap punya isi tipis biar teks kebaca di atas foto */
.orderCard{border:1px solid rgba(255,255,255,.16);border-radius:18px;padding:6px 14px 14px;margin-bottom:12px;
  background:radial-gradient(120% 150% at 50% -30%,rgba(255,255,255,.10),rgba(255,255,255,.02) 60%,rgba(255,255,255,0) 100%),rgba(6,11,20,.46)}

/* INVOICE — kartu besar ikut bolong (border only), isi teks dikasih scrim tipis */
.inv-scrim{background:rgba(6,11,20,.44);border:1px solid rgba(255,255,255,.10);border-radius:16px;padding:2px 14px 8px;margin-top:2px}
.panelHollow .inv-pay-row{border-bottom-color:rgba(255,255,255,.13)}
.panelHollow .inv-pay-row:last-child{border-bottom:0}
.panelHollow .inv-pay-row.total{border-top-color:rgba(255,255,255,.20)}
/* banner status: tint semi-transparan + border warna, bukan gradient solid */
.inv-status.panelHollow{padding:16px 18px}
.inv-status.panelHollow.pending{background:rgba(42,32,13,.42)!important;border:1px solid #6e552a!important}
.inv-status.panelHollow.approved{background:rgba(13,42,28,.42)!important;border:1px solid #2a6e46!important}
.inv-status.panelHollow.rejected{background:rgba(42,13,13,.42)!important;border:1px solid #8b3333!important}
/* teks di atas foto: kasih bayangan tipis biar tetap kebaca */
.panelHollow .inv-pay-row,.panelHollow .qrHint,.panelHollow .small,.panelHollow .inv-cta-row{text-shadow:0 1px 6px rgba(0,0,0,.85)}
/* fallback transparansi dikurangi: balik solid biar tetap kebaca */
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){
  .panelHollow{background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.05)),rgba(10,17,28,.94)!important;border-color:rgba(255,255,255,.20)!important}
  .inv-status.panelHollow.pending{background:linear-gradient(135deg,#2a200d,#1a1408)!important}
  .inv-status.panelHollow.approved{background:linear-gradient(135deg,#0d2a1c,#091a12)!important}
  .inv-status.panelHollow.rejected{background:linear-gradient(135deg,#2a0d0d,#1a0808)!important}
}
.orderCard .row{border-bottom:0;padding-bottom:6px}
.qrBlock{margin:10px 0 4px;display:flex;flex-direction:column;align-items:center;gap:6px}
.qrImg{width:220px;height:220px;border-radius:14px;background:#fff;padding:10px;box-shadow:0 8px 24px #0004}
.qrHint{color:var(--muted)}
.qrFallback{display:inline-block;margin-top:10px;padding:8px 16px;border-radius:14px;font-size:13px;color:#111;text-decoration:none}

/* CHECKOUT (halaman bayar sendiri) */
.co-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}
/* Tombol back: resep kaca IDENTIK button.ghost (border radius disesuaikan ukuran kecil).
   Sebelumnya cuma mewarisi `button{background:#242424;border:1px solid #636363}` -> kotak gelap solid,
   beda total dengan "Cetak / PDF" di sebelahnya. */
.co-back{min-height:44px;width:44px;padding:0;border-radius:14px;
  color:#eef4ff;
  background:
    radial-gradient(90% 120% at 50% -24%, rgba(255,255,255,.24), rgba(255,255,255,.05) 58%, rgba(255,255,255,0) 100%),
    rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.30);
  -webkit-backdrop-filter:blur(10px) saturate(1.35);backdrop-filter:blur(10px) saturate(1.35);
  box-shadow:inset 0 1.3px 0 rgba(255,255,255,.44),inset 0 -1.3px 0 rgba(255,255,255,.10),0 10px 24px -18px rgba(0,0,0,.5);
  transition:background .16s ease,border-color .16s ease,transform .16s ease;
  display:grid;place-items:center}
.co-back:hover{background:radial-gradient(90% 120% at 50% -24%, rgba(255,255,255,.30), rgba(255,255,255,.10) 58%, rgba(255,255,255,0) 100%),rgba(255,255,255,.10);border-color:rgba(255,255,255,.42)}
.co-back:active{transform:scale(.985)}
/* ikon panah: buang margin-right global `button svg{margin-right:5px}` biar benar-benar center */
.co-back svg{width:18px;height:18px;margin:0;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:0}
.co-title{font-size:20px;font-weight:750;letter-spacing:-.5px}
.co-qr-wrap{text-align:center}
.qrisGuide{margin:0 0 14px;text-align:left}
.qrisGuide summary{list-style:none;cursor:pointer;text-align:center;padding:12px 14px;border:1px solid #636363;border-radius:16px;background:#ffffff08;color:#eee;font-weight:600}
.qrisGuide summary::-webkit-details-marker{display:none}
.qrisGuide summary svg{width:15px;height:15px;vertical-align:-3px;margin-right:5px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
button svg,.inv-cta-row svg,.panel a svg{width:16px;height:16px;vertical-align:-3px;margin-right:5px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.inv-cta-row button svg{margin-right:6px}
.qrisGuide summary::after{content:'⌄';float:right;color:var(--muted)}
.qrisGuide[open] summary::after{content:'−'}
.qrisGuide-body{margin-top:10px;padding:14px;border:1px solid #ffffff25;border-radius:16px;background:#ffffff08;color:var(--muted);font-size:13px;line-height:1.6}
.qrisGuide-body strong{color:var(--text)}
.qrisGuide-body ol{margin:8px 0 0;padding-left:20px}
.qrisGuide-body li{margin:7px 0}
.qrImg.big{width:240px;height:240px}
.co-actions-row{display:flex;gap:10px;margin-top:12px}
.co-actions-row .co-actions,.co-actions-row>#invPay{flex:1;min-width:0}
.co-actions{display:flex;gap:10px}
.co-actions button,.co-actions-row>#invPay{flex:1;min-width:0;margin-top:0!important;width:auto!important}

/* INVOICE */
.inv-status{border-radius:18px;padding:16px 18px;margin-bottom:14px;display:flex;align-items:flex-start;gap:14px}
.inv-status.pending{background:linear-gradient(135deg,#2a200d,#1a1408);border:1px solid #6e552a}
.inv-status.approved{background:linear-gradient(135deg,#0d2a1c,#091a12);border:1px solid #2a6e46}
.inv-status.rejected{background:linear-gradient(135deg,#2a0d0d,#1a0808);border:1px solid #8b3333}
.inv-status .si-body{min-width:0;flex:1}
.inv-status .si-title{font-size:16px;font-weight:700;margin-bottom:5px;line-height:1.3}
.inv-status .si-desc{font-size:12.5px;color:var(--muted);line-height:1.45}
.inv-status .si-icon{flex-shrink:0;display:grid;place-items:center;width:42px;height:42px;border-radius:13px;border:1px solid #ffffff30;background:#ffffff12}
.inv-status .si-icon svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.inv-status.pending .si-icon{color:var(--amber)}
.inv-status.approved .si-icon{color:var(--green)}
.inv-status.rejected .si-icon{color:var(--red)}
.inv-countdown{display:inline-block;margin-top:10px;font-size:12.5px;color:var(--amber);font-weight:650;font-variant-numeric:tabular-nums;background:#f5c45114;border:1px solid #6e552a;border-radius:999px;padding:5px 12px;line-height:1.2}
.inv-ref{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:650;letter-spacing:.6px;color:var(--silver);cursor:pointer;user-select:all;-webkit-user-select:all;padding:2px 8px;border-radius:8px;border:1px dashed #ffffff2b;transition:color .15s,background .15s,border-color .15s}
.inv-ref.copied{color:var(--green);border-color:var(--green);background:#22c55e1f}
.inv-ref.copied::after{content:'tersalin';font-family:inherit;font-size:10px;font-weight:600;margin-left:7px;letter-spacing:0}
.inv-badge{font-size:11px;font-weight:700;padding:4px 11px;border-radius:999px;letter-spacing:.3px;white-space:nowrap}
.inv-badge.unpaid{background:#f5c4511f;color:var(--amber);border:1px solid #6e552a}
.inv-badge.paid{background:#22c55e1f;color:var(--green);border:1px solid #2a6e46}
.inv-badge.failed{background:#ef44441f;color:var(--red);border:1px solid #8b3333}
.inv-pkg{align-items:flex-start!important;gap:12px}
.inv-pkg>span:first-child{min-width:0}
.inv-pkg-name{font-weight:650;display:block}
.inv-pkg-price{white-space:nowrap;font-weight:600}
.inv-pay-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}
.inv-pay-row.total{border:0;border-top:1px solid var(--line);margin-top:4px;padding-top:12px;font-weight:700;font-size:15px}
.inv-pay-row>span{overflow-wrap:anywhere}
.inv-product h2{font-size:15px;font-weight:650;margin:0 0 6px}
/* ikon di h2 Akses Produk: #invoiceView bukan .section, jadi rule global tidak match
   → SVG fallback ke ukuran intrinsik dan tampil raksasa. Kunci ukurannya di sini. */
.inv-product h2 .ic{width:15px;height:15px;vertical-align:-2px;margin-right:5px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.inv-cta-row{display:flex;gap:10px;margin-top:14px}
.inv-cta-row button{flex:1;min-height:40px;padding:8px 14px;font-size:13px;border-radius:14px}

/* PRINT */
@media print{
  body::before{display:none!important}
  body{background:#fff!important;color:#111!important}
  body::before,body::after{display:none!important}
  .topbar,.bottomnav,#invBack,#invPrint,.co-head button,#invPay,#invActions,.qrisGuide,#invProduct .inv-cta-row{display:none!important}
  #invoiceView{display:block!important}
  .shell{max-width:100%!important;padding:0!important}
  .inv-status,.panel.glass,#invoiceView .inv-status,#invoiceView .panel{background:#fff!important;border:1px solid #ccc!important;box-shadow:none!important;break-inside:avoid}
  .inv-scrim{background:transparent!important;border:0!important;padding:0!important}
  .inv-status .si-title{color:#111!important}
  .inv-status .si-desc{color:#444!important}
  .inv-status .si-icon{display:none!important}
  .inv-countdown{color:#666!important;background:#fff!important}
  .inv-badge{background:#fff!important;color:#333!important;border-color:#999!important}
  .inv-ref{border-color:#999!important;color:#222!important}
  .inv-pay-row{border-color:#ddd!important;color:#111!important}
  .inv-pay-row .muted{color:#555!important}
  .qrImg{box-shadow:none!important;border:1px solid #ccc!important}
  .inv-product{break-inside:avoid}
  .co-head{display:flex!important}
  .co-title{color:#111!important}
  .qrHint,.qrHint+div{color:#444!important}
}

/* PACKAGES */
.packages{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.pkg{position:relative;padding:18px;border-radius:22px;cursor:pointer;text-align:left;color:#f3f8ff;
background:
  radial-gradient(30% 44% at 9% 0%, rgba(255,255,255,.30), rgba(255,255,255,.09) 48%, rgba(255,255,255,0) 78%),
  radial-gradient(120% 96% at 46% -14%, rgba(255,255,255,.20), rgba(255,255,255,.06) 54%, rgba(255,255,255,.02) 100%),
  linear-gradient(180deg, rgba(255,255,255,.92) 0 1.4px, rgba(255,255,255,.30) 5px, rgba(255,255,255,0) 11px),
  linear-gradient(0deg, rgba(0,0,0,.42) 0 2px, rgba(0,0,0,.16) 10px, rgba(0,0,0,.04) 22px, rgba(0,0,0,0) 34px),
  linear-gradient(180deg, rgba(32,42,60,.86), rgba(14,20,30,.92));
border:1px solid rgba(255,255,255,.44);
-webkit-backdrop-filter:blur(12px) saturate(1.45) contrast(1.03);backdrop-filter:blur(12px) saturate(1.45) contrast(1.03);
box-shadow:inset 0 1.4px 0 rgba(255,255,255,.80),inset 0 -1.4px 0 rgba(255,255,255,.20),inset 0 -20px 26px -22px rgba(0,0,0,.32),0 14px 30px -16px rgba(0,0,0,.50),0 34px 60px -34px rgba(0,0,0,.60);
transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.pkg:active{transform:scale(.98);border-color:rgba(255,255,255,.6)}
.pkg:hover{border-color:rgba(255,255,255,.56)}
.pkg .type{display:inline-flex;align-items:center;font-size:9.5px;font-weight:650;letter-spacing:.6px;text-transform:uppercase;color:#ffffff;margin-bottom:10px;padding:3px 9px;border-radius:999px;border:1px solid rgba(255,255,255,.34);background:rgba(255,255,255,.16);box-shadow:inset 0 1px 0 rgba(255,255,255,.28)}
.pkg .name{font-size:15px;font-weight:700;letter-spacing:-.2px;margin-bottom:2px;color:#fff}
.pkg .price{font-size:26px;font-weight:756;letter-spacing:-.8px;margin:2px 0 10px;color:#fff;font-variant-numeric:tabular-nums}
.pkg .meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px}
.pkg .meta span{font-size:10.5px;color:rgba(237,244,255,.88);border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.08);border-radius:999px;padding:4px 10px;box-shadow:inset 0 1px 0 rgba(255,255,255,.26)}
.pkg .desc{font-size:12px;color:var(--muted);line-height:1.5}
.pkg .pkgCta{margin-top:14px;width:100%;min-height:44px;border-radius:14px;font-size:13.5px}

/* DIALOG — bahan kaca silver (checkout, topup, key baru) */
.gaDialog{border:1px solid rgba(255,255,255,.52);border-radius:24px;padding:22px;max-width:420px;width:calc(100vw - 40px);color:#f4f8ff;
background:
  radial-gradient(30% 44% at 8% 0%, rgba(255,255,255,.26), rgba(255,255,255,.07) 48%, rgba(255,255,255,0) 78%),
  radial-gradient(64% 56% at 50% 122%, rgba(255,255,255,.16), rgba(255,255,255,0) 72%),
  linear-gradient(180deg, rgba(255,255,255,.92) 0 1.5px, rgba(255,255,255,.28) 5px, rgba(255,255,255,0) 12px),
  linear-gradient(0deg, rgba(0,0,0,.50) 0 2px, rgba(0,0,0,.20) 10px, rgba(0,0,0,.04) 24px, rgba(0,0,0,0) 36px),
  linear-gradient(180deg, rgba(24,32,46,.94), rgba(11,16,25,.97));
box-shadow:inset 0 1.5px 0 rgba(255,255,255,.82),inset 0 -1.5px 0 rgba(255,255,255,.22),inset 0 -26px 34px -26px rgba(0,0,0,.40),0 24px 60px -20px rgba(0,0,0,.72),0 60px 110px -50px rgba(0,0,0,.8);
-webkit-backdrop-filter:blur(18px) saturate(1.4) contrast(1.03);backdrop-filter:blur(18px) saturate(1.4) contrast(1.03)}
.gaDialog::backdrop{background:radial-gradient(70% 54% at 50% 18%,rgba(9,15,26,.60),rgba(2,4,9,.84))}
.gaDialog[open]{animation:coPop .18s ease-out}
/* Dialog diberi tabindex=-1 supaya bisa jadi target fokus netral (mencegah Chrome
   auto-fokus tombol Batal). Kontainer dialog bukan kontrol interaktif, jadi outline
   fokusnya dibuang — ring hanya relevan untuk tombol/input di dalamnya. */
.gaDialog:focus,.gaDialog:focus-visible{outline:none}
.gaDialog h2{color:#fff;letter-spacing:-.4px}
.gaDialog input{background:rgba(8,13,22,.60);border-color:rgba(255,255,255,.26);color:#f2f7ff;box-shadow:inset 0 1.2px 0 rgba(255,255,255,.10)}
.gaDialog input::placeholder{color:rgba(226,236,250,.44)}
.gaDialog button.ghost{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.34);color:#f2f6ff}
.gaDialog button.ghost:hover{background:rgba(255,255,255,.16)}
.gaDialog button.gaDanger{color:#ffe9e9;background:radial-gradient(90% 120% at 50% -24%,rgba(255,255,255,.22),rgba(255,255,255,.04) 58%,rgba(255,255,255,0) 100%),rgba(240,112,112,.20);border:1px solid rgba(240,112,112,.52);box-shadow:inset 0 1.3px 0 rgba(255,255,255,.34),inset 0 -1.3px 0 rgba(255,255,255,.08),0 10px 24px -18px rgba(0,0,0,.5)}
.gaDialog button.gaDanger:hover{background:radial-gradient(90% 120% at 50% -24%,rgba(255,255,255,.28),rgba(255,255,255,.08) 58%,rgba(255,255,255,0) 100%),rgba(240,112,112,.30);border-color:rgba(240,112,112,.70)}
.gaDialog .panel.glass,.gaDialog .panel{background:radial-gradient(60% 40% at 12% 0%,rgba(255,255,255,.22),rgba(255,255,255,0) 76%),rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.24);box-shadow:inset 0 1.2px 0 rgba(255,255,255,.40),inset 0 -14px 18px -16px rgba(0,0,0,.26)}
.gaDialog .inv-pay-row{border-color:rgba(255,255,255,.16)}
.gaDialog .inv-pay-row.total{border-top-color:rgba(255,255,255,.24)}
.gaDialog .inv-pay-row.total>span:last-child{color:#fff}
.gaDialog .vchLabel{display:block;margin:0 0 8px;font-size:12px;color:var(--muted)}
.gaDialog .vchWrap{position:relative;display:block}
.gaDialog .vchInput{width:100%;min-height:46px;padding-right:46px;text-transform:uppercase;letter-spacing:.4px}
.gaDialog .vchInput.is-ok{border-color:rgba(91,222,138,.55);box-shadow:inset 0 1.2px 0 rgba(255,255,255,.10),0 0 0 1px rgba(91,222,138,.22)}
.gaDialog .vchInput.is-err{border-color:rgba(240,112,112,.55);box-shadow:inset 0 1.2px 0 rgba(255,255,255,.10),0 0 0 1px rgba(240,112,112,.20)}
.gaDialog .vchIc{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:32px;height:32px;border-radius:50%;pointer-events:none;opacity:0;transition:opacity .15s ease}
.gaDialog .vchIc.show{opacity:1}
.gaDialog .vchIc svg{width:18px;height:18px;display:block;margin:0;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;vertical-align:0}
.gaDialog .vchIc.ok{color:#5bde8a;background:rgba(91,222,138,.15)}
.gaDialog .vchIc.err{color:#f07070;background:rgba(240,112,112,.15)}
.gaDialog .vchIc.busy{color:var(--muted);background:rgba(255,255,255,.09)}
.gaDialog .vchIc.busy svg{animation:vchSpin .9s linear infinite;stroke-width:2.2}
@keyframes vchSpin{to{transform:rotate(360deg)}}
.gaDialog .vchSr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
@keyframes coPop{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){
  .pkg{background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.05)),#101725;-webkit-backdrop-filter:none;backdrop-filter:none}
  .gaDialog{background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.04)),#0d1420;-webkit-backdrop-filter:none;backdrop-filter:none}
}

/* BOTTOM NAV — liquid glass (sama dengan navbar admin panel) */
.bottomnav{
  position:fixed;left:50%;transform:translateX(-50%);width:min(calc(100% - 20px),940px);bottom:calc(10px + env(safe-area-inset-bottom));
  z-index:50;
  border-radius:26px;
  padding:6px;
  background:
    radial-gradient(28% 120% at 6% 0%, rgba(255,255,255,.34), rgba(255,255,255,.09) 48%, rgba(255,255,255,0) 78%),
    radial-gradient(60% 70% at 50% 135%, rgba(255,255,255,.16), rgba(255,255,255,0) 70%),
    linear-gradient(180deg, rgba(255,255,255,.92) 0 1.4px, rgba(255,255,255,.30) 5px, rgba(255,255,255,0) 11px),
    linear-gradient(0deg, rgba(0,0,0,.52) 0 2px, rgba(0,0,0,.24) 9px, rgba(0,0,0,.06) 20px, rgba(0,0,0,0) 32px),
    linear-gradient(90deg, rgba(0,0,0,.34) 0 2px, rgba(0,0,0,.09) 12px, rgba(0,0,0,0) 34px),
    linear-gradient(270deg, rgba(0,0,0,.34) 0 2px, rgba(0,0,0,.09) 12px, rgba(0,0,0,0) 34px),
    linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.02) 44%, rgba(0,0,0,.16));
  border:1px solid rgba(255,255,255,.42);
  -webkit-backdrop-filter:blur(13px) saturate(1.55) contrast(1.04);
  backdrop-filter:blur(13px) saturate(1.55) contrast(1.04);
  box-shadow:
    inset 0 1.5px 0 rgba(255,255,255,.82), inset 0 -1.5px 0 rgba(255,255,255,.22),
    inset 0 -22px 30px -22px rgba(0,0,0,.30), 0 2px 6px -3px rgba(0,0,0,.20),
    0 16px 30px -14px rgba(0,0,0,.34), 0 46px 84px -44px rgba(0,0,0,.64);
  isolation:isolate;
}
/* specular highlight atas (kilau kaca) */
.bottomnav::before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;
  background:radial-gradient(ellipse at 26% 0%,#ffffff1f,transparent 60%);
  box-shadow:inset 1px 1px 0 #f7f7f742,inset -1px -1px 0 #cdcdcd1a;
}
/* rim edge gradasi */
.bottomnav::after{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;padding:1px;
  background:radial-gradient(ellipse at 26% 0%,#ffffffc4 0,#e9e9e95e 20%,transparent 68%);
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;
}
.bottomnav .inner{position:relative;max-width:960px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:2px}
/* pil kaca yang geser mengikuti tab aktif */
.nav-indicator{
  position:absolute;top:5px;left:0;height:calc(100% - 10px);width:25%;border-radius:20px;
  pointer-events:none;z-index:0;opacity:0;
  background:linear-gradient(150deg,rgba(255,255,255,.34),rgba(255,255,255,.09));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 6px 16px rgba(0,0,0,.4);
  -webkit-backdrop-filter:blur(6px) saturate(140%);backdrop-filter:blur(6px) saturate(140%);
  transform:translateX(0) scaleX(1);transform-origin:left center;will-change:transform,opacity;
}
.nav-indicator.ready{opacity:1}
.nav-indicator.snap{transition:none}
.nav-indicator.glide{transition:transform .34s cubic-bezier(.22,1.4,.36,1),opacity .2s ease}
.navBtn{
  position:relative;z-index:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  background:none;border:none;padding:9px 4px 8px;min-height:auto;border-radius:20px;
  color:var(--dim);font-size:10px;letter-spacing:.1px;
  transition:color .18s ease,transform .18s ease;
}
.navBtn:active{transform:scale(.94)}
.navBtn .ico{display:block;line-height:0}
/* buang margin-right + vertical-align global `button svg` biar ikon pas di tengah label */
.navBtn .ico svg{width:22px;height:22px;margin:0;vertical-align:0;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:stroke-width .18s ease}
.navBtn.active{color:#fff}
.navBtn.active .ico svg{stroke-width:2.2}
/* fallback kalau browser tidak dukung backdrop-filter */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .bottomnav{background:#1b1b1bee}
  .nav-indicator{background:linear-gradient(150deg,#ffffff40,#ffffff1a)}
}
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){
  .bottomnav{background:#1b1b1bf2;-webkit-backdrop-filter:none;backdrop-filter:none}
  .nav-indicator{background:linear-gradient(150deg,#ffffff3d,#ffffff17);-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media(prefers-reduced-motion:reduce){
  .nav-indicator.glide,.nav-indicator.settle{transition:none}
  .navBtn,.navBtn .ico svg{transition:none}
}

footer{color:#9a9a9a;font-size:11px;padding:18px 0 8px;text-align:center}
.codeblock{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.6;background:#0d0d0d;border:1px solid var(--line);border-radius:14px;padding:14px;margin:0;width:100%;overflow-x:auto;white-space:pre;color:#d6d6d6}
.modelPrice{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:4px;font-size:10px;color:var(--muted)}.modelPrice .prow{display:flex;gap:8px;flex-wrap:wrap}.modelPrice span{padding:3px 6px;border:1px solid #444;border-radius:6px}.modelRow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.modelRow:last-child{border:0}
.modelRow code{color:var(--silver)}
.modelRow .mBadge{display:inline-block;vertical-align:middle;margin-left:6px;font-size:9px;font-weight:700;letter-spacing:.5px;padding:2px 8px;border-radius:10px;border:1px solid #656565;flex-shrink:0}
.modelRow .mBadge.on{color:#5bde8a;border-color:#2a6e46;background:#0d2a1c}
.modelRow .mBadge.off{color:#f07070;border-color:#8b3333;background:#2a0d0d;border-style:dashed}
.modelRow .mBadge.disc{color:#5bde8a;border-color:#2a6e46;background:#0d2a1c}
.modelRow .mBadge.vis{color:#7db8ff;border-color:#2f5a8f;background:#0d1a2a}
.discount-badge{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.5px;padding:2px 8px;border-radius:10px;color:#5bde8a;border:1px solid #2a6e46;background:#0d2a1c;margin-left:8px;vertical-align:middle}
.modelRow.dim{opacity:.55}
.modelFam{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin:16px 0 4px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.modelFam:first-child{margin-top:0}
/* Kaca kartu kuota + topbar: fallback tanpa backdrop-filter & mode kontras */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .quotaCard{background:radial-gradient(22% 70% at 10% 10%,rgba(255,255,255,.50),rgba(255,255,255,0) 78%),linear-gradient(160deg,rgba(255,255,255,.30),rgba(255,255,255,.10)),rgba(18,28,44,.86)}
  .topbar{background:radial-gradient(26% 110% at 8% 0%,rgba(255,255,255,.40),rgba(255,255,255,0) 78%),linear-gradient(160deg,rgba(255,255,255,.26),rgba(255,255,255,.08)),rgba(18,22,30,.88)}
}
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){
  .quotaCard{-webkit-backdrop-filter:none;backdrop-filter:none;background:linear-gradient(160deg,rgba(255,255,255,.16),rgba(255,255,255,.06)),rgba(10,17,28,.94)}
  .topbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.05)),rgba(10,14,22,.94)}
  .iconBtn,.keyCard,.kc-value,.kc-btn{background-image:none}
  .iconBtn,.keyCard{background-color:rgba(12,19,31,.94)}
  .kc-value{background-color:rgba(6,11,20,.86)}
  .kc-btn{background-color:rgba(20,28,42,.92)}
  .iconBtn::after{display:none}
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .keyCard{-webkit-backdrop-filter:none;backdrop-filter:none;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.05)),rgba(16,23,35,.94)}
}
@media(max-width:520px){.qc-grid{grid-template-columns:1fr 1fr}.iconGrid{grid-template-columns:repeat(4,1fr)}.packages{grid-template-columns:1fr}.brand{font-size:16px}.chip{max-width:120px}}
/* ikon inline di teks/heading */
.section h2.h2ic svg,.panel p .ic,.qrisGuide summary .ic{width:15px;height:15px;vertical-align:-2px;margin-right:5px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
#quotaWarnIcon{display:grid;place-items:center}
#quotaWarnIcon svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;color:var(--amber)}
button .ic{width:16px;height:16px;vertical-align:-3px;margin-right:5px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
/* Password field + tombol mata (lihat/tutup). Dipakai di form auth dan panel Config. */
.pwWrap{position:relative;display:block}
.pwWrap input{width:100%;padding-right:46px}
.pwEye{position:absolute;top:50%;right:6px;transform:translateY(-50%);width:36px;height:36px;min-height:0;padding:0;display:grid;place-items:center;border:0;border-radius:12px;background:transparent;color:var(--muted);cursor:pointer}
.pwEye:hover{color:var(--text)}
.pwEye:active{transform:translateY(-50%) scale(.94)}
.pwEye .ic{width:19px;height:19px;margin:0;vertical-align:0;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* --- Keamanan: 2FA + perangkat/sesi (2026-10-28) --- */
.cfgH{font-size:14px;font-weight:700;margin:0 0 8px;letter-spacing:.2px}
.cfgRow{display:flex;align-items:center;gap:10px;margin-bottom:4px}
#twofaSecret{cursor:pointer;user-select:all;word-break:break-all;white-space:normal;text-align:center;letter-spacing:1px}
.sessRow{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid rgba(255,255,255,.10);border-radius:16px;background:rgba(20,24,32,.55)}
.sessRow + .sessRow{margin-top:10px}
.sessRow.sessCur{background:rgba(20,52,36,.5);border-color:rgba(91,222,138,.45)}
.sessIc{flex-shrink:0;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:#cfe8d6}
.sessRow.sessCur .sessIc{color:#5bde8a;border-color:rgba(91,222,138,.45);background:rgba(91,222,138,.10)}
.sessIc svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.sessInfo{min-width:0;flex:1}
.sessHead{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sessDev{font-weight:700;font-size:14px}
.sessMeta{font-size:12px;color:var(--dim);margin-top:3px}
.sessMeta b{color:var(--text);font-weight:600}
.sessKick{min-height:38px;padding:8px 16px;border-radius:12px;font-size:13px;flex-shrink:0}
.sessWide{width:100%}
.sessActions{display:grid;gap:10px;margin-top:12px}
#sessShowAll{margin-top:12px}
#twofaCodes{white-space:pre-line;letter-spacing:1.5px;text-align:center}
