/* RTRW Digital — komponen kartu sampah, QR, scanner & titik pembuangan */

/* ---------- umum ---------- */
.wfull{width:100%;justify-content:center}
.mt4{margin-top:4px}
.note-soft{display:flex;gap:9px;align-items:flex-start;background:var(--green-050);border:1px solid var(--green-100);border-radius:12px;padding:11px 13px;font-size:12px;line-height:1.55;color:var(--ink-2)}
.note-soft svg{flex:0 0 auto;color:var(--green);margin-top:1px}
.mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.mini-stat{background:#f7faf8;border:1px solid var(--line);border-radius:13px;padding:11px 13px}
.mini-stat span{display:block;font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.mini-stat b{display:block;font-size:16px;letter-spacing:-.02em;margin-top:3px;color:var(--ink)}
.status-pill{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;letter-spacing:.03em;padding:4px 9px;border-radius:99px;white-space:nowrap}
.status-pill.ok{background:#e6f4ec;color:#0b7a44}
.status-pill.warn{background:#fdf1dc;color:#a5720d}
.status-pill.bad{background:#fbe8e7;color:#b83a34}
.chip-ok{background:#e6f4ec!important;color:#0b7a44!important;border-color:#cfe8da!important;font-weight:800}

/* ---------- kartu sampah ---------- */
.kartu-wrap{background:linear-gradient(150deg,#eaf5ef,#f8fcfa);display:flex;align-items:center;justify-content:center;padding:26px!important}
.kartu-sampah{position:relative;width:100%;max-width:520px;border-radius:22px;padding:20px 22px;color:#fff;background:
  radial-gradient(120% 90% at 100% 0%,rgba(120,214,160,.38),transparent 55%),
  radial-gradient(90% 70% at 0% 100%,rgba(5,60,33,.55),transparent 62%),
  linear-gradient(135deg,#12924f 0%,#0a6b3b 55%,#07502c 100%);
  box-shadow:0 26px 46px -26px rgba(7,80,44,.75), inset 0 1px 0 rgba(255,255,255,.18);
  overflow:hidden}
.kartu-sampah:after{content:"";position:absolute;width:230px;height:230px;right:-90px;bottom:-120px;border-radius:50%;border:26px solid rgba(255,255,255,.07)}
.ks-top{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2}
.ks-brand{display:flex;align-items:center;gap:9px}
.ks-logo{width:36px;height:36px;border-radius:11px;background:rgba(255,255,255,.16);display:grid;place-items:center;border:1px solid rgba(255,255,255,.22)}
.ks-brand b{display:block;font-size:12.5px;letter-spacing:.14em}
.ks-brand span{display:block;font-size:10px;opacity:.75;letter-spacing:.05em}
.ks-live{font-size:9.5px;font-weight:800;letter-spacing:.16em;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.25);padding:5px 9px;border-radius:99px}
.ks-body{display:flex;gap:16px;justify-content:space-between;align-items:flex-end;margin-top:22px;position:relative;z-index:2}
.ks-label{font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;opacity:.7}
.ks-name{font-size:22px;font-weight:800;letter-spacing:-.02em;margin-top:2px;line-height:1.15}
.ks-meta{font-size:11px;opacity:.82;margin-top:3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em}
.ks-stats{display:flex;gap:18px;margin-top:16px}
.ks-stats b{display:block;font-size:15px;letter-spacing:-.01em}
.ks-stats span{display:block;font-size:9.5px;text-transform:uppercase;letter-spacing:.1em;opacity:.7;margin-top:1px}
.ks-qr{background:#fff;border-radius:14px;padding:8px;flex:0 0 auto}
.ks-qr .qr-box{padding:0;border:0;background:#fff}
.ks-qr img,.ks-qr canvas{display:block;width:100%!important;height:auto!important}
.ks-code{font-family:ui-monospace,monospace;font-size:10.5px;font-weight:800;color:#0f231b;text-align:center;letter-spacing:.09em;margin-top:5px}
.ks-foot{display:flex;justify-content:space-between;gap:10px;font-size:9px;letter-spacing:.02em;opacity:.72;margin-top:18px;padding-top:11px;border-top:1px solid rgba(255,255,255,.18);position:relative;z-index:2}

/* ---------- QR & reward ---------- */
.qr-box{display:inline-flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:9px}
.qr-canvas{line-height:0}
.tier-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;padding:6px 11px;border-radius:99px;letter-spacing:.02em}
.poin-big{font-size:38px;font-weight:800;letter-spacing:-.04em;line-height:1;color:var(--green-800)}
.reward-block{margin-top:2px}

/* ---------- scanner ---------- */
.scan-grid{grid-template-columns:minmax(320px,420px) minmax(0,1fr);align-items:start}
.scan-stage{position:relative;border-radius:16px;overflow:hidden;background:#0c1a14;aspect-ratio:4/3;max-height:340px;display:flex;align-items:center;justify-content:center}
.scan-off{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:4px;text-align:center;color:#cfe8da;padding:20px;background:radial-gradient(circle at 50% 35%,rgba(94,224,143,.1),transparent 65%)}
.scan-off svg{color:#5ee08f;opacity:.9}
.scan-off b{font-size:13px;color:#eaf7ef;letter-spacing:.01em}
.scan-off span{font-size:11px;opacity:.62;max-width:200px;line-height:1.5}
.scan-stage.live .scan-off{display:none}
.scan-stage video{width:100%;height:100%;object-fit:cover;display:block;opacity:0;transition:.25s}
.scan-stage.live video{opacity:1}
.scan-frame{position:absolute;inset:14%;border-radius:18px;pointer-events:none}
.scan-frame span{position:absolute;width:34px;height:34px;border:3px solid #5ee08f;border-radius:9px}
.scan-frame span:nth-child(1){top:0;left:0;border-right:0;border-bottom:0;border-top-left-radius:14px}
.scan-frame span:nth-child(2){top:0;right:0;border-left:0;border-bottom:0;border-top-right-radius:14px}
.scan-frame span:nth-child(3){bottom:0;left:0;border-right:0;border-top:0;border-bottom-left-radius:14px}
.scan-frame span:nth-child(4){bottom:0;right:0;border-left:0;border-top:0;border-bottom-right-radius:14px}
.scan-frame i{position:absolute;left:8%;right:8%;height:2px;background:linear-gradient(90deg,transparent,#5ee08f,transparent);top:20%;box-shadow:0 0 14px #5ee08f;opacity:0}
.scan-stage.live .scan-frame i{opacity:1;animation:scanline 2.1s ease-in-out infinite}
@keyframes scanline{0%{top:14%}50%{top:84%}100%{top:14%}}
.scan-hint{position:absolute;left:12px;right:12px;bottom:12px;text-align:center;font-size:11.5px;font-weight:600;color:#eaf7ef;background:rgba(3,22,13,.6);backdrop-filter:blur(6px);border-radius:10px;padding:8px 10px}
.scan-stage.live .scan-hint{opacity:.85}
.scan-stage:not(.live) .scan-hint{display:none}
.scan-person{display:flex;gap:12px;align-items:center;padding:12px;border:1px solid var(--green-100);background:linear-gradient(120deg,#f2fbf6,#fff);border-radius:15px}
.scan-person .meta{min-width:0;flex:1}
.scan-person .meta b{display:block;font-size:14.5px;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scan-person .n1{font-size:11px;color:var(--ink-2);margin-top:2px;white-space:nowrap}
.scan-person .n2{font-size:10px;color:var(--muted);margin-top:1px;font-family:ui-monospace,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scan-person .end{display:flex;flex-direction:column;align-items:flex-end;gap:5px;text-align:right;flex:0 0 auto}
.scan-person .end b{font-size:12.5px;color:var(--green-800);white-space:nowrap}
.scan-person .end .tier-chip{font-size:10px;padding:4px 8px}
.mini-stat span{display:block;font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-stat b{display:block;font-size:14.5px;letter-spacing:-.02em;margin-top:3px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.total-box{display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(120deg,#0b6b3c,#0f8a4f);color:#fff;border-radius:14px;padding:13px 16px;flex-wrap:wrap}
.total-box>span{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.8}
.total-box>b{font-size:22px;letter-spacing:-.03em}
.total-box .poin{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.22);border-radius:99px;padding:5px 10px;font-size:11px;text-transform:none;letter-spacing:0;opacity:1}
.total-box .poin b{font-size:12.5px}
.success-fly{display:grid;place-items:center;text-align:center;gap:4px;background:radial-gradient(circle at 50% 0%,#e7f8ee,#fff);border:1px solid var(--green-100);border-radius:16px;padding:22px 16px;color:var(--green)}
.success-fly svg{color:#0f7d45}
.success-fly b{font-size:15.5px;color:var(--green-800);letter-spacing:-.01em}
.success-fly span{font-size:11.5px;color:var(--muted)}

/* ---------- titik pembuangan ---------- */
.tps-card .card-head .sub{display:flex;align-items:center;gap:5px}
.tps-body{display:flex;gap:16px;align-items:center}
.tps-qr{flex:0 0 auto;text-align:center}
.tps-qr>span{display:block;font-size:9.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:6px}
.tps-info{flex:1;min-width:0}
.tps-info .row{display:flex;justify-content:space-between;gap:8px;font-size:12px;padding:5px 0;border-bottom:1px dashed var(--line)}
.tps-info .row span{color:var(--muted)}
.tps-info .row b{text-align:right}
.tps-hero{display:flex;gap:16px;align-items:center;border-radius:20px;padding:20px 22px;color:#fff;background:
  radial-gradient(110% 100% at 100% 0%,rgba(126,220,166,.4),transparent 58%),linear-gradient(135deg,#0f8a4f,#07502c);
  box-shadow:0 22px 38px -26px rgba(7,80,44,.8)}
.tps-hero .ic{width:54px;height:54px;border-radius:16px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.24);display:grid;place-items:center;flex:0 0 auto}
.tps-hero .eyebrow{font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;opacity:.75}
.tps-hero h2{font-size:23px;color:#fff;margin:2px 0 2px;letter-spacing:-.02em}
.tps-hero p{font-size:12px;margin:0;opacity:.85}

@media (max-width:760px){
  .kartu-wrap{padding:14px!important}
  .kartu-sampah{padding:16px;border-radius:18px}
  .ks-name{font-size:19px}
  .ks-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px}
  .ks-body{gap:10px}
  .ks-qr{width:118px}
  .ks-stats{gap:12px;margin-top:12px}
  .ks-stats b{font-size:13px}
  .ks-foot{font-size:8px}
  .tps-body{flex-direction:row;gap:12px}
  .tps-qr .qr-box{padding:6px}
  .tps-qr .qr-canvas img,.tps-qr .qr-canvas canvas{width:104px!important;height:104px!important}
  .scan-stage{aspect-ratio:1/1}
  .poin-big{font-size:32px}
  .tps-hero{padding:16px;gap:12px}
  .tps-hero h2{font-size:19px}
  .mini-grid{gap:7px}
}
