/* ============ RESET ============ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
img,svg{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
ul{list-style:none}
a{color:inherit;text-decoration:none}

/* ============ TOKENS ============ */
:root{
  --bg:#ffffff; --bg-soft:#f7f7fb; --surface:#ffffff; --surface-2:#f5f5fa;
  --text:#14141f; --text-muted:#5b5f6d; --text-dim:#9497a6;
  --border:rgba(20,20,31,.08); --border-strong:rgba(20,20,31,.14);
  --violet:#7c3aed; --cyan:#06b6d4; --pink:#ec4899; --slate:#64748b;
  --mint:#0da96f; --red:#e63946;
  --violet-tint:rgba(124,58,237,.10); --cyan-tint:rgba(6,182,212,.10);
  --pink-tint:rgba(236,72,153,.10); --slate-tint:rgba(100,116,139,.10);
  --mint-tint:rgba(13,169,111,.12); --red-tint:rgba(230,57,70,.10);
  --grad-2:linear-gradient(135deg,var(--violet),var(--pink));
  --grad-3:linear-gradient(120deg,var(--violet) 0%,var(--cyan) 52%,var(--pink) 100%);
  --shadow-xs:0 1px 2px rgba(20,20,31,.05); --shadow-sm:0 2px 8px rgba(20,20,31,.05);
  --shadow-md:0 14px 30px -14px rgba(124,58,237,.22); --shadow-lg:0 30px 64px -22px rgba(20,20,31,.16);
  --shadow-glow:0 12px 24px -8px rgba(124,58,237,.30),0 6px 14px -6px rgba(236,72,153,.22);
  --radius-sm:10px; --radius-md:16px; --radius-lg:24px;
  --ease:cubic-bezier(.16,.84,.44,1);
}
body{background:var(--bg);color:var(--text);font-family:'Plus Jakarta Sans',sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;min-height:100vh}
.mono{font-family:'IBM Plex Mono',monospace;font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid var(--violet);outline-offset:3px;border-radius:4px}
.grad-text{background:var(--grad-3);-webkit-background-clip:text;background-clip:text;color:transparent}
.wrap{max-width:1180px;margin:0 auto;padding:0 28px}
@media (max-width:640px){.wrap{padding:0 18px}}

.view{display:none}
.view.active{display:block;animation:viewIn .5s var(--ease)}
@keyframes viewIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.nav{position:sticky;top:0;z-index:40;backdrop-filter:blur(14px);background:rgba(255,255,255,.82);border-bottom:1px solid var(--border)}
.nav-in{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 28px;max-width:1180px;margin:0 auto;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;letter-spacing:-.01em}
.brand-mark{width:28px;height:28px;border-radius:9px;background:var(--grad-2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.brand-mark svg{width:15px;height:15px}
.brand small{display:block;font-family:'IBM Plex Mono',monospace;font-weight:500;font-size:10px;letter-spacing:.08em;color:var(--text-dim);text-transform:uppercase;margin-top:1px}
.nav-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:99px;font-weight:700;font-size:14px;transition:all .22s var(--ease);border:1.5px solid transparent;white-space:nowrap}
.btn svg{width:16px;height:16px}
.btn-primary{background:var(--grad-2);color:#fff;box-shadow:var(--shadow-glow)}
.btn-primary:hover{transform:translateY(-1px)}
.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.btn-ghost{border-color:var(--border-strong);color:var(--text-muted);background:#fff}
.btn-ghost:hover{border-color:var(--violet);color:var(--violet)}
.btn-sm{padding:9px 16px;font-size:12.5px}

.hero{padding:64px 0 40px;text-align:center}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--violet);background:#fff;border:1px solid var(--border-strong);padding:6px 14px;border-radius:99px;margin-bottom:22px}
.eyebrow::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--grad-2)}
.hero h1{font-weight:800;font-size:clamp(30px,4.4vw,50px);line-height:1.1;letter-spacing:-.02em;max-width:820px;margin:0 auto 18px;color:var(--text)}
.hero p.lead{color:var(--text-muted);max-width:520px;margin:0 auto;font-size:16.5px}
.hero-cta{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:32px;flex-wrap:wrap}
.hero-cta .textlink{font-size:14px;color:var(--text-dim);font-weight:700}
.hero-cta .textlink:hover{color:var(--violet)}

