:root{--color-bg:#0f172a;--color-card:#1e293b;--color-border:#334155;--color-text:#f8fafc;--color-text-muted:#94a3b8;--color-accent:#0ea5e9;--color-amber:#fbbf24;--color-green:#059669;--color-green-bg:#10b981;--color-red:#b91c1c;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app-shell{min-height:100vh}.bank-header{border-bottom:1px solid #ffffff1a;padding:20px 16px}.bank-header h1{margin:0;font-size:18px;font-weight:700}.bank-header p{color:var(--color-text-muted);margin:2px 0 0;font-size:12px}.page-main{flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding:32px 16px;display:flex}.card{background:var(--color-card);border:1px solid var(--color-border);border-radius:16px;padding:24px}.card h2{margin:0 0 20px;font-size:20px}.field{margin-bottom:16px}.field label{color:var(--color-text-muted);margin-bottom:6px;font-size:12px;display:block}.field input{background:var(--color-bg);border:1px solid var(--color-border);width:100%;color:var(--color-text);border-radius:8px;padding:10px 12px;font-size:14px}.amount-row{gap:8px;display:flex}.amount-row input{flex:1;min-width:0}.amount-row select{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);border-radius:8px;padding:10px 12px;font-size:14px}.field input:read-only{color:var(--color-text-muted)}.btn-primary{background:var(--color-accent);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;padding:12px 20px;font-size:14px;font-weight:600}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.error-text{color:#f87171;margin-top:8px;font-size:12px}.info-banner{color:#bae6fd;background:#0ea5e91f;border:1px solid #0ea5e959;border-radius:10px;margin-bottom:4px;padding:12px 14px;font-size:12px;line-height:1.5}.summary-row{border-bottom:1px solid var(--color-border);justify-content:space-between;padding:8px 0;font-size:14px;display:flex}.summary-row:last-child{border-bottom:none}.summary-row .label{color:var(--color-text-muted)}.status-badge{color:var(--color-text-muted);background:#94a3b826;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:700;display:inline-flex}.status-badge.released{color:#34d399;background:#05966933}.status-badge.rejected{color:#f87171;background:#b91c1c33}.status-badge.challenge_issued,.status-badge.validating,.status-badge.subject_bound,.status-badge.release_eligible,.status-badge.policy_approved{color:var(--color-amber);background:#fbbf2426}.qr-wrap{text-align:center;background:#fff;border-radius:12px;padding:20px}.qr-wrap img{margin:0 auto;display:block}.qr-caption{color:#475569;margin-top:12px;font-size:12px}.qr-caption a{color:var(--color-accent);word-break:break-all}@keyframes safeauth-pulse-ring{0%{box-shadow:0 0 #38bdf88c}70%{box-shadow:0 0 0 18px #38bdf800}to{box-shadow:0 0 #38bdf800}}.pulse-ring{animation:1.6s ease-out infinite safeauth-pulse-ring}@keyframes safeauth-scale-in{0%{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}.scale-in{animation:.5s cubic-bezier(.34,1.56,.64,1) both safeauth-scale-in}.challenge-card{text-align:center;background:#33415599;border-radius:12px;padding:16px}.challenge-card .emoji{font-size:40px}.challenge-card .instruction{color:var(--color-amber);margin-top:4px;font-size:18px;font-weight:700}.verifying-card{text-align:center;background:#33415599;border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:20px;display:flex}.spinner{border:4px solid #64748b;border-top-color:var(--color-accent);border-radius:999px;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.result-screen{z-index:50;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex;position:fixed;inset:0}.result-screen.released{background:var(--color-green)}.result-screen.rejected{background:var(--color-red)}.result-icon{background:#fff;border-radius:999px;justify-content:center;align-items:center;width:96px;height:96px;font-size:48px;display:flex}.result-screen.released .result-icon{color:var(--color-green)}.result-screen.rejected .result-icon{color:var(--color-red)}.result-screen h2{color:#fff;margin:0;font-size:28px}.result-screen .meta{font-family:var(--font-mono);color:#fffc;font-size:12px}.result-page{max-width:640px}.proof-section{margin-top:16px}.proof-section summary{cursor:pointer;color:var(--color-text-muted);margin-bottom:12px;font-size:14px}.signed-event-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:10px;margin-bottom:12px;padding:14px}.signed-event-card .event-header{justify-content:space-between;margin-bottom:8px;font-size:13px;display:flex}.signed-event-card .event-type{font-weight:700}.signed-event-card .event-meta{color:var(--color-text-muted);font-size:12px}.signed-event-card pre{background:#0000004d;border-radius:8px;margin:0 0 8px;padding:10px;font-size:11px;overflow-x:auto}.signed-event-card .verify-instruction{font-family:var(--font-mono);color:#38bdf8;word-break:break-all;font-size:11px}.step-list{margin-top:10px;font-size:14px}.step-list .step.done{color:#34d399}.step-list .step.current{color:#fff;font-weight:700}.step-list .step.upcoming{color:#64748b}
