feat(docs): add animated product website

This commit is contained in:
2026-07-16 16:38:30 +02:00
parent e40a4bfee2
commit d61d6f3c5b
38 changed files with 12046 additions and 0 deletions

View File

@@ -0,0 +1,267 @@
/* 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); }