/* ==============================================
   Sadan Auth Modal — Design Token Layer
   ============================================== */
:root {
  --sa-primary:        #233f5a;
  --sa-primary-dark:   #1a2e42;
  --sa-primary-glow:   rgba(35,63,90,.16);
  --sa-accent:         #b4cb63;
  --sa-success:        #b4cb63;
  --sa-danger:         #ef4444;
  --sa-ink:            #0f172a;
  --sa-ink-muted:      #475569;
  --sa-ink-faint:      #94a3b8;
  --sa-border:         #e2e8f0;
  --sa-border-mid:     #cbd5e1;
  --sa-surface:        #f8fafc;
  --sa-surface-blue:   #f0f4f8;
  --sa-radius-lg:      16px;
  --sa-radius-md:      12px;
  --sa-radius-sm:      8px;
  --sa-shadow-modal:   0 32px 64px -16px rgba(0,0,0,.4), 0 8px 24px -8px rgba(0,0,0,.18);
  --sa-transition:     .18s cubic-bezier(.4,0,.2,1);
}

/* ==============================================
   Modal shell
   ============================================== */
.sadan-auth-modal[hidden]{display:none!important}
.sadan-auth-modal {
  position:fixed;inset:0;z-index:99999;
  display:flex;align-items:center;justify-content:center;
  font-family:inherit;
}
.sadan-auth-backdrop {
  position:absolute;inset:0;
  background:rgba(5,10,24,.65);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.sadan-auth-dialog {
  position:relative;
  width:min(460px,calc(100vw - 24px));
  max-height:calc(100dvh - 24px);
  overflow:hidden auto;
  background:#fff;
  border-radius:var(--sa-radius-lg);
  box-shadow:var(--sa-shadow-modal);
  animation:sadanAuthIn .26s cubic-bezier(.34,1.38,.64,1);
}
/* Branded top-edge gradient accent */
.sadan-auth-dialog::before {
  content:'';
  display:block;
  height:4px;
  background:linear-gradient(90deg,var(--sa-primary),#2d5f8a,var(--sa-accent));
  border-radius:var(--sa-radius-lg) var(--sa-radius-lg) 0 0;
}
@keyframes sadanAuthIn {
  from{opacity:0;transform:translateY(18px) scale(.96)}
  to  {opacity:1;transform:none}
}

/* Close button */
.sadan-auth-close {
  position:absolute;top:14px;inset-inline-end:14px;z-index:2;
  width:34px;height:34px;
  display:flex;align-items:center;justify-content:center;
  background:var(--sa-surface);border:1px solid var(--sa-border);
  border-radius:50%;cursor:pointer;
  color:var(--sa-ink-muted);
  transition:background var(--sa-transition),color var(--sa-transition),transform var(--sa-transition);
}
.sadan-auth-close:hover{background:var(--sa-ink);color:#fff;transform:rotate(90deg)}
.sadan-auth-close svg{width:16px;height:16px;stroke:currentColor;stroke-width:2.5;fill:none;stroke-linecap:round}

/* Inner padding wrapper */
.sadan-auth-inner{padding:22px 24px 24px}

/* Header */
.sadan-auth-head{margin-bottom:20px}
.sadan-auth-step-dots{display:flex;justify-content:center;gap:6px;margin-bottom:14px}
.sadan-auth-step-dots span{
  width:8px;height:8px;border-radius:50%;
  background:var(--sa-border-mid);
  transition:background var(--sa-transition),transform var(--sa-transition),width var(--sa-transition);
}
.sadan-auth-step-dots span.is-active{background:var(--sa-primary);width:22px;border-radius:4px}
.sadan-auth-step-dots span.is-done{background:var(--sa-success);width:8px;border-radius:50%}
.sadan-auth-title{margin:0 0 5px;font-size:22px;font-weight:800;color:var(--sa-ink);line-height:1.2}
.sadan-auth-sub{margin:0;color:var(--sa-ink-muted);font-size:13.5px;line-height:1.5}

/* Steps */
.sadan-auth-step{display:block}
.sadan-auth-step[hidden]{display:none}

/* Register-only fields: always visible by default, hidden only in login mode */
.sadan-auth-modal [data-only-register]:not([data-wa-field]){display:block!important}
.sadan-auth-modal.is-login [data-only-register]:not([data-wa-field]){display:none!important}

/* ==============================================
   Role grid
   ============================================== */
.sadan-role-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:4px}
.sadan-role-card {
  position:relative;
  display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:20px 12px 16px;
  background:var(--sa-surface);border:2px solid var(--sa-border);
  border-radius:var(--sa-radius-md);cursor:pointer;
  transition:border-color var(--sa-transition),background var(--sa-transition),box-shadow var(--sa-transition),transform var(--sa-transition);
  text-align:center;user-select:none;
}
.sadan-role-card:hover{border-color:var(--sa-primary);background:var(--sa-surface-blue);transform:translateY(-2px);box-shadow:0 8px 20px -4px var(--sa-primary-glow)}
.sadan-role-card.is-selected{
  border-color:var(--sa-primary);background:var(--sa-surface-blue);
  box-shadow:0 0 0 4px var(--sa-primary-glow), 0 8px 20px -4px var(--sa-primary-glow);
  transform:translateY(-2px);
}
/* Check badge */
.sadan-role-card::after {
  content:'✓';
  position:absolute;top:8px;inset-inline-end:8px;
  width:20px;height:20px;border-radius:50%;
  background:var(--sa-primary);color:#fff;
  font-size:11px;font-weight:800;
  display:flex;align-items:center;justify-content:center;
  opacity:0;transform:scale(0);
  transition:opacity var(--sa-transition),transform var(--sa-transition);
}
.sadan-role-card.is-selected::after{opacity:1;transform:scale(1)}
.sadan-role-icon{
  width:54px;height:54px;border-radius:14px;
  background:linear-gradient(135deg,var(--sa-primary),var(--sa-primary-dark));
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 16px -4px var(--sa-primary-glow);
}
.sadan-role-icon svg{width:28px;height:28px;fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.sadan-role-name{font-weight:700;color:var(--sa-ink);font-size:14px;line-height:1.3}
.sadan-role-desc{color:var(--sa-ink-muted);font-size:11.5px;line-height:1.4}

/* ==============================================
   Fields
   ============================================== */
.sadan-field{margin-bottom:14px;position:relative}
.sadan-field label{display:block;font-size:12.5px;font-weight:700;color:#334155;margin-bottom:5px;letter-spacing:.01em}
.sadan-field input[type=text],.sadan-field input[type=tel]{
  width:100%;padding:12px 14px;
  border:1.5px solid var(--sa-border-mid);border-radius:10px;
  font-size:15px;font-family:inherit;background:#fff;
  transition:border-color var(--sa-transition),box-shadow var(--sa-transition);
  box-sizing:border-box;color:var(--sa-ink);
}
.sadan-field input:focus{
  outline:0;border-color:var(--sa-primary);
  box-shadow:0 0 0 3.5px var(--sa-primary-glow);
}
.sadan-field input.is-invalid{border-color:var(--sa-danger);box-shadow:0 0 0 3px rgba(239,68,68,.12)}
.sadan-field input.is-valid{border-color:var(--sa-success);box-shadow:0 0 0 3px rgba(16,185,129,.12)}
.sadan-field-checkbox label{display:flex;align-items:flex-start;gap:8px;font-weight:400;font-size:13px;color:#475569;cursor:pointer}
.sadan-field-checkbox input{margin-top:2px;flex-shrink:0;accent-color:var(--sa-primary);width:15px;height:15px}
.sadan-field-checkbox a{color:var(--sa-primary);text-decoration:underline;text-underline-offset:2px}

/* ==============================================
   Submit button — with spinner state
   ============================================== */
.sadan-auth-submit {
  width:100%;padding:13px 18px;margin-top:4px;
  background:linear-gradient(160deg,var(--sa-primary) 0%,var(--sa-primary-dark) 100%);
  color:#fff;border:0;border-radius:10px;
  font-weight:700;font-size:15px;cursor:pointer;
  transition:transform var(--sa-transition),opacity var(--sa-transition),box-shadow var(--sa-transition);
  font-family:inherit;display:flex;align-items:center;justify-content:center;gap:8px;
  box-shadow:0 4px 16px -4px rgba(35,63,90,.5);
}
.sadan-auth-submit:hover:not(:disabled){
  transform:translateY(-2px);
  box-shadow:0 8px 24px -6px rgba(35,63,90,.6);
}
.sadan-auth-submit:active:not(:disabled){transform:translateY(0);box-shadow:none}
.sadan-auth-submit:disabled{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}
/* Spinner inside button */
.sadan-auth-submit .sa-spinner{
  display:none;width:18px;height:18px;
  border:2.5px solid rgba(255,255,255,.35);
  border-top-color:#fff;border-radius:50%;
  animation:sa-spin .6s linear infinite;
}
.sadan-auth-submit.is-loading .sa-spinner{display:block}
.sadan-auth-submit.is-loading .sa-btn-text{opacity:.7}
@keyframes sa-spin{to{transform:rotate(360deg)}}

/* ==============================================
   Errors
   ============================================== */
.sadan-auth-error{
  margin:10px 0 0;
  display:flex;align-items:center;gap:6px;
  color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;
  border-radius:8px;padding:8px 10px;
  font-size:13px;
  animation:sadanShake .25s ease;
}
.sadan-auth-error:empty{display:none!important}
.sadan-auth-error::before{content:'⚠';font-size:14px;flex-shrink:0}
@keyframes sadanShake{
  0%,100%{transform:none}
  20%{transform:translateX(-4px)}
  60%{transform:translateX(4px)}
}

/* ==============================================
   Switch link
   ============================================== */
.sadan-auth-switch{text-align:center;margin:16px 0 0;font-size:13px;color:var(--sa-ink-muted)}
.sadan-auth-switch a{color:var(--sa-primary);text-decoration:none;font-weight:600}
.sadan-auth-switch a:hover{text-decoration:underline;text-underline-offset:2px}

/* ==============================================
   OTP Step
   ============================================== */
.sadan-otp-target{margin:0 0 16px;text-align:center;color:var(--sa-ink-muted);font-size:13.5px;line-height:1.5}
.sadan-otp-target strong{
  display:inline-block;
  font-family:monospace;direction:ltr;
  color:var(--sa-ink);
  background:var(--sa-surface);
  padding:2px 10px;border-radius:6px;border:1px solid var(--sa-border);
}
.sadan-otp-grid{
  display:grid;grid-template-columns:repeat(6,1fr);gap:8px;
  margin:0 0 18px;direction:ltr;
}
.sadan-otp-cell{
  width:100%;height:58px;
  text-align:center;font-size:24px;font-weight:800;
  border:2px solid var(--sa-border-mid);border-radius:12px;
  background:#fff;font-family:inherit;color:var(--sa-ink);
  transition:border-color var(--sa-transition),box-shadow var(--sa-transition),background var(--sa-transition),transform var(--sa-transition);
  -moz-appearance:textfield;
}
.sadan-otp-cell::-webkit-outer-spin-button,
.sadan-otp-cell::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.sadan-otp-cell:focus{
  outline:0;border-color:var(--sa-primary);
  box-shadow:0 0 0 3.5px var(--sa-primary-glow);
  transform:scale(1.06);
  z-index:1;position:relative;
}
.sadan-otp-cell.is-filled{
  border-color:var(--sa-primary);background:var(--sa-surface-blue);
  animation:otpPop .18s ease;
}
@keyframes otpPop{from{transform:scale(.88)}to{transform:scale(1)}}
.sadan-otp-cell.is-error{border-color:var(--sa-danger);animation:sadanShake .25s ease}

.sadan-auth-otp-actions{
  display:flex;justify-content:space-between;align-items:center;
  margin-top:12px;font-size:13px;flex-wrap:wrap;gap:6px;
}
.sadan-link-btn{
  background:transparent;border:0;color:var(--sa-primary);
  cursor:pointer;font-size:13px;padding:4px 0;font-family:inherit;font-weight:600;
}
.sadan-link-btn:hover{text-decoration:underline;text-underline-offset:2px}
.sadan-resend-timer{color:var(--sa-ink-faint);font-size:12px}
/* visual countdown ring */
.sadan-resend-progress{
  display:inline-flex;align-items:center;gap:5px;
  color:var(--sa-ink-muted);font-size:12px;
}

/* ==============================================
   Success step
   ============================================== */
.sadan-auth-success{
  text-align:center;padding:16px 4px 8px;
  display:flex;flex-direction:column;align-items:center;gap:12px;
}
.sadan-auth-success .sa-check-ring{
  width:72px;height:72px;border-radius:50%;
  background:linear-gradient(135deg,var(--sa-accent),#8fa83d);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 24px -6px rgba(180,203,99,.5);
  animation:saCheckIn .35s cubic-bezier(.34,1.56,.64,1);
}
.sadan-auth-success .sa-check-ring svg{width:36px;height:36px;stroke:#fff;stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
@keyframes saCheckIn{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
.sadan-auth-success h3{margin:0;font-size:20px;font-weight:800;color:var(--sa-ink)}
.sadan-auth-success p{margin:0;color:var(--sa-ink-muted);font-size:14px;max-width:300px}
.sadan-auth-success .sa-redirect-bar{
  width:100%;max-width:220px;height:3px;
  background:var(--sa-border);border-radius:3px;overflow:hidden;
}
.sadan-auth-success .sa-redirect-bar span{
  display:block;height:100%;
  background:linear-gradient(90deg,var(--sa-primary),var(--sa-success));
  width:0;animation:saFill 2.2s linear forwards .3s;
}
@keyframes saFill{from{width:0}to{width:100%}}

/* ==============================================
   Trust bar (inside modal footer)
   ============================================== */
.sadan-auth-trust{
  display:flex;align-items:center;justify-content:center;gap:14px;
  padding:11px 0 0;margin-top:14px;
  border-top:1px solid var(--sa-border);
  flex-wrap:wrap;
}
.sadan-auth-trust-item{
  display:flex;align-items:center;gap:4px;
  font-size:11.5px;color:var(--sa-ink-faint);
}
.sadan-auth-trust-item svg{width:13px;height:13px;stroke:currentColor;stroke-width:2;fill:none}

/* ==============================================
   Mobile
   ============================================== */
@media (max-width:480px){
  .sadan-auth-dialog{max-height:calc(100dvh - 16px);border-radius:var(--sa-radius-md)}
  .sadan-auth-inner{padding:18px 16px 20px}
  .sadan-auth-title{font-size:19px}
  .sadan-otp-cell{height:50px;font-size:20px;border-radius:10px}
  .sadan-role-grid{gap:8px}
  .sadan-role-icon{width:46px;height:46px;border-radius:12px}
}

/* ==============================================
   Trigger buttons
   ============================================== */
.sadan-auth-trigger{
  display:inline-flex;align-items:center;gap:8px;
  padding:11px 20px;
  background:linear-gradient(160deg,var(--sa-primary),var(--sa-primary-dark));
  color:#fff;border:0;border-radius:10px;
  font-weight:700;cursor:pointer;text-decoration:none;
  font-family:inherit;font-size:14px;
  transition:transform var(--sa-transition),box-shadow var(--sa-transition),background var(--sa-transition);
  box-shadow:0 4px 14px -4px rgba(35,63,90,.45);
}
.sadan-auth-trigger:hover{
  transform:translateY(-2px);color:#fff;text-decoration:none;
  box-shadow:0 8px 20px -6px rgba(35,63,90,.55);
}
.sadan-auth-trigger:active{transform:none;box-shadow:none}
.sadan-auth-trigger.is-ghost{
  background:transparent;color:var(--sa-primary);
  border:1.5px solid var(--sa-primary);box-shadow:none;
}
.sadan-auth-trigger.is-ghost:hover{
  background:var(--sa-primary);color:#fff;
  box-shadow:0 4px 14px -4px rgba(35,63,90,.45);
}

/* ═══════════════════════════════════════════════════
   International phone row (dial code + number)
   ═══════════════════════════════════════════════════ */
.sadan-phone-row{
  display:flex;
  gap:8px;
  align-items:stretch;
  direction:ltr; /* keep DOM order: select on LEFT, number input on RIGHT */
}
.sadan-phone-row input[type="tel"]{
  flex:1;min-width:0;
  direction:ltr;   /* digits always LTR */
  text-align:left;
}
.sadan-dialcode-select{
  flex-shrink:0;
  width:110px;
  padding:0 8px;
  height:var(--sa-input-h,44px);
  border:1px solid var(--sa-border,#e2e8f0);
  border-radius:var(--sa-radius,8px);
  background:#fff;
  font-size:.9rem;
  color:inherit;
  cursor:pointer;
  appearance:none;
  -webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 6px center;
  padding-inline-start:8px;
  padding-inline-end:22px;
}
.sadan-dialcode-select:focus{outline:2px solid var(--sa-primary);outline-offset:-1px}

/* ═══════════════════════════════════════════════════
   Password field with show/hide toggle
   ═══════════════════════════════════════════════════ */
.sadan-password-row{position:relative;display:flex;align-items:center}
.sadan-password-row input{flex:1;padding-inline-end:40px}
.sadan-show-pass{
  position:absolute;
  inset-inline-end:10px;
  background:none;border:none;cursor:pointer;
  padding:4px;
  color:var(--sa-muted,#94a3b8);
  line-height:1;
  display:flex;align-items:center;
}
.sadan-show-pass:hover{color:var(--sa-primary,#0ea5e9)}
.sadan-show-pass svg{width:18px;height:18px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}

/* ═══════════════════════════════════════════════════
   Forgot-password link
   ═══════════════════════════════════════════════════ */
.sadan-forgot-wrap{margin:.25rem 0 .5rem;font-size:.82rem;text-align:start}
.sadan-forgot-wrap a{color:var(--sa-primary,#0ea5e9);text-decoration:none}
.sadan-forgot-wrap a:hover{text-decoration:underline}
/* login-only visibility */
[data-only-login]{display:none}
.sadan-auth-modal.is-login [data-only-login]{display:block}

/* ═══════════════════════════════════════════════════
   New-password step title
   ═══════════════════════════════════════════════════ */
.sadan-auth-step-title{font-size:1rem;font-weight:600;margin-bottom:.75rem;text-align:center}