.section{padding:56px 0}
.section-head{text-align:center;max-width:580px;margin:0 auto 34px}
.section-head h2{font-size:27px;font-weight:800;margin:14px 0 10px;letter-spacing:-.01em}
.section-head p{color:var(--text-dim);font-size:14.5px}
.static-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media (max-width:820px){.static-grid{grid-template-columns:repeat(2,1fr)}}
.static-card{border:1px solid var(--border);border-radius:var(--radius-md);padding:20px 18px;background:var(--surface);transition:all .25s var(--ease)}
.static-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.icon-chip{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;margin-bottom:13px;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.icon-chip svg{width:19px;height:19px}
.static-card h3{font-size:14.5px;font-weight:700;margin-bottom:4px}
.static-card p{font-size:12.5px;color:var(--text-dim);line-height:1.45}

.how-strip{display:flex;align-items:flex-start}
.how-item{flex:1;text-align:center;padding:0 18px;position:relative}
.how-num{width:46px;height:46px;border-radius:50%;background:var(--grad-2);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:16px;margin:0 auto 16px;position:relative;z-index:1;box-shadow:var(--shadow-glow)}
.how-item h4{font-size:15px;font-weight:700;margin-bottom:6px}
.how-item p{font-size:13px;color:var(--text-dim);line-height:1.55;max-width:220px;margin:0 auto}
.how-item::after{content:'';position:absolute;top:23px;left:calc(50% + 42px);width:calc(100% - 84px);height:1px;background:var(--border-strong)}
.how-item:last-child::after{display:none}
@media (max-width:760px){.how-strip{flex-direction:column;gap:30px}.how-item::after{display:none}}

.cta-band{background:linear-gradient(120deg,var(--violet-tint),var(--cyan-tint) 55%,var(--pink-tint));border:1px solid var(--border);border-radius:var(--radius-lg);padding:48px 30px;text-align:center}
.cta-band h3{font-size:25px;font-weight:800;margin-bottom:8px;letter-spacing:-.01em}
.cta-band p{color:var(--text-muted);font-size:14px;margin-bottom:24px}
footer.site-foot{border-top:1px solid var(--border);padding:30px 0;text-align:center}
footer.site-foot p{font-size:12.5px;color:var(--text-dim)}
footer.site-foot b{color:var(--text-muted)}

.auth-shell{min-height:calc(100vh - 71px);display:flex;align-items:center;justify-content:center;padding:44px 20px;background:var(--bg-soft)}
.auth-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:38px 32px;box-shadow:var(--shadow-lg)}
.auth-brand{display:flex;justify-content:center;margin-bottom:20px}
.auth-brand .brand-mark{width:42px;height:42px;border-radius:13px}
.auth-brand .brand-mark svg{width:21px;height:21px}
.auth-card h2{font-size:23px;font-weight:800;text-align:center;margin-bottom:6px;letter-spacing:-.01em}
.auth-card p.sub{text-align:center;color:var(--text-dim);font-size:13.5px;margin-bottom:28px}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:12.5px;font-weight:700;color:var(--text-muted);margin-bottom:6px}
.form-group input[type=text],.form-group input[type=email],.form-group input[type=password]{width:100%;padding:11px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-size:14px;font-family:inherit;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
.form-group input:focus{border-color:var(--violet);outline:none;box-shadow:0 0 0 4px var(--violet-tint);background:#fff}
.form-group.error input{border-color:var(--red)}
.form-error{font-size:12px;color:var(--red);margin-top:6px;display:none}
.form-group.error .form-error{display:block}
.pw-wrap{position:relative}
.pw-wrap input{padding-right:42px}
.pw-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--text-dim);padding:6px}
.pw-toggle svg{width:17px;height:17px}
.pw-toggle .icon-eye-off{display:none}
.pw-toggle.shown .icon-eye{display:none}
.pw-toggle.shown .icon-eye-off{display:block}
.check-row{display:flex;align-items:flex-start;gap:9px;margin-bottom:22px;font-size:12.5px;color:var(--text-muted);line-height:1.5}
.check-row a{color:var(--violet);font-weight:700}
.check-row a:hover{text-decoration:underline}
.check-row input{margin-top:2px;accent-color:var(--violet);width:15px;height:15px;flex-shrink:0}
.auth-submit{width:100%;justify-content:center;padding:13px}
.auth-divider{display:flex;align-items:center;gap:12px;margin:22px 0;color:var(--text-dim);font-size:12px}
.auth-divider::before,.auth-divider::after{content:'';flex:1;height:1px;background:var(--border)}
.auth-foot{text-align:center;font-size:13.5px;color:var(--text-dim);margin-top:22px}
.auth-foot button{color:var(--violet);font-weight:700;display:inline}
.back-link{display:inline-flex;align-items:center;gap:7px;color:var(--text-dim);font-size:13px;font-weight:700;margin:20px 0 0 28px}

