/* app.css — styles specific to index.html (dApp terminal) */

/* ── Card extras ── */
.card         { margin-bottom: 16px; }
.card-header  { padding: 18px 24px; }
.card-title   { font-size: 15px; letter-spacing: -.01em; }
.card-body    { padding: 24px; }

/* ── Stats row ── */
.stats-row { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 24px; }
.stat-card { background: rgba(255,255,255,.03); border: 1px solid var(--border); border-radius: 14px; padding: 16px 20px; flex: 1; min-width: 130px; }
.stat-label { font-size: 11px; font-weight: 600; color: var(--text-2); text-transform: uppercase; letter-spacing: .08em; margin-bottom: 6px; }
.stat-value { font-size: 22px; font-weight: 700; color: var(--text); }

/* ── Tabs ── */
.tabs    { display: flex; gap: 4px; background: var(--surface); border-radius: 12px; padding: 4px; margin-bottom: 24px; }
.tab-btn { flex: 1; padding: 9px 8px; font-size: 13px; font-weight: 500; background: transparent; border: none; color: var(--text-2); border-radius: 9px; transition: all .2s; }
.tab-btn.active { background: rgba(255,255,255,.08); color: var(--text); font-weight: 600; }
.tab-btn:hover:not(.active) { color: var(--text); }
.tab-panel        { display: none; }
.tab-panel.active { display: block; }

/* ── Op tabs ── */
.op-tabs { display: flex; gap: 6px; margin-bottom: 20px; }
.op-tab  { flex: 1; padding: 9px 12px; font-size: 13px; font-weight: 500; background: var(--surface); border: 1px solid var(--border); color: var(--text-2); border-radius: 10px; transition: all .2s; }
.op-tab.active { background: var(--green); color: #000; border-color: var(--green); font-weight: 700; box-shadow: 0 0 20px rgba(0,255,135,.25); }
.op-panel        { display: none; }
.op-panel.active { display: block; }

/* ── Inputs ── */
.input-group  { margin-bottom: 14px; }
.input-label  { display: block; font-size: 12px; font-weight: 600; color: var(--text-2); margin-bottom: 6px; text-transform: uppercase; letter-spacing: .06em; }
.input-field  { width: 100%; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1); border-radius: 10px; color: var(--text); font-family: inherit; font-size: 14px; padding: 11px 14px; outline: none; transition: border-color .2s, box-shadow .2s; }
.input-field:focus { border-color: rgba(0,255,135,.4); box-shadow: 0 0 0 3px rgba(0,255,135,.08); }
.input-field::placeholder { color: var(--text-3); }
.preview-box  { background: rgba(0,0,0,.3); border: 1px solid rgba(0,255,135,.1); border-radius: 10px; padding: 12px 14px; font-size: 12px; color: var(--text-2); word-break: break-all; font-family: 'SF Mono', 'Fira Code', monospace; margin-bottom: 16px; line-height: 1.6; min-height: 44px; }
.info-box     { background: rgba(255,255,255,.03); border: 1px solid var(--border); border-radius: 12px; padding: 16px; }
.info-box.warn { border-color: rgba(245,158,11,.2); background: rgba(245,158,11,.04); }

