/* ===================================================
   SaaS Freemium Gateway — Public Styles
   =================================================== */

@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;600&display=swap');

:root {
  --sfg-primary:       #6366f1;
  --sfg-primary-dark:  #4f46e5;
  --sfg-premium:       #f59e0b;
  --sfg-premium-dark:  #d97706;
  --sfg-free:          #10b981;
  --sfg-bg:            #0f0f13;
  --sfg-surface:       #1a1a24;
  --sfg-border:        rgba(255,255,255,.08);
  --sfg-text:          #e4e4f0;
  --sfg-muted:         #8b8ba0;
  --sfg-radius:        14px;
  --sfg-font:          'Plus Jakarta Sans', sans-serif;
  --sfg-mono:          'JetBrains Mono', monospace;
}

/* ── Tool cards ─────────────────────────────────── */
.sfg-tool-card {
  font-family: var(--sfg-font);
  background:  var(--sfg-surface);
  border:      1px solid var(--sfg-border);
  border-radius: var(--sfg-radius);
  padding:     28px;
  margin:      20px 0;
  position:    relative;
  overflow:    hidden;
  color:       var(--sfg-text);
  transition:  box-shadow .3s ease, transform .3s ease;
}
.sfg-tool-card:hover { transform: translateY(-2px); box-shadow: 0 16px 40px rgba(0,0,0,.4); }

.sfg-free-card  { border-top: 3px solid var(--sfg-free); }
.sfg-premium-card { border-top: 3px solid var(--sfg-premium); }

