/* ============ Buttons / forms ============ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-weight:700;font-size:.88rem;padding:.72rem 1.6rem;border-radius:999px;transition:.2s var(--ease);border:1px solid var(--accent);color:var(--accent);background:var(--surface);min-height:2.9rem}
.btn:hover{background:var(--brand);color:#fff;transform:translateY(-1px);box-shadow:var(--sh-sm)}
.btn:active{transform:scale(.97)}
.btn-brand,.btn-solid{background:var(--brand);color:#fff;border-color:var(--brand)}
.btn-brand:hover,.btn-solid:hover{background:var(--brand-deep);border-color:var(--brand-deep)}
.btn-wa{background:var(--wa);color:#fff;border-color:var(--wa)}
.btn-wa:hover{background:var(--wa-deep);border-color:var(--wa-deep)}
.btn-ghost{background:var(--surface);color:var(--ink);border:1px solid var(--line-strong)}
.btn-ghost:hover{background:var(--surface);color:var(--brand);border-color:var(--brand)}
.btn-dark{background:var(--dark);color:#fff;border-color:var(--dark)}
.btn-dark:hover{background:var(--dark-2);border-color:var(--dark-2);color:#fff}
.btn-deal{background:var(--dark);color:#fff;border-color:var(--dark)}
.btn-deal:hover{background:var(--dark-2);border-color:var(--dark-2)}
.btn-sm{padding:.55rem 1.1rem;min-height:2.6rem;font-size:.83rem}
.btn-block{width:100%}
.btn[disabled]{opacity:.55;cursor:not-allowed;transform:none}
.field{margin-bottom:.9rem}
.field label{display:block;font-weight:700;font-size:.8rem;margin-bottom:.35rem;color:var(--ink-2)}
.field .hint{font-size:.75rem;color:var(--muted);margin-top:.3rem}
.field .err{font-size:.78rem;color:var(--bad);margin-top:.3rem;font-weight:600}
.input,select.input,textarea.input{width:100%;min-height:2.9rem;border:1px solid var(--line-strong);border-radius:.8rem;padding:.72rem 1rem;background:var(--surface);font-size:.92rem;outline:0;transition:.15s}
.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}
textarea.input{min-height:6rem;resize:vertical}
.radio-card{display:flex;gap:.75rem;border:1px solid var(--line);border-radius:var(--r);padding:.95rem;cursor:pointer;align-items:flex-start;background:var(--surface);transition:.15s}
.radio-card.sel{border-color:var(--brand);background:var(--brand-soft)}
.radio-card input{width:1.25rem;height:1.25rem;margin-top:.15rem;accent-color:var(--brand);flex:none}
.radio-card h4{margin:0;font-size:.93rem;font-family:var(--fb);letter-spacing:0}
.radio-card p{margin:.2rem 0 0;font-size:.82rem;color:var(--muted)}
.pay-detail{margin-top:.6rem;background:var(--surface-sunken);border:1px solid var(--line);border-radius:.7rem;padding:.7rem .85rem;font-size:.85rem;display:block}
.pay-detail p{margin:.25rem 0;color:var(--ink-2)}
.tabs{display:flex;gap:.25rem;border-bottom:2px solid var(--line);margin-bottom:1.1rem}
.tabs button{border:0;background:none;padding:.7rem 1.1rem;font-weight:700;font-size:.93rem;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-2px;min-height:2.9rem}
.tabs button.on{color:var(--brand);border-bottom-color:var(--brand)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.25rem;box-shadow:var(--sh-sm);min-width:0}
.panel h3{font-size:1.02rem;font-weight:800;margin-bottom:.7rem}
.alert{border-radius:.8rem;padding:.75rem .95rem;font-size:.88rem;font-weight:600;margin-bottom:.9rem}
.alert-err{background:var(--bad-bg);color:var(--bad)}
.alert-ok{background:var(--ok-bg);color:var(--ok)}
.alert-info{background:var(--info-bg);color:var(--info)}
/* ============ Skeletons ============ */
.sk{border-radius:var(--r-lg);background:linear-gradient(100deg,var(--surface-sunken) 40%,var(--shimmer) 50%,var(--surface-sunken) 60%);background-size:200% 100%;animation:shim 1.2s infinite}
@keyframes shim{from{background-position:180% 0}to{background-position:-20% 0}}
.sk-card{aspect-ratio:.74;border:1px solid var(--line)}
.sk-line{height:7.5rem}