.legal-shell{max-width:760px;margin:0 auto;padding:30px 28px 60px}
.legal-article h1{font-size:32px;font-weight:800;letter-spacing:-.01em;margin-bottom:6px}
.legal-updated{color:var(--text-dim);font-size:13px;margin-bottom:32px}
.legal-article h2{font-size:18px;font-weight:800;margin:32px 0 10px;letter-spacing:-.01em}
.legal-article p{color:var(--text-muted);font-size:14.5px;line-height:1.75;margin-bottom:12px}
.legal-article ul{margin:10px 0 16px 0;padding-left:20px}
.legal-article li{color:var(--text-muted);font-size:14.5px;line-height:1.75;margin-bottom:8px;list-style:disc}
.legal-article b{color:var(--text);font-weight:700}
.legal-article a{color:var(--violet);font-weight:700}
.legal-article a:hover{text-decoration:underline}
@media (max-width:640px){.legal-shell{padding:20px 18px 50px}.legal-article h1{font-size:26px}}
.back-link:hover{color:var(--violet)}
.back-link svg{width:14px;height:14px}

.credit-chip{display:flex;align-items:center;gap:6px;font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:12px;color:var(--violet);background:linear-gradient(120deg,var(--violet-tint),var(--pink-tint));border:1px solid var(--border-strong);padding:7px 13px;border-radius:99px;flex-shrink:0}
.credit-chip svg{width:13px;height:13px}
.user-chip{display:flex;align-items:center;gap:8px;padding:5px 13px 5px 5px;border:1px solid var(--border-strong);border-radius:99px;flex-shrink:0;background:#fff}
.avatar{width:26px;height:26px;border-radius:50%;background:var(--grad-2);color:#fff;display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:800;flex-shrink:0}
.user-chip .js-username{font-size:13px;font-weight:700}
@media (max-width:760px){.user-chip .js-username{display:none}}
.app-hero{padding:40px 0 6px}
.app-hero h1{font-size:clamp(23px,3vw,30px);font-weight:800;margin-bottom:6px;letter-spacing:-.01em}
.app-hero p{color:var(--text-dim);font-size:14.5px}

.stats{padding:22px 0 8px}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media (max-width:920px){.stats-grid{grid-template-columns:repeat(2,1fr)}}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px;box-shadow:var(--shadow-xs);display:flex;flex-direction:column;min-height:148px}
.stat-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.stat-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.stat-icon svg{width:18px;height:18px}
.stat-delta{font-family:'IBM Plex Mono',monospace;font-size:10.5px;font-weight:600;color:var(--mint);background:var(--mint-tint);padding:3px 8px;border-radius:99px}
.stat-num{font-family:'IBM Plex Mono',monospace;font-size:27px;font-weight:700;line-height:1;margin-bottom:6px}
.stat-label{font-size:12.5px;color:var(--text-dim);font-weight:600}
.stat-link{margin-top:auto;padding-top:10px;font-size:11.5px;font-weight:700;color:var(--violet)}

.stage{padding:28px 0 20px}
.device{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}
.device-chrome{display:flex;align-items:center;gap:20px;padding:16px 22px;border-bottom:1px solid var(--border);background:var(--bg-soft)}
.chrome-dots{display:flex;gap:6px}
.chrome-dots span{width:9px;height:9px;border-radius:50%;background:var(--border-strong)}
.step-track{display:flex;align-items:center;gap:0;flex:1;justify-content:center}
.step-item{display:flex;align-items:center;gap:9px}
.step-dot{width:27px;height:27px;border-radius:50%;border:1.5px solid var(--border-strong);background:#fff;display:flex;align-items:center;justify-content:center;font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--text-dim);transition:all .35s var(--ease);flex-shrink:0}
.step-item span.label{font-size:13px;color:var(--text-dim);font-weight:700}
.step-item.current .step-dot{background:var(--grad-2);border-color:transparent;color:#fff;box-shadow:var(--shadow-glow)}
.step-item.current span.label{color:var(--text)}
.step-item.done .step-dot{border-color:var(--mint);background:var(--mint);color:#fff}
.step-item.done span.label{color:var(--text-muted)}
.step-item.failed .step-dot{border-color:var(--red);background:var(--red);color:#fff}
.step-item.failed span.label{color:var(--red)}
.step-line{width:44px;height:1px;background:var(--border-strong);margin:0 10px;position:relative;overflow:hidden}
.step-line::after{content:'';position:absolute;inset:0;background:var(--grad-2);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.step-line.filled::after{transform:scaleX(1)}
@media (max-width:640px){.step-item span.label{display:none}}

.device-body{position:relative;min-height:520px}
.step-panel{display:none;padding:40px 34px 44px}
.step-panel.active{display:block;animation:panelIn .5s var(--ease)}
@keyframes panelIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (max-width:640px){.step-panel{padding:26px 18px 32px}}

.modes-label{font-size:13px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:14px}
.mode-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:30px}
@media (max-width:820px){.mode-grid{grid-template-columns:repeat(2,1fr)}}
.mode-card{text-align:left;border:1.5px solid var(--border);border-radius:var(--radius-md);padding:18px 16px;background:var(--surface);transition:all .25s var(--ease);box-shadow:var(--shadow-xs)}
.mode-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}
.mode-card .icon-chip{background:var(--mc-tint);color:var(--mc-color)}
.mode-card h3{font-size:14.5px;font-weight:700;margin-bottom:4px}
.mode-card p{font-size:12.5px;color:var(--text-dim);line-height:1.4}
.mode-card[aria-checked="true"]{border-color:var(--mc-color);box-shadow:0 0 0 3px var(--mc-tint)}
.mode-card[aria-checked="true"] h3{color:var(--mc-color)}

.dropzone{border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);padding:44px 24px;text-align:center;transition:all .3s var(--ease);cursor:pointer;background:var(--bg-soft)}
.dropzone.ready{border-color:var(--violet);background:var(--violet-tint)}
.dropzone.drag{border-color:var(--violet);background:var(--violet-tint);transform:scale(1.01)}
.dropzone.has-file{border-style:solid}
.dz-icon{width:56px;height:56px;border-radius:16px;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--border);color:var(--text-dim);transition:all .3s var(--ease)}
.dropzone.ready .dz-icon{background:var(--grad-2);border-color:transparent;color:#fff;box-shadow:var(--shadow-glow)}
.dz-icon svg{width:26px;height:26px}
.dropzone h4{font-size:16.5px;font-weight:700;margin-bottom:6px}
.dropzone p.hint{color:var(--text-dim);font-size:13.5px;margin-bottom:18px}
.dz-formats{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--text-dim);letter-spacing:.02em}
.dz-file-name{font-size:13.5px;font-weight:700;color:var(--violet);margin-top:14px}
.dz-error{font-size:13px;color:var(--red);margin-top:12px;font-weight:600}

.proc-wrap{display:grid;grid-template-columns:1.15fr .85fr;gap:44px;align-items:center}
@media (max-width:820px){.proc-wrap{grid-template-columns:1fr;gap:30px}}
.proc-head{margin-bottom:22px}
.proc-head .eyebrow{margin-bottom:14px}
.proc-head h2{font-size:26px;font-weight:800;margin-bottom:6px;letter-spacing:-.01em}
.proc-head p{color:var(--text-dim);font-size:14px}
.checklist{display:flex;flex-direction:column;gap:4px;margin-top:26px}
.check-item{display:flex;align-items:center;gap:12px;padding:10px 4px;font-size:14px;color:var(--text-dim);transition:color .3s}
.check-item .c-box{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--border-strong);background:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .35s var(--ease)}
.check-item .c-box svg{width:11px;height:11px;opacity:0;transform:scale(.5);transition:all .3s var(--ease)}
.check-item.done{color:var(--text)}
.check-item.done .c-box{background:var(--mint);border-color:var(--mint)}
.check-item.done .c-box svg{opacity:1;transform:scale(1);color:#fff}
.check-item.active{color:var(--violet)}
.check-item.active .c-box{border-color:var(--violet)}
.wave-stage{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius-lg);padding:30px 22px;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:240px;position:relative;overflow:hidden}
.wave-row{display:flex;align-items:flex-end;justify-content:center;gap:3.5px;height:120px;width:100%}
.bar{width:5px;border-radius:3px;transition:background-color .9s var(--ease)}
.bar.c1{background:var(--violet)} .bar.c2{background:var(--cyan)} .bar.c3{background:var(--pink)}
.wave-caption{margin-top:18px;font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--text-dim);letter-spacing:.05em;text-align:center}