.sfg-tool-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.sfg-tool-icon  { font-size: 32px; }
.sfg-tool-title { font-size: 20px; font-weight: 700; margin: 0 0 8px; color: #fff; }
.sfg-tool-desc  { color: var(--sfg-muted); margin: 0 0 16px; font-size: 14px; line-height: 1.6; }
.sfg-tool-content { position: relative; z-index: 1; }

/* Badges */
.sfg-badge {
  font-family: var(--sfg-mono);
  font-size:   11px;
  font-weight: 600;
  letter-spacing: .06em;
  padding:     4px 10px;
  border-radius: 99px;
}
.sfg-badge-free    { background: rgba(16,185,129,.15); color: var(--sfg-free); border: 1px solid rgba(16,185,129,.3); }
.sfg-badge-premium { background: rgba(245,158,11,.15); color: var(--sfg-premium); border: 1px solid rgba(245,158,11,.3); }

/* Premium blur overlay */
.sfg-premium-preview { border-radius: 8px; overflow: hidden; }
.sfg-lock-overlay {
  position:    absolute;
  inset:       0;
  display:     flex;
  align-items: center;
  justify-content: center;
  z-index:     10;
  background:  rgba(10,10,18,.55);
  backdrop-filter: blur(2px);
  border-radius: var(--sfg-radius);
}
.sfg-lock-box {
  text-align:  center;
  background:  rgba(26,26,36,.95);
  border:      1px solid rgba(245,158,11,.25);
  border-radius: 16px;
  padding:     32px 36px;
  max-width:   320px;
  box-shadow:  0 20px 60px rgba(0,0,0,.6);
}
.sfg-lock-icon { font-size: 40px; margin-bottom: 12px; }
.sfg-lock-box h4 { font-size: 18px; font-weight: 700; color: #fff; margin: 0 0 8px; }
.sfg-lock-box p  { color: var(--sfg-muted); font-size: 13px; line-height: 1.6; margin-bottom: 20px; }

.sfg-already-paid { margin-top: 14px; font-size: 12px; color: var(--sfg-muted); }
.sfg-check-access-link { color: var(--sfg-primary); text-decoration: none; }
.sfg-check-access-link:hover { text-decoration: underline; }

/* ── Pricing Section ────────────────────────────── */
.sfg-pricing-section { font-family: var(--sfg-font); padding: 48px 0; }
.sfg-pricing-header  { text-align: center; margin-bottom: 40px; }
.sfg-pricing-header h2 { font-size: 36px; font-weight: 800; color: #fff; margin-bottom: 10px; }
.sfg-pricing-header p  { color: var(--sfg-muted); font-size: 16px; }

.sfg-pricing-grid {
  display:               grid;
  grid-template-columns: repeat(3, 1fr);
  gap:                   20px;
  max-width:             960px;
  margin:                0 auto;
}
@media (max-width: 768px) { .sfg-pricing-grid { grid-template-columns: 1fr; } }

.sfg-plan-card {
  background:    var(--sfg-surface);
  border:        1px solid var(--sfg-border);
  border-radius: var(--sfg-radius);
  padding:       32px 28px;
  position:      relative;
  color:         var(--sfg-text);
  transition:    transform .3s, box-shadow .3s;
}
.sfg-plan-card:hover { transform: translateY(-4px); box-shadow: 0 20px 50px rgba(0,0,0,.5); }

.sfg-plan-monthly { border: 1px solid rgba(99,102,241,.5); background: linear-gradient(145deg, #1a1a2e, #1a1a24); }
.sfg-plan-lifetime { border: 1px solid rgba(245,158,11,.3); }

.sfg-plan-card h3 { font-size: 20px; font-weight: 700; color: #fff; margin: 16px 0 8px; }
.sfg-plan-badge {
  display:        inline-block;
  font-family:    var(--sfg-mono);
  font-size:      10px;
  font-weight:    600;
  letter-spacing: .08em;
  padding:        4px 10px;
  border-radius:  99px;
  background:     rgba(255,255,255,.08);
  color:          var(--sfg-muted);
}
.sfg-badge-popular { background: rgba(99,102,241,.2); color: var(--sfg-primary); border: 1px solid rgba(99,102,241,.4); }

.sfg-plan-price        { margin: 16px 0 20px; }
.sfg-price-amount      { font-size: 40px; font-weight: 800; color: #fff; }
.sfg-price-period      { font-size: 14px; color: var(--sfg-muted); }

.sfg-plan-features { list-style: none; padding: 0; margin: 0 0 24px; }
.sfg-plan-features li { padding: 6px 0; font-size: 14px; border-bottom: 1px solid var(--sfg-border); color: var(--sfg-text); }
.sfg-plan-features li:last-child { border-bottom: none; }

/* ── Buttons ────────────────────────────────────── */
.sfg-btn {
  font-family:   var(--sfg-font);
  font-size:     14px;
  font-weight:   600;
  padding:       11px 22px;
  border-radius: 10px;
  border:        none;
  cursor:        pointer;
  width:         100%;
  transition:    all .2s ease;
  letter-spacing: .01em;
}
.sfg-btn-unlock {
  background:  linear-gradient(135deg, var(--sfg-primary), var(--sfg-primary-dark));
  color:       #fff;
  box-shadow:  0 4px 14px rgba(99,102,241,.4);
}
.sfg-btn-unlock:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(99,102,241,.5); }

.sfg-btn-free { background: rgba(16,185,129,.15); color: var(--sfg-free); border: 1px solid rgba(16,185,129,.3); }
.sfg-btn-free:hover { background: rgba(16,185,129,.25); }

.sfg-btn-check { background: var(--sfg-primary); color: #fff; border-radius: 8px; padding: 10px 20px; width: auto; }

/* ── Access check form ──────────────────────────── */
.sfg-access-check-form {
  font-family:   var(--sfg-font);
  background:    var(--sfg-surface);
  border:        1px solid var(--sfg-border);
  border-radius: var(--sfg-radius);
  padding:       24px;
  color:         var(--sfg-text);
}
.sfg-form-row   { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.sfg-input {
  flex:          1;
  min-width:     200px;
  background:    rgba(255,255,255,.05);
  border:        1px solid var(--sfg-border);
  border-radius: 8px;
  padding:       10px 14px;
  color:         #fff;
  font-family:   var(--sfg-font);
  font-size:     14px;
  outline:       none;
}
.sfg-input:focus { border-color: var(--sfg-primary); }
.sfg-access-result { margin-top: 12px; padding: 12px 16px; border-radius: 8px; font-size: 14px; }
.sfg-access-yes { background: rgba(16,185,129,.15); color: var(--sfg-free); border: 1px solid rgba(16,185,129,.3); }
.sfg-access-no  { background: rgba(239,68,68,.1); color: #f87171; border: 1px solid rgba(239,68,68,.2); }

/* ── Payment Modal ──────────────────────────────── */
.sfg-modal-overlay {
  position:       fixed;
  inset:          0;
  background:     rgba(0,0,0,.75);
  z-index:        99999;
  display:        flex;
  align-items:    center;
  justify-content: center;
  backdrop-filter: blur(6px);
  animation:      sfgFadeIn .2s ease;
}
.sfg-modal {
  font-family:    var(--sfg-font);
  background:     #14141e;
  border:         1px solid rgba(255,255,255,.1);
  border-radius:  20px;
  padding:        36px;
  width:          90%;
  max-width:      500px;
  max-height:     90vh;
  overflow-y:     auto;
  color:          var(--sfg-text);
  position:       relative;
  animation:      sfgSlideUp .3s ease;
}
.sfg-modal-close {
  position:   absolute;
  top:        16px; right: 20px;
  background: none;
  border:     none;
  color:      var(--sfg-muted);
  font-size:  22px;
  cursor:     pointer;
  line-height: 1;
}
.sfg-modal-close:hover { color: #fff; }
.sfg-modal h2 { font-size: 22px; font-weight: 800; color: #fff; margin: 0 0 6px; }
.sfg-modal-subtitle { color: var(--sfg-muted); font-size: 14px; margin-bottom: 24px; }

/* Plan toggle */
.sfg-plan-toggle { display: flex; gap: 10px; margin-bottom: 24px; }
.sfg-plan-tab {
  flex:          1;
  padding:       12px;
  border-radius: 10px;
  border:        1px solid var(--sfg-border);
  background:    transparent;
  color:         var(--sfg-muted);
  font-family:   var(--sfg-font);
  font-weight:   600;
  cursor:        pointer;
  text-align:    center;
  transition:    all .2s;
}
.sfg-plan-tab.active {
  background: rgba(99,102,241,.15);
  border-color: var(--sfg-primary);
  color: var(--sfg-primary);
}
.sfg-plan-tab .sfg-tab-price { font-size: 18px; font-weight: 800; color: inherit; display: block; }
.sfg-plan-tab .sfg-tab-label { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; display: block; margin-top: 2px; }

/* Form fields */
.sfg-modal-field { margin-bottom: 14px; }
.sfg-modal-field label { display: block; font-size: 13px; color: var(--sfg-muted); margin-bottom: 6px; font-weight: 500; }
.sfg-modal-field input {
  width:         100%;
  box-sizing:    border-box;
  background:    rgba(255,255,255,.05);
  border:        1px solid var(--sfg-border);
  border-radius: 8px;
  padding:       11px 14px;
  color:         #fff;
  font-family:   var(--sfg-font);
  font-size:     14px;
  outline:       none;
}
.sfg-modal-field input:focus { border-color: var(--sfg-primary); }

/* UPI section */
.sfg-upi-section { background: rgba(245,158,11,.06); border: 1px solid rgba(245,158,11,.2); border-radius: 12px; padding: 20px; margin: 20px 0; text-align: center; }
.sfg-upi-section h4 { margin: 0 0 16px; color: var(--sfg-premium); font-size: 15px; }
.sfg-qr-img { width: 180px; height: 180px; border-radius: 10px; margin: 0 auto 16px; display: block; background: #fff; padding: 6px; }
.sfg-upi-id-box { font-family: var(--sfg-mono); font-size: 16px; font-weight: 600; color: var(--sfg-premium); background: rgba(245,158,11,.1); padding: 10px 16px; border-radius: 8px; letter-spacing: .02em; }
.sfg-upi-amount { font-size: 28px; font-weight: 800; color: #fff; margin: 12px 0 4px; }
.sfg-open-upi-btn {
  display:      inline-flex;
  align-items:  center;
  gap:          8px;
  background:   linear-gradient(135deg, #f59e0b, #d97706);
  color:        #000;
  font-weight:  700;
  padding:      13px 28px;
  border-radius: 10px;
  text-decoration: none;
  margin-top:   16px;
  font-size:    14px;
  transition:   all .2s;
  border: none;
  cursor: pointer;
  font-family: var(--sfg-font);
  width: 100%;
  justify-content: center;
}
.sfg-open-upi-btn:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(245,158,11,.4); }

/* Reference input */
.sfg-ref-section { margin-top: 20px; }
.sfg-ref-section p { font-size: 13px; color: var(--sfg-muted); margin-bottom: 10px; }
.sfg-ref-row { display: flex; gap: 8px; }
.sfg-ref-row input { flex: 1; }
.sfg-btn-submit-ref {
  background:  var(--sfg-primary);
  color:       #fff;
  border:      none;
  border-radius: 8px;
  padding:     10px 16px;
  font-family: var(--sfg-font);
  font-weight: 600;
  cursor:      pointer;
  font-size:   13px;
  white-space: nowrap;
}

/* Step indicators */
.sfg-steps { display: flex; gap: 6px; margin-bottom: 22px; }
.sfg-step { flex: 1; height: 3px; background: var(--sfg-border); border-radius: 99px; transition: background .3s; }
.sfg-step.active { background: var(--sfg-primary); }
.sfg-step.done   { background: var(--sfg-free); }

/* Messages */
.sfg-msg { padding: 12px 16px; border-radius: 8px; font-size: 13px; margin-top: 12px; }
.sfg-msg-success { background: rgba(16,185,129,.12); color: #34d399; border: 1px solid rgba(16,185,129,.25); }
.sfg-msg-error   { background: rgba(239,68,68,.1); color: #f87171; border: 1px solid rgba(239,68,68,.2); }

/* Animations */
@keyframes sfgFadeIn  { from { opacity: 0; } to { opacity: 1; } }
@keyframes sfgSlideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }

/* ── Loading spinner ────────────────────────────── */
.sfg-spinner { width: 20px; height: 20px; border: 2px solid rgba(255,255,255,.2); border-top-color: #fff; border-radius: 50%; animation: sfgSpin .6s linear infinite; display: inline-block; vertical-align: middle; margin-right: 6px; }
@keyframes sfgSpin { to { transform: rotate(360deg); } }
