:root{
  --bg:#141312;--bg2:#1a1917;--panel:#211f1d;--panel2:#2a2825;--panel3:#34312d;--line:#3a3631;--line2:#4d4840;
  --text:#ece7df;--muted:#a69f94;--faint:#7a746a;--clay:#d8c9b4;--clay2:#bfae96;--ink:#1a1714;
  --ok:#93d6a1;--bad:#f09090;--warn:#e6c07b;
  --sans:"Instrument Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --disp:"Bricolage Grotesque","Instrument Sans",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --ease:cubic-bezier(.22,1,.36,1);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;color-scheme:dark}
body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--clay);outline-offset:2px;border-radius:8px}
::selection{background:rgba(216,201,180,.3)}
*{scrollbar-width:thin;scrollbar-color:var(--line2) transparent}
.ico{display:block;flex:none}
.brand{font-family:var(--disp);font-weight:800;font-variation-settings:"wdth" 78;letter-spacing:-.035em;text-decoration:none}
.brand i{font-style:normal;font-weight:300;color:var(--clay)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:14px;padding:13px 20px;background:var(--clay);color:var(--ink);font-weight:600;transition:transform .25s var(--ease),background .2s,opacity .2s}
.btn:hover{background:#e6d9c5;transform:translateY(-1px)}
.btn:active{transform:scale(.98)}
.btn[disabled]{opacity:.55;cursor:progress;transform:none}
.btn.ghost{background:transparent;border:1px solid var(--line2);color:var(--text)}
.btn.ghost:hover{background:var(--panel2)}
.ib{display:grid;place-items:center;width:38px;height:38px;border:0;border-radius:12px;background:transparent;color:var(--muted);transition:background .2s,color .2s}
.ib:hover{background:var(--panel2);color:var(--text)}
.spin{width:16px;height:16px;border-radius:50%;border:2px solid var(--line2);border-top-color:var(--clay);animation:spin .8s linear infinite;flex:none}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes rise{from{opacity:0;transform:translateY(10px)}}
@keyframes pulse{50%{opacity:.35}}

/* halaman "Mohon tunggu" / pemrosesan keamanan */
.gate{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px;background:radial-gradient(900px 500px at 50% -10%,rgba(216,201,180,.1),transparent 60%),var(--bg);animation:fade .35s var(--ease)}
.gate.out{opacity:0;pointer-events:none;transition:opacity .5s var(--ease)}
@keyframes fade{from{opacity:0}}
.gate-card{width:min(380px,100%);text-align:center}
.gate-mark{font-size:2.6rem;line-height:1}
.gate-ring{width:54px;height:54px;margin:28px auto 22px;border-radius:50%;border:3px solid var(--panel3);border-top-color:var(--clay);animation:spin 1s linear infinite}
.gate-card h2{margin:0;font:700 1.5rem var(--disp);letter-spacing:-.02em}
.gate-card p{margin:6px 0 0;color:var(--muted)}
.gate-steps{list-style:none;margin:26px auto 0;padding:0;max-width:300px;text-align:left}
.gate-steps li{display:flex;align-items:center;gap:12px;padding:9px 0;color:var(--faint);transition:color .3s}
.gate-steps li .d{width:18px;height:18px;border-radius:50%;border:2px solid var(--line2);flex:none;position:relative;transition:background .3s,border-color .3s}
.gate-steps li.run{color:var(--text)}
.gate-steps li.run .d{border-color:var(--panel3);border-top-color:var(--clay);animation:spin .8s linear infinite}
.gate-steps li.done{color:var(--muted)}
.gate-steps li.done .d{background:var(--ok);border-color:var(--ok)}
.gate-steps li.done .d::after{content:"";position:absolute;left:5px;top:1px;width:4px;height:8px;border:solid var(--ink);border-width:0 2px 2px 0;transform:rotate(45deg)}
.gate-steps li.err{color:var(--bad)}
.gate-steps li.err .d{background:var(--bad);border-color:var(--bad)}
.gate-ts{display:flex;justify-content:center;margin-top:10px;min-height:0}
.gate .btn{margin-top:18px}
.toast{position:fixed;left:50%;bottom:92px;z-index:900;transform:translate(-50%,16px);background:var(--panel3);color:var(--text);border:1px solid var(--line2);padding:10px 16px;border-radius:14px;font-size:.92rem;opacity:0;pointer-events:none;transition:opacity .3s,transform .4s var(--ease)}
.toast.on{opacity:1;transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