.error-box{background:var(--red-tint);border:1px solid var(--red);border-radius:var(--radius-md);padding:24px;text-align:center;max-width:520px;margin:40px auto}
.error-box svg{width:36px;height:36px;color:var(--red);margin:0 auto 14px}
.error-box h3{font-size:16px;font-weight:700;margin-bottom:8px}
.error-box p{font-size:13.5px;color:var(--text-muted);margin-bottom:18px;line-height:1.5}

.res-grid{display:grid;grid-template-columns:1fr 300px;gap:30px;align-items:start;min-width:0}
@media (max-width:900px){.res-grid{grid-template-columns:1fr}}
/* Fix bug CSS Grid klasik: item grid defaultnya min-width:auto, jadi nggak
   mau menyusut lebih kecil dari lebar alami konten di dalamnya (mis. baris
   tab dengan banyak label) — akibatnya di mobile kolom ini kepaksa lebar
   dan bikin teks/tab kepotong walau grid-nya sudah 1 kolom. */
.res-grid > *{min-width:0}
.device,.device-body,.step-panel,.stage{min-width:0}
.tabs{min-width:0}
.res-badge{display:inline-flex;align-items:center;gap:6px;font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.05em;padding:5px 12px;border-radius:99px;background:var(--accent-tint);color:var(--accent);border:1px solid var(--accent);font-weight:600;text-transform:uppercase}
.res-title{font-size:26px;font-weight:800;line-height:1.2;margin:12px 0 10px;letter-spacing:-.01em}
.res-head{display:flex;align-items:center;justify-content:space-between;gap:12px}

