/* TapPlaza VTU Frontend — tapplaza.com — Premium Theme */
:root {
  --tap-primary:    #6c3fc5;
  --tap-primary-dk: #5530a3;
  --tap-accent:     #f5a623;
  --tap-success:    #1aa363;
  --tap-danger:     #e53e3e;
  --tap-warning:    #d69e2e;
  --tap-info:       #3182ce;
  --tap-bg:         #f7f8fc;
  --tap-card:       #ffffff;
  --tap-border:     #e2e8f0;
  --tap-text:       #2d3748;
  --tap-muted:      #718096;
  --tap-radius:     12px;
  --tap-radius-sm:  8px;
  --tap-shadow:     0 4px 20px rgba(108,63,197,.10);
  --tap-shadow-sm:  0 2px 8px rgba(0,0,0,.07);
  --tap-font:       -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
}

/* ── Base ─────────────────────────────────────────────────────────────── */
.tap-wrap { font-family: var(--tap-font); color: var(--tap-text); max-width: 700px; margin: 0 auto; padding: 0 16px 60px; }
.tap-wrap * { box-sizing: border-box; }

/* ── Hero Banners ─────────────────────────────────────────────────────── */
.tap-page-hero {
  border-radius: var(--tap-radius);
  padding: 28px 24px;
  margin-bottom: 24px;
  color: #fff;
  position: relative;
  overflow: hidden;
}
.tap-page-hero::before { content:''; position:absolute; inset:0; background:rgba(0,0,0,.15); }
.tap-page-hero h2, .tap-page-hero p { position:relative; margin:0; }
.tap-page-hero h2 { font-size: 22px; font-weight: 700; margin-bottom: 4px; }
.tap-page-hero p  { font-size: 14px; opacity: .85; }

