*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--theme: #7c3aed;--bg: #f5f7fa;--surface: #ffffff;--border: #e2e8f0;--text: #1a202c;--text-muted: #718096;--danger: #e53e3e;--success: #38a169;--warning-bg: #fff8e1;--warning-border: #f59e0b;--radius: 8px;--shadow: 0 1px 3px rgba(0,0,0,.1), 0 1px 2px rgba(0,0,0,.06);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}body{background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}h1{font-size:1.75rem;font-weight:700}h2{font-size:1.35rem;font-weight:600}h3{font-size:1.1rem;font-weight:600}label{font-size:.85rem;font-weight:600;color:var(--text-muted);display:block;margin-bottom:.3rem}code{font-family:Courier New,monospace;font-size:.85rem}a{color:var(--theme);text-decoration:none}a:hover{text-decoration:underline}.text-muted{color:var(--text-muted);font-size:.9rem}.page-center{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:1rem;color:var(--text-muted)}.warning-banner{background:var(--warning-bg);border-left:4px solid var(--warning-border);padding:.75rem 1rem;font-size:.85rem;color:#7c6a00;line-height:1.5}.warning-banner.danger{background:#fff5f5;border-color:var(--danger);color:#9b2c2c}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--theme);border-radius:50%;animation:spin .7s linear infinite}.spinner-sm{width:18px;height:18px;border-width:2px}@keyframes spin{to{transform:rotate(360deg)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem 1.1rem;border-radius:var(--radius);border:none;font-size:.9rem;font-weight:600;cursor:pointer;transition:opacity .15s,filter .15s;white-space:nowrap}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:not(:disabled):hover{filter:brightness(.93)}.btn-primary{background:var(--theme);color:#fff}.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn-ghost{background:transparent;color:#ffffffd9;padding:.4rem .8rem;font-size:.85rem}.btn-ghost:hover{background:#ffffff26;filter:none}.btn-sm{font-size:.8rem;padding:.35rem .75rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;box-shadow:var(--shadow)}input,textarea{width:100%;padding:.6rem .8rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;color:var(--text);background:var(--surface);outline:none;transition:border-color .15s}input:focus,textarea:focus{border-color:var(--theme)}.input-readonly{background:var(--bg);color:var(--text-muted)}.form-group{margin-bottom:1rem}.mnemonic-input{font-family:monospace;resize:vertical}.input-action-row{display:grid;grid-template-columns:1fr 44px;gap:.5rem;align-items:stretch}.scan-btn{padding:0;min-width:44px;font-size:1.05rem}.qr-scanner-panel{margin-top:.65rem;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg)}.qr-scanner-panel video{display:block;width:100%;aspect-ratio:1 / 1;object-fit:cover;background:#000}.qr-scanner-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem;color:var(--text-muted);font-size:.8rem}.error-message{background:#fff5f5;border:1px solid #fed7d7;color:var(--danger);padding:.6rem .9rem;border-radius:var(--radius);font-size:.875rem;margin-bottom:.75rem}.success-message{background:#f0fff4;border:1px solid #c6f6d5;color:var(--success);padding:.6rem .9rem;border-radius:var(--radius);font-size:.875rem;margin-bottom:.75rem}.badge{display:inline-block;padding:.15rem .55rem;background:#ebf8ff;color:#2b6cb0;border-radius:999px;font-size:.75rem;font-weight:600}.explorer-link{font-size:.8rem;color:var(--theme)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f5f7fa,color-mix(in srgb,var(--theme) 24%,white));padding:2rem 1rem}.login-container{width:100%;max-width:440px;display:flex;flex-direction:column;gap:1.25rem}.bank-logo-circle{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.8rem;font-weight:700;margin:0 auto;box-shadow:0 4px 12px #00000026}.bank-title{text-align:center;font-size:1.9rem}.bank-subtitle{text-align:center;color:var(--text-muted);font-size:.9rem}.login-section{background:var(--surface);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.login-section h2{margin-bottom:.5rem}.login-mode-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1rem}.mock-notice{font-size:.82rem;color:var(--text-muted);background:var(--bg);padding:.5rem .75rem;border-radius:var(--radius);margin-bottom:1rem}.google-signin-slot{display:flex;justify-content:center;min-height:44px}.username-form{display:flex;flex-direction:column;gap:.85rem}.username-form label{display:block;margin-bottom:.35rem;font-size:.82rem;font-weight:600;color:var(--text-muted)}.username-hint{color:var(--text-muted);font-size:.78rem;margin-top:.35rem}.username-submit{width:100%}.profile-list{display:flex;flex-direction:column;gap:.65rem}.profile-card{display:flex;align-items:center;gap:.85rem;padding:.75rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:background .15s,border-color .15s;text-align:left}.profile-card:hover:not(:disabled){background:var(--bg);border-color:var(--theme)}.profile-card:disabled{opacity:.6;cursor:not-allowed}.avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;background:var(--bg)}.profile-info{flex:1;display:flex;flex-direction:column}.profile-name{font-weight:600;font-size:.9rem}.profile-email{font-size:.78rem;color:var(--text-muted)}.google-badge{width:28px;height:28px;border-radius:50%;background:#4285f4;color:#fff;font-weight:700;font-size:.9rem;display:flex;align-items:center;justify-content:center}.login-footer{font-size:.8rem;text-align:center;color:var(--text-muted);line-height:1.7}.dashboard{min-height:100vh;display:flex;flex-direction:column}.dashboard-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;color:#fff;box-shadow:0 2px 4px #0000001a;position:sticky;top:0;z-index:100}.header-left{display:flex;align-items:center;gap:.6rem}.bank-logo-sm{width:32px;height:32px;border-radius:50%;background:#ffffff40;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem}.bank-name-sm{font-weight:700;font-size:1rem}.header-right{display:flex;align-items:center;gap:.75rem}.header-avatar{width:30px;height:30px;border-radius:50%;border:2px solid rgba(255,255,255,.4)}.header-user{font-size:.88rem}.dashboard-main{max-width:760px;width:100%;margin:0 auto;padding:1.5rem 1rem;display:flex;flex-direction:column;gap:1.25rem}.no-wallet-card{text-align:center;padding:2.5rem 2rem}.no-wallet-icon{font-size:3rem;margin-bottom:.75rem}.no-wallet-card h2{margin-bottom:.5rem}.no-wallet-card p{color:var(--text-muted);font-size:.9rem;margin-bottom:.75rem}.no-wallet-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap;margin-top:1.25rem}.wallet-card-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.address-row{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.75rem}.address-code{word-break:break-all;background:var(--bg);padding:.4rem .65rem;border-radius:4px;font-size:.82rem}.wallet-note{font-size:.82rem;color:var(--text-muted);border-top:1px solid var(--border);padding-top:.75rem;margin-top:.75rem}.wallet-qr{display:flex;flex-direction:column;align-items:center;gap:.55rem;margin:1rem 0 .75rem}.wallet-qr svg{width:min(260px,80vw);height:auto;background:#fff;image-rendering:pixelated;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.wallet-qr-caption{color:var(--text-muted);font-size:.78rem;text-align:center}.wallet-action-grid{display:flex;flex-direction:column;gap:.65rem;margin-top:.25rem}.balance-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.balance-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.balance-item{background:var(--bg);border-radius:var(--radius);padding:1rem;display:flex;flex-direction:column;gap:.2rem}.balance-token{font-size:.75rem;font-weight:700;color:var(--text-muted);letter-spacing:.05em}.balance-value{font-size:1.6rem;font-weight:700}.edu-value{color:var(--theme)}.eth-value{color:#718096}.balance-name{font-size:.78rem;color:var(--text-muted)}.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.action-btn{width:100%;justify-content:center}.tx-card h3{margin-bottom:.25rem}.tx-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.tx-list{display:flex;flex-direction:column;gap:.65rem}.tx-item{display:grid;grid-template-columns:60px 1fr auto;align-items:center;gap:.75rem;padding:.75rem;background:var(--bg);border-radius:var(--radius);border-left:3px solid var(--border)}.tx-item.sent{border-color:#fc8181}.tx-item.received{border-color:#68d391}.tx-direction{font-size:.78rem;font-weight:600;color:var(--text-muted)}.tx-details{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.85rem}.tx-amount{font-weight:700}.tx-addr{color:var(--text-muted);font-size:.8rem}.tx-date{font-size:.75rem;color:var(--text-muted);white-space:nowrap}.status{font-size:.72rem;font-weight:600;padding:.15rem .45rem;border-radius:999px}.status.confirmed{background:#c6f6d5;color:#276749}.status.pending{background:#fefcbf;color:#7c6a00}.status.failed{background:#fed7d7;color:#9b2c2c}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem}.modal{background:var(--surface);border-radius:var(--radius);padding:1.5rem;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:1rem;box-shadow:0 20px 60px #0003}.modal-header{display:flex;align-items:center;justify-content:space-between}.modal-close{background:none;border:none;font-size:1.2rem;cursor:pointer;color:var(--text-muted);padding:.25rem .5rem}.modal-description{font-size:.87rem;color:var(--text-muted)}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:.5rem}.export-section{display:flex;flex-direction:column;gap:.5rem}.export-value{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;position:relative}.mnemonic-words{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.mnemonic-word{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.25rem .5rem;font-family:monospace;font-size:.82rem}.word-num{color:var(--text-muted);font-size:.7rem;margin-right:.2rem}.export-hint{font-size:.82rem;color:var(--text-muted)}.copy-btn{margin-top:.35rem}.private-key{word-break:break-all;font-size:.78rem;display:block}.private-key-box{display:flex;flex-direction:column;gap:.5rem}@media (max-width: 480px){.balance-grid,.action-grid{grid-template-columns:1fr}.tx-item{grid-template-columns:50px 1fr}.tx-date{grid-column:1 / -1}.no-wallet-actions{flex-direction:column;align-items:center}}.credit-balances{margin-top:1.5rem;padding-top:1rem;border-top:1px solid #e2e8f0}.credit-balances h4{margin:0 0 1rem}.credit-balances .balance-item{gap:.5rem;overflow-wrap:anywhere}.credit-balances small,.credit-balances a{font-size:.8rem}