.history-search{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1.5px solid var(--border-strong);border-radius:99px;padding:9px 16px;min-width:260px}
.history-search svg{width:16px;height:16px;color:var(--text-dim);flex-shrink:0}
.history-search input{border:none;background:none;outline:none;font-size:13.5px;color:var(--text);width:100%;font-family:inherit}
.history-search input::placeholder{color:var(--text-dim)}
@media (max-width:600px){.history-search{min-width:0;width:100%}}

.analytics-row{margin-bottom:18px}
.analytics-row-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:7px}
.analytics-name{font-size:14.5px;font-weight:700;color:var(--text)}
.analytics-stats{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--text-dim)}
.analytics-bar-track{height:10px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.analytics-bar-fill{height:100%;border-radius:99px;transition:width .4s var(--ease)}

.input-mode-tabs{display:inline-flex;background:var(--surface-2);padding:4px;border-radius:99px;gap:2px;margin-bottom:18px;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
@media (max-width:520px){.input-mode-tabs{display:flex;width:100%;border-radius:var(--radius-md)}.input-mode-tab{flex:1;white-space:nowrap;padding:9px 10px;font-size:12.5px;justify-content:center}}
.input-mode-tab{padding:9px 18px;border-radius:99px;font-size:13.5px;font-weight:700;color:var(--text-dim);display:inline-flex;align-items:center;gap:6px}
.input-mode-tab.active{background:#fff;color:var(--text);box-shadow:var(--shadow-xs)}
.beta-chip{font-size:9.5px;font-weight:800;text-transform:uppercase;background:var(--pink-tint);color:var(--pink);padding:2px 7px;border-radius:99px;letter-spacing:.03em}
.record-box{border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);padding:36px 24px;text-align:center;background:var(--bg-soft)}
.record-timer{font-family:'IBM Plex Mono',monospace;font-size:32px;font-weight:700;color:var(--text);margin-bottom:14px}
.record-pulse{width:64px;height:64px;border-radius:50%;background:var(--red-tint);margin:0 auto 18px;display:flex;align-items:center;justify-content:center;transition:all .3s}
.record-pulse::after{content:'';width:20px;height:20px;border-radius:50%;background:var(--red);transition:all .3s}
.record-pulse.active{animation:recordPulse 1.4s ease-in-out infinite}
.record-pulse.active::after{border-radius:5px}
@keyframes recordPulse{0%,100%{box-shadow:0 0 0 0 rgba(230,57,70,.4)}50%{box-shadow:0 0 0 16px rgba(230,57,70,0)}}
.record-controls{display:flex;gap:10px;justify-content:center}

.modal-overlay{position:fixed;inset:0;background:rgba(20,20,31,.5);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}
.modal-card{background:#fff;border-radius:var(--radius-lg);padding:28px;max-width:420px;width:100%;max-height:85vh;overflow-y:auto;position:relative;box-shadow:var(--shadow-lg)}
.modal-close{position:absolute;top:16px;right:16px;width:30px;height:30px;border-radius:50%;color:var(--text-dim);display:flex;align-items:center;justify-content:center;font-size:14px}
.modal-close:hover{background:var(--surface-2)}
.modal-card h3{font-size:19px;font-weight:800;margin-bottom:6px}
.modal-sub{color:var(--text-dim);font-size:13px;line-height:1.5;margin-bottom:14px}
.credit-presets{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.credit-preset-btn{padding:12px 0;border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);font-weight:700;font-size:14px;text-align:center}
.credit-preset-btn:hover{border-color:var(--violet);color:var(--violet)}
.credit-preset-btn.active{border-color:var(--violet);background:var(--violet-tint);color:var(--violet)}
.topup-price-preview{font-family:'IBM Plex Mono',monospace;font-size:15px;font-weight:700;color:var(--text);margin-top:10px}
.transfer-box{background:var(--violet-tint);border:1px solid var(--violet);border-radius:var(--radius-md);padding:18px}
.transfer-amount{font-family:'IBM Plex Mono',monospace;font-size:24px;font-weight:800;color:var(--violet);margin-bottom:12px;text-align:center}
.transfer-row{display:flex;justify-content:space-between;font-size:13px;padding:6px 0;border-top:1px dashed var(--border-strong)}
.transfer-row span{color:var(--text-dim)}
.topup-history{border-top:1px solid var(--border);padding-top:6px;margin-top:20px}
.topup-hist-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;font-size:13px;border-bottom:1px solid var(--border)}
.topup-status-chip{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:99px;text-transform:uppercase}
.topup-status-chip.pending{background:var(--slate-tint);color:var(--slate)}
.topup-status-chip.approved{background:var(--mint-tint);color:var(--mint)}
.topup-status-chip.rejected{background:var(--red-tint);color:var(--red)}

.admin-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:18px 20px;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.admin-card-info b{display:block;font-size:14.5px}
.admin-card-info span{font-size:12.5px;color:var(--text-dim)}
.admin-card-amount{font-family:'IBM Plex Mono',monospace;font-weight:800;font-size:16px;color:var(--violet)}
.admin-card-actions{display:flex;gap:8px}
.video-deleted-notice{display:flex;align-items:center;gap:10px;background:var(--slate-tint);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:12px 16px;margin:16px 0;font-size:12.5px;color:var(--text-muted)}
.video-deleted-notice svg{width:18px;height:18px;color:var(--slate);flex-shrink:0}
.video-deleted-notice a{color:var(--violet);font-weight:700}
.edit-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--violet-tint);border:1px solid var(--violet);border-radius:var(--radius-md);padding:12px 16px;margin:16px 0}
.edit-bar-label{font-size:12.5px;font-weight:700;color:var(--violet)}
.edit-bar-actions{display:flex;gap:8px;flex-shrink:0}
.edit-field{width:100%;border:1.5px solid var(--border-strong);background:#fff;border-radius:var(--radius-sm);padding:10px 12px;font-family:inherit;font-size:14.5px;color:var(--text);resize:vertical}
.edit-field:focus{border-color:var(--violet);outline:none;box-shadow:0 0 0 3px var(--violet-tint)}
.edit-row{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px}
.edit-row .edit-field{flex:1}
.edit-remove-btn{width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);color:var(--red);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.edit-remove-btn:hover{background:var(--red-tint);border-color:var(--red)}
.edit-add-btn{font-size:13px;font-weight:700;color:var(--violet);padding:8px 0}
.edit-two-col{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.edit-two-col-3{display:grid;grid-template-columns:1fr 2fr 1fr;gap:8px}
@media (max-width:600px){.edit-two-col,.edit-two-col-3{grid-template-columns:1fr}}
.edit-fixed-label{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--text-dim);padding:10px 4px;flex-shrink:0;width:56px}
.res-meta{display:flex;flex-wrap:wrap;gap:16px;color:var(--text-dim);font-size:13px;margin-bottom:20px}
.res-meta span{display:flex;align-items:center;gap:6px}
.res-meta svg{width:14px;height:14px}
.speaker-panel{margin-bottom:22px}
.speaker-label{font-size:11.5px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px}
.speaker-label .speaker-hint{text-transform:none;font-weight:500;letter-spacing:0;color:var(--text-dim);font-size:12.5px}
.speaker-chips{display:flex;flex-wrap:wrap;gap:9px}
.speaker-chip{display:flex;align-items:center;gap:7px;background:var(--surface-2);border:1px solid var(--border);border-radius:99px;padding:5px 10px 5px 5px}
.sp-avatar{width:25px;height:25px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:800;flex-shrink:0}
.sp-name{font-size:13.5px;font-weight:700;color:var(--text);padding:3px 5px;border-radius:6px;outline:none;min-width:14px;max-width:150px}
.sp-name:focus{background:#fff;box-shadow:0 0 0 2px var(--accent-tint)}
.sp-edit-icon{width:12px;height:12px;color:var(--text-dim);flex-shrink:0}
.sp-suggest{font-size:11px;font-weight:700;color:var(--accent);background:var(--accent-tint);border:1px dashed var(--accent);border-radius:99px;padding:4px 10px;white-space:nowrap}
.sp-suggest:hover{background:var(--accent);color:#fff}

.tabs{display:inline-flex;background:var(--surface-2);padding:4px;border-radius:99px;gap:2px;margin-bottom:22px;max-width:100%;overflow-x:auto}
.tab{padding:9px 16px;border-radius:99px;font-size:13.5px;font-weight:700;color:var(--text-dim);white-space:nowrap;transition:all .2s var(--ease)}
.tab[aria-selected="true"]{background:#fff;color:var(--text);box-shadow:var(--shadow-xs)}
.tabpanel{display:none;animation:panelIn .4s var(--ease)}
.tabpanel.active{display:block}
.res-lead{font-size:15.5px;color:var(--text-muted);line-height:1.65}
.empty-hint{font-size:13.5px;color:var(--text-dim);font-style:italic}
.bullet-list{display:flex;flex-direction:column;gap:12px;margin-top:6px}
.bullet-list li{display:flex;gap:12px;font-size:14.5px;line-height:1.55;color:var(--text)}
.bullet-list li::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);margin-top:8px;flex-shrink:0}
.action-table{width:100%;border-collapse:collapse;margin-top:4px}
.action-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);padding:0 10px 10px 0;font-weight:700}
.action-table td{padding:12px 10px 12px 0;border-top:1px solid var(--border);font-size:13.5px;vertical-align:top}
.action-table td.owner{font-weight:700;white-space:nowrap}
.action-table td.due{color:var(--text-dim);font-family:'IBM Plex Mono',monospace;font-size:12px;white-space:nowrap}
.quiz-item{border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 18px;margin-bottom:12px;background:var(--surface-2)}
.quiz-item p.q{font-weight:700;font-size:14.5px;margin-bottom:10px}
.quiz-item details summary{font-size:12.5px;color:var(--accent);cursor:pointer;font-weight:700;list-style:none}
.quiz-item details summary::-webkit-details-marker{display:none}
.quiz-item details summary::before{content:'Lihat kunci jawaban ›'}
.quiz-item details[open] summary::before{content:'Sembunyikan jawaban ‹'}
.quiz-item details p{margin-top:8px;font-size:13.5px;color:var(--text-muted);line-height:1.5;padding-top:8px;border-top:1px dashed var(--border)}
.chapter-list{display:flex;flex-direction:column}
.chapter-row{display:flex;align-items:center;gap:14px;padding:11px 0;border-bottom:1px solid var(--border);font-size:14px}
.chapter-row:last-child{border-bottom:none}
.chap-t{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--accent);background:var(--accent-tint);padding:4px 9px;border-radius:6px;flex-shrink:0}
.quote-card{background:var(--bg-soft);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-md);padding:20px 22px;margin-bottom:14px}
.quote-card p{font-size:16px;line-height:1.55;font-weight:500}
.quote-card .chap-t{background:#fff;border:1px solid var(--border);color:var(--text-muted);margin-top:12px;display:inline-block}
.hashtag-box{margin-top:18px;padding:14px 16px;border:1px dashed var(--border-strong);border-radius:var(--radius-md);font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--accent)}
.transcript-list{display:flex;flex-direction:column;gap:2px}
.t-row{display:grid;grid-template-columns:56px 88px 1fr;gap:12px;padding:10px 8px;border-radius:8px;font-size:13.5px;align-items:baseline;transition:background-color .2s}
.t-row:hover{background:var(--surface-2)}
.t-row button.t-time{font-family:'IBM Plex Mono',monospace;color:var(--accent);font-size:12px;text-align:left;font-weight:600}
.t-row .t-who{font-weight:700;color:var(--text-muted);font-size:12.5px}
.t-row .t-line{color:var(--text);line-height:1.5}
@media (max-width:520px){.t-row{grid-template-columns:44px 1fr;grid-template-areas:"time who" "line line"}.t-row .t-who{grid-area:who}.t-row button.t-time{grid-area:time}.t-row .t-line{grid-area:line;margin-top:2px}}

