/* ZonPay Wallet Portal — visual skin.
   Tokens ported from the Finance Client's site.css (same product family,
   per the platform's UI/UX Master Rule) and adapted to a single centered
   step-flow instead of a sidebar/dashboard shell. */

:root{
  --primary:#2757e8;
  --primary-dark:#1c41b8;
  --primary-light:#eaf0ff;
  --success:#17a34a;
  --success-light:#e7f8ee;
  --warning:#e08a1c;
  --warning-light:#fdf1e0;
  --danger:#dc2b2b;
  --danger-light:#fce9e9;
  --info:#0891b2;
  --info-light:#e3f6fa;
  --body-bg:#f3f5f9;
  --card-bg:#ffffff;
  --border:#e6e9f0;
  --text:#1c2333;
  --text-muted:#7a8296;
  --radius:12px;
  --shadow:0 1px 2px rgba(16,24,40,.04), 0 1px 3px rgba(16,24,40,.06);
  --shadow-md:0 20px 60px rgba(16,24,40,.14);
}
*{box-sizing:border-box;}
html, body{height:100%; margin:0; padding:0;}
body{
  font-family:'Inter',sans-serif;
  background:linear-gradient(135deg,#0f1524,#1b2440);
  color:var(--text);
  font-size:14px;
  -webkit-font-smoothing:antialiased;
}
a{text-decoration:none; color:var(--primary);}
::-webkit-scrollbar{width:8px;height:8px;}
::-webkit-scrollbar-thumb{background:#c7cede;border-radius:8px;}
::-webkit-scrollbar-track{background:transparent;}

/* ===== PAGE SHELL ===== */
.wp-shell{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  padding:24px 16px;
}
.wp-card{
  width:100%; max-width:440px; background:var(--card-bg); border-radius:20px;
  padding:36px 32px; box-shadow:var(--shadow-md);
}
@media (max-width:520px){
  .wp-card{padding:26px 20px; border-radius:16px;}
}

.wp-brand{display:flex; align-items:center; gap:10px; margin-bottom:26px;}
.wp-brand-mark{
  width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,var(--primary),#5b8bff);
  display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:16px;flex-shrink:0;
  overflow:hidden;
}
.wp-brand-mark img{width:100%;height:100%;object-fit:cover;}
.wp-brand-text{font-weight:700; font-size:16.5px; color:var(--text);}
.wp-brand-text small{display:block; color:var(--text-muted); font-weight:500; font-size:10.8px; letter-spacing:.6px;}

.wp-title{font-size:19px; font-weight:800; margin:0 0 4px;}
.wp-sub{font-size:12.8px; color:var(--text-muted); margin:0 0 22px;}

/* ===== STEP PROGRESS ===== */
.wp-steps{display:flex; gap:6px; margin-bottom:26px;}
.wp-steps .seg{flex:1; height:4px; border-radius:4px; background:var(--border); transition:background .2s ease;}
.wp-steps .seg.done, .wp-steps .seg.active{background:var(--primary);}

/* ===== FORM ===== */
.wp-label{font-size:12.3px; font-weight:600; color:#3c4457; margin-bottom:6px; display:block;}
.wp-input{
  width:100%; border-radius:10px; border:1px solid var(--border); font-size:14.5px; padding:11px 13px;
  background:#fafbfd; color:var(--text);
}
.wp-input:focus{outline:none; border-color:var(--primary); box-shadow:0 0 0 3px var(--primary-light); background:#fff;}
.wp-hint{font-size:11.3px; color:var(--text-muted); margin-top:6px;}

.wp-btn{
  width:100%; border:none; border-radius:10px; font-size:14.5px; font-weight:700; padding:12px 16px;
  background:var(--primary); color:#fff; cursor:pointer; transition:background .15s ease;
  display:flex; align-items:center; justify-content:center; gap:8px;
}
.wp-btn:hover:not(:disabled){background:var(--primary-dark);}
.wp-btn:disabled{opacity:.55; cursor:not-allowed;}
.wp-btn-ghost{
  width:100%; border:1px solid var(--border); border-radius:10px; font-size:13.5px; font-weight:600; padding:10px 16px;
  background:#fff; color:#4b5468; cursor:pointer; margin-top:10px;
}
.wp-btn-ghost:hover:not(:disabled){background:#f4f6fa;}
.wp-btn-ghost:disabled{opacity:.5; cursor:not-allowed;}
.wp-btn-link{background:none; border:none; color:var(--primary); font-size:12.8px; font-weight:600; cursor:pointer; padding:4px;}
.wp-btn-link:disabled{color:var(--text-muted); cursor:not-allowed;}

/* ===== OTP INPUT ===== */
.wp-otp-row{display:flex; gap:8px; justify-content:center; margin:8px 0 4px;}
.wp-otp-box{
  width:44px; height:52px; text-align:center; font-size:20px; font-weight:700;
  border:1.5px solid var(--border); border-radius:10px; background:#fafbfd; color:var(--text);
}
.wp-otp-box:focus{outline:none; border-color:var(--primary); box-shadow:0 0 0 3px var(--primary-light); background:#fff;}
@media (max-width:400px){
  .wp-otp-box{width:38px; height:46px; font-size:17px;}
}

.wp-timer{text-align:center; font-size:12.5px; color:var(--text-muted); margin:10px 0 18px;}
.wp-timer strong{color:var(--text); font-variant-numeric:tabular-nums;}

/* ===== TENANT DASHBOARD ===== */
.wp-tenant-head{display:flex; align-items:center; gap:12px; margin-bottom:20px;}
.wp-tenant-logo{
  width:52px;height:52px;border-radius:13px;background:var(--primary-light);color:var(--primary-dark);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;flex-shrink:0;overflow:hidden;
}
.wp-tenant-logo img{width:100%;height:100%;object-fit:cover;}
.wp-tenant-name{font-weight:800; font-size:16.5px; line-height:1.25;}
.wp-tenant-meta{font-size:11.8px; color:var(--text-muted);}

.wp-balance-card{
  background:linear-gradient(135deg,var(--primary),#1c41b8); border-radius:14px; padding:20px 22px; color:#fff;
  margin-bottom:18px;
}
.wp-balance-label{font-size:11.5px; opacity:.85; text-transform:uppercase; letter-spacing:.5px; font-weight:600;}
.wp-balance-value{font-size:30px; font-weight:800; margin-top:4px; font-variant-numeric:tabular-nums;}
.wp-balance-sub{font-size:11.8px; opacity:.85; margin-top:6px;}

.wp-info-grid{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:20px;}
.wp-info-item{background:#fafbfd; border:1px solid var(--border); border-radius:10px; padding:10px 12px;}
.wp-info-label{font-size:10.5px; color:var(--text-muted); text-transform:uppercase; letter-spacing:.4px; font-weight:700;}
.wp-info-value{font-size:13px; font-weight:600; margin-top:2px; word-break:break-word;}
.wp-info-item.full{grid-column:1 / -1;}

.wp-badge{font-size:10.8px; font-weight:700; padding:3px 10px; border-radius:20px; letter-spacing:.2px; display:inline-block;}
.wp-badge-active{background:var(--success-light); color:var(--success);}
.wp-badge-trial{background:var(--info-light); color:var(--info);}
.wp-badge-suspended{background:var(--danger-light); color:var(--danger);}
.wp-badge-default{background:#f1f2f6; color:#6b7280;}

/* ===== QUICK AMOUNTS ===== */
.wp-quick-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:14px 0 18px;}
.wp-quick-btn{
  border:1.5px solid var(--border); border-radius:10px; padding:10px 6px; font-size:13px; font-weight:700;
  background:#fff; color:var(--text); cursor:pointer; transition:all .12s ease;
}
.wp-quick-btn:hover{border-color:var(--primary); color:var(--primary); background:var(--primary-light);}
.wp-quick-btn.selected{border-color:var(--primary); background:var(--primary); color:#fff;}

.wp-amount-input-wrap{position:relative; margin-bottom:6px;}
.wp-amount-input-wrap .curr{position:absolute; left:13px; top:50%; transform:translateY(-50%); font-weight:700; color:var(--text-muted);}
.wp-amount-input-wrap input{padding-left:28px; font-weight:700; font-size:17px;}

/* ===== RESULT STATES ===== */
.wp-result{text-align:center; padding:8px 0 4px;}
.wp-result-icon{
  width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:34px; margin:0 auto 18px;
}
.wp-result-icon.success{background:var(--success-light); color:var(--success);}
.wp-result-icon.failed{background:var(--danger-light); color:var(--danger);}
.wp-result-icon.cancelled{background:#f1f2f6; color:#6b7280;}
.wp-result-title{font-size:19px; font-weight:800; margin-bottom:4px;}
.wp-result-sub{font-size:12.8px; color:var(--text-muted); margin-bottom:20px;}

.wp-receipt{background:#fafbfd; border:1px solid var(--border); border-radius:12px; padding:16px 18px; margin-bottom:20px; text-align:left;}
.wp-receipt-row{display:flex; justify-content:space-between; align-items:center; padding:6px 0; font-size:12.8px;}
.wp-receipt-row + .wp-receipt-row{border-top:1px dashed var(--border);}
.wp-receipt-row .k{color:var(--text-muted);}
.wp-receipt-row .v{font-weight:700; font-variant-numeric:tabular-nums;}
.wp-receipt-row .v.mono{font-family:'JetBrains Mono',monospace; font-size:11.5px; font-weight:500;}

/* ===== LOADING ===== */
.wp-spinner-wrap{display:flex; align-items:center; justify-content:center; padding:30px 0;}
.wp-spinner{width:38px; height:38px; border:4px solid var(--border); border-top-color:var(--primary); border-radius:50%; animation:wp-spin .8s linear infinite;}
@keyframes wp-spin{to{transform:rotate(360deg);}}
.wp-btn .wp-btn-spinner{width:16px;height:16px;border:2.5px solid rgba(255,255,255,.4); border-top-color:#fff; border-radius:50%; animation:wp-spin .7s linear infinite;}

/* ===== ALERTS ===== */
.wp-alert{border-radius:10px; padding:11px 14px; font-size:12.5px; margin-bottom:16px; display:flex; gap:8px; align-items:flex-start;}
.wp-alert-error{background:var(--danger-light); color:#a3221b;}
.wp-alert-info{background:var(--info-light); color:#0e5a68;}

.wp-footer{text-align:center; font-size:11.3px; color:var(--text-muted); margin-top:18px;}

/* ===== TOAST (Blazored.Toast container already styled by its own bundle;
   this just nudges position for the centered-card layout) ===== */
.blazored-toast-container{z-index:100000;}

/* ===== Blazor error UI ===== */
#blazor-error-ui {
    background: var(--warning-light);
    color: var(--text);
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0,0,0,0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 100001;
    font-size: 13px;
}
#blazor-error-ui .dismiss {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}

/* ===== DARK MODE (system preference — no manual toggle in this flow) ===== */
@media (prefers-color-scheme: dark){
  :root{
    --card-bg:#1a1f2e; --border:#2a3040; --text:#e6e9f2; --text-muted:#8a93ab;
    --body-bg:#0f1220;
  }
  .wp-input, .wp-otp-box, .wp-info-item, .wp-receipt, .wp-quick-btn{background:#1f2534; color:var(--text);}
  .wp-btn-ghost{background:#1a1f2e; color:#dfe3ee;}
  .wp-btn-ghost:hover:not(:disabled){background:#232a3a;}
}