.tap-hero-airtime  { background: linear-gradient(135deg, #6c3fc5, #3182ce); }
.tap-hero-data     { background: linear-gradient(135deg, #1aa363, #3182ce); }
.tap-hero-cable    { background: linear-gradient(135deg, #c53030, #6c3fc5); }
.tap-hero-elec     { background: linear-gradient(135deg, #d69e2e, #c53030); }
.tap-hero-exam     { background: linear-gradient(135deg, #2b6cb0, #1aa363); }
.tap-hero-wallet   { background: linear-gradient(135deg, #6c3fc5, #f5a623); }
.tap-hero-trans    { background: linear-gradient(135deg, #2d3748, #4a5568); }

/* ── Welcome Banner ───────────────────────────────────────────────────── */
.tap-welcome-banner {
  background: linear-gradient(135deg, var(--tap-primary), var(--tap-primary-dk));
  border-radius: var(--tap-radius);
  padding: 24px 20px;
  color: #fff;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 24px;
}
.tap-welcome-text h2 { margin: 0 0 4px; font-size: 20px; }
.tap-welcome-text p  { margin: 0; font-size: 13px; opacity: .85; }
.tap-wallet-badge { text-align: right; }
.tap-wallet-label { display: block; font-size: 12px; opacity: .8; margin-bottom: 4px; }
.tap-wallet-amount { font-size: 26px; font-weight: 800; display: block; }

/* ── Service Grid ─────────────────────────────────────────────────────── */
.tap-section-title { font-size: 15px; font-weight: 700; color: var(--tap-text); margin: 24px 0 12px; }

.tap-services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-bottom: 24px;
}
.tap-service-card {
  background: var(--tap-card);
  border: 1px solid var(--tap-border);
  border-radius: var(--tap-radius);
  padding: 18px 12px;
  text-align: center;
  text-decoration: none;
  color: var(--tap-text);
  transition: all .2s ease;
  box-shadow: var(--tap-shadow-sm);
}
.tap-service-card:hover { transform: translateY(-3px); box-shadow: var(--tap-shadow); border-color: var(--tap-primary); color: var(--tap-primary); text-decoration: none; }
.tap-service-icon { font-size: 28px; margin-bottom: 8px; }
.tap-service-card h4 { margin: 0 0 4px; font-size: 13px; font-weight: 700; }
.tap-service-card p  { margin: 0; font-size: 11px; color: var(--tap-muted); }

/* ── Form Card ────────────────────────────────────────────────────────── */
.tap-form-card {
  background: var(--tap-card);
  border-radius: var(--tap-radius);
  padding: 24px;
  box-shadow: var(--tap-shadow);
  border: 1px solid var(--tap-border);
  margin-bottom: 20px;
}
.tap-card-title { font-size: 16px; font-weight: 700; margin: 0 0 16px; color: var(--tap-text); }

.tap-wallet-strip {
  background: #f0ebfa;
  border: 1px solid #d6c8f5;
  border-radius: var(--tap-radius-sm);
  padding: 10px 14px;
  font-size: 14px;
  color: var(--tap-primary);
  margin-bottom: 16px;
}
.tap-wallet-strip strong { font-size: 16px; }

/* ── VTU Form ─────────────────────────────────────────────────────────── */
.tap-vtu-form { display: flex; flex-direction: column; gap: 16px; }
.tap-form-group { display: flex; flex-direction: column; gap: 6px; }
.tap-form-group label { font-size: 13px; font-weight: 600; color: var(--tap-text); }
.tap-hint { font-size: 11px; color: var(--tap-muted); margin-top: 3px; }

.tap-input {
  width: 100%;
  padding: 11px 14px;
  border: 1.5px solid var(--tap-border);
  border-radius: var(--tap-radius-sm);
  font-size: 15px;
  color: var(--tap-text);
  background: #fff;
  transition: border-color .2s;
  outline: none;
  font-family: var(--tap-font);
}
.tap-input:focus { border-color: var(--tap-primary); box-shadow: 0 0 0 3px rgba(108,63,197,.12); }
.tap-input-group { display: flex; gap: 8px; }
.tap-input-group .tap-input { flex: 1; }

/* ── Network Selector ─────────────────────────────────────────────────── */
.tap-network-selector { display: flex; gap: 10px; flex-wrap: wrap; }
.tap-net-option { cursor: pointer; }
.tap-net-option input { display: none; }
.tap-net-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 12px 16px;
  border: 2px solid var(--tap-border);
  border-radius: var(--tap-radius-sm);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: all .2s;
  min-width: 70px;
  background: #fff;
}
.tap-net-card .tap-net-emoji { font-size: 20px; }
.tap-net-option input:checked + .tap-net-card { border-color: var(--tap-primary); background: #f0ebfa; color: var(--tap-primary); }

/* ── Radio Groups ─────────────────────────────────────────────────────── */
.tap-radio-group { display: flex; gap: 16px; flex-wrap: wrap; }
.tap-radio-group label { display: flex; align-items: center; gap: 6px; font-size: 14px; cursor: pointer; }

/* ── Exam Selector ────────────────────────────────────────────────────── */
.tap-exam-selector { display: flex; gap: 12px; flex-wrap: wrap; }
.tap-exam-option { cursor: pointer; }
.tap-exam-option input { display: none; }
.tap-exam-card {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 16px 20px; border: 2px solid var(--tap-border); border-radius: var(--tap-radius-sm);
  font-size: 13px; cursor: pointer; transition: all .2s; background: #fff; text-align: center;
}
.tap-exam-option input:checked + .tap-exam-card { border-color: var(--tap-primary); background: #f0ebfa; color: var(--tap-primary); }

/* ── Payment Methods ──────────────────────────────────────────────────── */
.tap-payment-methods { display: flex; gap: 12px; flex-wrap: wrap; }
.tap-payment-option input { display: none; }
.tap-payment-card {
  display: flex; flex-direction: column; gap: 2px; padding: 14px 20px;
  border: 2px solid var(--tap-border); border-radius: var(--tap-radius-sm);
  font-size: 14px; cursor: pointer; transition: all .2s; background: #fff; min-width: 130px;
}
.tap-payment-card small { font-size: 11px; color: var(--tap-muted); }
.tap-payment-option input:checked + .tap-payment-card { border-color: var(--tap-primary); background: #f0ebfa; }

/* ── Price Display ────────────────────────────────────────────────────── */
.tap-price-display {
  padding: 10px 14px; background: #f0fff4; border: 1px solid #9ae6b4;
  border-radius: var(--tap-radius-sm); font-size: 14px; color: #276749;
}

/* ── Buttons ──────────────────────────────────────────────────────────── */
.tap-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 11px 22px; border-radius: var(--tap-radius-sm); font-size: 14px; font-weight: 600;
  cursor: pointer; border: none; transition: all .2s; text-decoration: none; font-family: var(--tap-font);
}
.tap-btn:hover { text-decoration: none; }
.tap-btn:disabled { opacity: .65; cursor: not-allowed; }
.tap-btn-primary  { background: var(--tap-primary); color: #fff; }
.tap-btn-primary:hover { background: var(--tap-primary-dk); color: #fff; }
.tap-btn-secondary{ background: #e2e8f0; color: var(--tap-text); }
.tap-btn-secondary:hover { background: #cbd5e0; }
.tap-btn-outline  { background: transparent; border: 2px solid var(--tap-primary); color: var(--tap-primary); }
.tap-btn-outline:hover { background: #f0ebfa; }
.tap-btn-light    { background: rgba(255,255,255,.2); color: #fff; border: 1px solid rgba(255,255,255,.4); }
.tap-btn-light:hover { background: rgba(255,255,255,.3); color: #fff; }
.tap-btn-full  { width: 100%; }
.tap-btn-sm    { padding: 7px 14px; font-size: 13px; }
.tap-btn-xs    { padding: 4px 10px; font-size: 11px; border-radius: 6px; }

/* ── Alerts ───────────────────────────────────────────────────────────── */
.tap-alert {
  padding: 14px 16px; border-radius: var(--tap-radius-sm); margin-bottom: 16px;
  font-size: 14px; line-height: 1.5;
}
.tap-alert-success { background: #f0fff4; border: 1px solid #9ae6b4; color: #276749; }
.tap-alert-danger  { background: #fff5f5; border: 1px solid #feb2b2; color: #c53030; }
.tap-alert-warning { background: #fffaf0; border: 1px solid #fbd38d; color: #7b341e; }
.tap-alert-info    { background: #ebf8ff; border: 1px solid #90cdf4; color: #2a4365; }

/* ── Info Box ─────────────────────────────────────────────────────────── */
.tap-info-box { padding: 10px 14px; background: #ebf8ff; border: 1px solid #90cdf4; border-radius: var(--tap-radius-sm); font-size: 13px; color: #2a4365; margin-bottom: 12px; }
.tap-info-warn { background: #fffaf0; border-color: #fbd38d; color: #7b341e; }

/* ── Notifications ────────────────────────────────────────────────────── */
.tap-notifications { display: flex; flex-direction: column; gap: 10px; margin-bottom: 24px; }
.tap-notif-item { background: #fffaf0; border-left: 4px solid var(--tap-accent); padding: 12px 14px; border-radius: 0 var(--tap-radius-sm) var(--tap-radius-sm) 0; }
.tap-notif-item strong { display: block; font-size: 14px; margin-bottom: 4px; }
.tap-notif-item p { margin: 0; font-size: 13px; color: var(--tap-muted); }

/* ── Tables ───────────────────────────────────────────────────────────── */
.tap-table-wrap { overflow-x: auto; border-radius: var(--tap-radius); border: 1px solid var(--tap-border); margin-bottom: 16px; }
.tap-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.tap-table th { background: #f7f8fc; font-weight: 600; padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--tap-border); white-space: nowrap; }
.tap-table td { padding: 10px 12px; border-bottom: 1px solid #f0f0f0; }
.tap-table tr:last-child td { border-bottom: none; }
.tap-table tr:hover td { background: #fafbff; }
.tap-ref { font-family: monospace; font-size: 11px; color: var(--tap-muted); }
.tap-badge-service { background: #f0ebfa; color: var(--tap-primary); padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; text-transform: uppercase; }
.badge.bg-success, .tap-trans-success { background: #c6f6d5!important; color: #276749!important; padding: 3px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; }
.badge.bg-danger,  .tap-trans-failed  { background: #fed7d7!important; color: #c53030!important; padding: 3px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; }
.badge.bg-warning, .tap-trans-pending { background: #fefcbf!important; color: #7b341e!important; padding: 3px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; }

/* ── Balance Card ─────────────────────────────────────────────────────── */
.tap-balance-card {
  background: linear-gradient(135deg, var(--tap-primary), var(--tap-primary-dk));
  color: #fff; border-radius: var(--tap-radius); padding: 28px 24px;
  text-align: center; margin-bottom: 20px;
}
.tap-balance-label  { font-size: 13px; opacity: .8; margin-bottom: 8px; }
.tap-balance-amount { font-size: 38px; font-weight: 800; margin-bottom: 6px; }
.tap-balance-ref    { font-size: 13px; opacity: .75; }

/* ── Bank Details ─────────────────────────────────────────────────────── */
.tap-bank-card { border-left: 4px solid var(--tap-info); }
.tap-bank-note { font-size: 13px; color: var(--tap-muted); margin-bottom: 16px; }
.tap-bank-details { display: flex; flex-direction: column; gap: 10px; }
.tap-bank-row { display: flex; justify-content: space-between; align-items: center; padding: 10px 14px; background: #f7f8fc; border-radius: var(--tap-radius-sm); font-size: 14px; }
.tap-bank-row span { color: var(--tap-muted); font-size: 12px; }

/* ── Empty State ──────────────────────────────────────────────────────── */
.tap-empty-state { text-align: center; padding: 48px 20px; color: var(--tap-muted); }
.tap-empty-state p { font-size: 15px; margin-bottom: 16px; }
.tap-view-all { text-align: center; margin-top: 12px; }

/* ── Responsive ───────────────────────────────────────────────────────── */
@media (max-width: 600px) {
  .tap-services-grid { grid-template-columns: repeat(2, 1fr); }
  .tap-welcome-banner { flex-direction: column; text-align: center; }
  .tap-wallet-badge { text-align: center; }
  .tap-network-selector { justify-content: center; }
  .tap-exam-selector { justify-content: center; }
}
@media (max-width: 380px) {
  .tap-services-grid { grid-template-columns: 1fr 1fr; }
}

/* ── Page container with nav ─────────────────────────────────────────── */
.tap-page-container { width: 100%; }
.tap-page-body      { padding: 24px 0 40px; }
@media (max-width: 600px) { .tap-page-body { padding: 16px 0 32px; } }

/* ── Referral box ────────────────────────────────────────────────────── */
.tap-referral-box {
    background: linear-gradient(135deg,#f0ebfa,#e8f4ff);
    border: 1px solid #d6c8f5;
    border-radius: var(--tap-radius);
    padding: 20px;
    margin-bottom: 24px;
}
.tap-referral-info p   { margin: 0 0 8px; font-size: 13px; color: var(--tap-text); }
.tap-referral-bonus    { display:inline-block; background:#fff; padding:4px 12px; border-radius:20px; font-size:12px; font-weight:600; color:var(--tap-primary); margin-bottom:12px; }
.tap-referral-link-wrap{ display:flex; gap:8px; align-items:center; margin-bottom:8px; flex-wrap:wrap; }
.tap-referral-input    { flex:1; padding:9px 12px; border:1.5px solid #d6c8f5; border-radius:8px; font-size:13px; background:#fff; min-width:0; color:var(--tap-text); }
.tap-referral-code     { font-size:12px; color:var(--tap-muted); }
.tap-referral-code strong { color:var(--tap-primary); }