.aside-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px}
.aside-card + .aside-card{margin-top:16px}
.aside-title{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);font-weight:700;margin-bottom:14px}
.export-btn{display:flex;align-items:center;gap:12px;width:100%;padding:12px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);margin-bottom:10px;text-align:left;transition:all .2s var(--ease)}
.export-btn:last-child{margin-bottom:0}
.export-btn:hover{border-color:var(--eb-color);transform:translateX(2px)}
.export-btn .icon-chip{width:34px;height:34px;border-radius:9px;background:var(--eb-tint);color:var(--eb-color);margin-bottom:0;flex-shrink:0}
.export-btn .icon-chip svg{width:16px;height:16px}
.export-btn .e-text b{display:block;font-size:13.5px;font-weight:700}
.export-btn .e-text span{font-size:11.5px;color:var(--text-dim)}
.reset-link{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--text-dim);margin-top:6px;font-weight:600}
.reset-link:hover{color:var(--violet)}
.reset-link svg{width:14px;height:14px}

.history{padding:56px 0}
.history-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:22px;flex-wrap:wrap;gap:10px}
.history-head h2{font-size:22px;font-weight:800;letter-spacing:-.01em}
.history-head p{color:var(--text-dim);font-size:13.5px;margin-top:4px}
.hist-scroll{display:flex;gap:14px;overflow-x:auto;padding-bottom:10px;scroll-snap-type:x mandatory}
.hist-card{scroll-snap-align:start;flex:0 0 260px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:18px;text-align:left;transition:all .25s var(--ease);cursor:pointer;box-shadow:var(--shadow-xs)}
.hist-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.hist-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.hist-chip{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.05em;text-transform:uppercase;padding:4px 9px;border-radius:99px;background:var(--hc-tint);color:var(--hc-color);font-weight:700}
.hist-status{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--text-dim)}
.hist-card h4{font-size:14.5px;font-weight:700;margin-bottom:6px;line-height:1.3}
.hist-card p{font-size:12px;color:var(--text-dim)}
.hist-empty{color:var(--text-dim);font-size:13.5px}

.toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%,20px);background:#fff;border:1px solid var(--border-strong);color:var(--text);padding:13px 20px;border-radius:99px;font-size:13.5px;font-weight:700;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:10px;opacity:0;pointer-events:none;transition:all .35s var(--ease);z-index:100;max-width:90vw}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.err svg{color:var(--red)}
.toast svg{width:15px;height:15px;color:var(--mint);flex-shrink:0}
@media (prefers-reduced-motion: reduce){*{animation-duration:.001s !important;transition-duration:.001s !important}}
