/* Interactive receiver approval */ .approval-demo { overflow: hidden; border: 1px solid #ded6e2; border-radius: 24px; background: #fbf9fc; box-shadow: 0 35px 90px rgba(49, 29, 58, 0.16); transform: rotate(1deg); transition: transform 280ms ease, border-color 280ms ease; } .approval-demo:hover { transform: rotate(0deg) translateY(-3px); } .approval-demo.state-approved { border-color: rgba(45, 185, 117, 0.4); } .approval-demo.state-refused { border-color: rgba(221, 92, 75, 0.35); } .approval-window-bar { display: flex; height: 48px; align-items: center; gap: 6px; padding: 0 16px; border-bottom: 1px solid #ded6e2; background: #f0ecf2; } .approval-window-bar > span { width: 8px; height: 8px; border-radius: 50%; background: #d1c7d5; } .approval-window-bar > span:nth-child(1) { background: #f1a191; } .approval-window-bar > span:nth-child(2) { background: #f1ca72; } .approval-window-bar > span:nth-child(3) { background: #72cf9b; } .approval-window-bar small { margin-left: auto; color: #8a7f8f; font-family: var(--font-mono); font-size: 8px; font-weight: 700; letter-spacing: 0.06em; } .approval-body { min-height: 385px; padding: 35px; background: radial-gradient(circle at 90% 0%, rgba(192, 132, 252, 0.16), transparent 27%), white; } .approval-heading { display: flex; align-items: center; gap: 17px; margin-bottom: 30px; } .device-avatar { position: relative; width: 52px; height: 60px; flex: 0 0 auto; border: 4px solid #352e39; border-radius: 13px; background: #211d24; box-shadow: 0 10px 25px rgba(42, 30, 48, 0.16); } .device-avatar::before { position: absolute; top: 4px; left: 50%; width: 16px; height: 3px; border-radius: 999px; background: #0c0a0d; content: ""; transform: translateX(-50%); } .device-avatar-screen { position: absolute; inset: 14px 8px 8px; border-radius: 7px; background: linear-gradient(145deg, #b55efa, #6f27e9); } .device-avatar-glow { position: absolute; inset: -5px; z-index: -1; border-radius: 16px; box-shadow: 0 0 0 0 rgba(168, 85, 247, 0.25); animation: avatar-pulse 2.7s ease-out infinite; } .approval-heading h3 { max-width: 360px; margin: 5px 0 0; font-size: 21px; letter-spacing: -0.035em; line-height: 1.22; } .approval-file { display: flex; align-items: center; gap: 13px; padding: 16px; border: 1px solid #e5dde8; border-radius: 14px; background: #f8f5f9; } .approval-file-icon { display: grid; width: 42px; height: 42px; flex: 0 0 auto; place-items: center; border-radius: 11px; background: var(--brand-100); color: var(--brand-600); } .approval-file-icon svg { width: 21px; } .approval-file strong, .approval-file small { display: block; } .approval-file strong { font-size: 12px; } .approval-file small { color: var(--ink-muted); font-size: 9px; } .approval-percent { margin-left: auto; color: var(--brand-600); font-family: var(--font-mono); font-size: 11px; font-weight: 800; } .approval-actions { display: grid; grid-template-columns: 1fr 1.4fr; gap: 10px; margin-top: 22px; } .approval-actions button, .approval-refused button { min-height: 47px; border: 1px solid #ded4e2; border-radius: 12px; font-size: 12px; font-weight: 750; cursor: pointer; transition: transform 160ms ease, background 160ms ease, box-shadow 160ms ease; } .approval-actions button:hover, .approval-refused button:hover { transform: translateY(-2px); } .approval-refuse { background: white; color: #625769; } .approval-accept { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-color: transparent !important; background: linear-gradient(135deg, var(--brand-500), var(--brand-700)); box-shadow: 0 10px 24px rgba(132, 47, 238, 0.22); color: white; } .approval-accept svg { width: 17px; } .approval-progress { margin-top: 25px; animation: approval-state-enter 350ms ease; } .approval-progress-track { overflow: hidden; height: 8px; border-radius: 999px; background: #eee8f1; } .approval-progress-track span { display: block; width: 68%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--brand-500), var(--brand-700)); box-shadow: 0 0 15px rgba(168, 85, 247, 0.38); animation: progress-fill 900ms cubic-bezier(0.25, 0.8, 0.25, 1) both; } .approval-progress-meta { display: flex; align-items: center; justify-content: space-between; margin-top: 13px; color: var(--ink-muted); font-size: 9px; } .approval-progress-meta > span { display: flex; align-items: center; gap: 9px; } .approval-progress-meta button, .approval-refused button { border: 0; background: transparent; color: var(--brand-600); font-size: 9px; font-weight: 750; cursor: pointer; } .approval-refused { display: flex; align-items: center; gap: 12px; margin-top: 23px; padding: 14px; border: 1px solid #f0d5d0; border-radius: 12px; background: #fff8f7; animation: approval-state-enter 350ms ease; } .approval-refused > span { display: grid; width: 30px; height: 30px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: #fde7e3; color: #d85848; } .approval-refused svg { width: 15px; } .approval-refused p { margin: 0; color: #705c59; font-size: 10px; } .approval-refused button { margin-left: auto; } .approval-footer { display: flex; height: 50px; align-items: center; justify-content: center; gap: 8px; border-top: 1px solid #ded6e2; background: #f2eef4; color: #766b7b; font-family: var(--font-mono); font-size: 8px; font-weight: 700; letter-spacing: 0.04em; } .approval-footer svg { width: 15px; color: var(--brand-600); }