/* ── Buttons ── */
.btn-primary  { padding: 12px 28px; background: var(--green); color: #000; font-size: 14px; font-weight: 700; border: none; border-radius: 10px; box-shadow: 0 0 24px rgba(0,255,135,.3); transition: all .25s; }
.btn-primary:hover  { transform: translateY(-1px); box-shadow: 0 0 40px rgba(0,255,135,.5); background: #1aff97; }
.btn-secondary { padding: 12px 28px; background: transparent; color: var(--text); font-size: 14px; font-weight: 500; border: 1px solid var(--border); border-radius: 10px; transition: all .25s; }
.btn-secondary:hover { border-color: rgba(255,255,255,.2); background: var(--surface); transform: translateY(-1px); }

/* ── Status bar ── */
.status-bar  { display: flex; align-items: center; justify-content: space-between; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 12px 18px; margin-bottom: 24px; flex-wrap: wrap; gap: 10px; }
.dot-green   { color: var(--green); font-weight: 600; }
.dot-red     { color: #888; }
.btn-connect-sm { padding: 7px 16px; background: var(--green); color: #000; font-size: 13px; font-weight: 700; border: none; border-radius: 8px; transition: all .2s; box-shadow: 0 0 16px rgba(0,255,135,.25); }
.btn-connect-sm:hover { background: #1aff97; }

/* ── Tx log ── */
.tx-log        { display: flex; flex-direction: column; gap: 8px; max-height: 320px; overflow-y: auto; }
.tx-item       { background: rgba(255,255,255,.03); border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; font-size: 13px; line-height: 1.6; }
.tx-status-ok   { color: var(--green); font-weight: 600; }
.tx-status-pend { color: #f59e0b;      font-weight: 600; }
.tx-status-fail { color: #ef4444;      font-weight: 600; }

/* ── Grid / label ── */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 24px; }
.label  { font-size: 11px; font-weight: 600; color: var(--text-2); text-transform: uppercase; letter-spacing: .08em; margin-bottom: 4px; }
.value  { font-size: 15px; color: var(--text); }
.value.small { font-size: 12px; word-break: break-all; }

/* ── FAQ ── */
.faq-list { display: flex; flex-direction: column; gap: 12px; }
.faq-item { background: rgba(255,255,255,.02); border: 1px solid var(--border); border-radius: 12px; padding: 16px 18px; }
.faq-q    { font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.faq-a    { font-size: 14px; color: var(--text-2); line-height: 1.65; white-space: pre-line; }

/* ── Wallet modal ── */
.modal-overlay { display: none; position: fixed; inset: 0; z-index: 200; background: rgba(0,0,0,.7); backdrop-filter: blur(12px); align-items: center; justify-content: center; }
.modal-overlay.open { display: flex; }
.modal-box     { background: #0d0d0d; border: 1px solid rgba(255,255,255,.1); border-radius: 20px; box-shadow: 0 24px 80px rgba(0,0,0,.8); width: 100%; max-width: 440px; overflow: hidden; }
.modal-header  { display: flex; justify-content: space-between; align-items: center; padding: 20px 24px; border-bottom: 1px solid var(--border); }
.modal-title   { font-size: 16px; font-weight: 700; color: var(--text); }
.modal-close   { background: transparent; border: none; color: var(--text-2); font-size: 20px; line-height: 1; padding: 0 4px; }
.modal-close:hover { color: var(--text); }
.wallet-list   { padding: 16px; display: flex; flex-direction: column; gap: 8px; }
.wallet-option { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border: 1px solid var(--border); background: rgba(255,255,255,.02); border-radius: 12px; cursor: pointer; transition: all .2s; font-family: inherit; color: var(--text); text-align: left; width: 100%; }
.wallet-option:hover { border-color: rgba(0,255,135,.3); background: rgba(0,255,135,.04); box-shadow: 0 0 20px rgba(0,255,135,.06); }
.wallet-icon   { width: 40px; height: 40px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; }
.wallet-name   { font-size: 14px; font-weight: 700; }
.wallet-desc   { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.modal-note    { padding: 14px 24px; border-top: 1px solid var(--border); font-size: 13px; color: var(--text-2); line-height: 1.5; }

/* ── Toast ── */
#toast {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);
  z-index: 300; background: rgba(8,8,8,.95); border: 1px solid rgba(0,255,135,.3);
  color: var(--green); padding: 12px 24px; font-size: 14px; border-radius: 10px;
  box-shadow: 0 4px 24px rgba(0,0,0,.5); backdrop-filter: blur(12px);
  opacity: 0; transition: opacity .3s; pointer-events: none; white-space: nowrap;
}
#toast.show { opacity: 1; }

/* ── Responsive ── */
@media (max-width: 768px) {
  .grid-2   { grid-template-columns: 1fr; }
  .tabs     { flex-wrap: wrap; }
  .tab-btn  { flex: 0 0 calc(50% - 2px); font-size: 12px; }
  .op-tabs  { flex-wrap: wrap; }
  .op-tab   { flex: 0 0 calc(33.3% - 4px); font-size: 12px; padding: 8px 6px; }
}
@media (max-width: 480px) {
  .card-body    { padding: 16px; }
  .status-bar   { flex-direction: column; align-items: flex-start; gap: 8px; }
  .btn-primary, .btn-secondary { padding: 11px 20px; font-size: 13px; }
}
