@font-face {
font-family: "Alexandria";
font-style: normal;
font-weight: 500 800;
font-display: swap;
src: url("/fonts/alexandria-arabic.woff2") format("woff2");
unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC;
}
@font-face {
font-family: "Alexandria";
font-style: normal;
font-weight: 500 800;
font-display: swap;
src: url("/fonts/alexandria-latin.woff2") format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: "Readex Pro";
font-style: normal;
font-weight: 300 700;
font-display: swap;
src: url("/fonts/readex-arabic.woff2") format("woff2");
unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC;
}
@font-face {
font-family: "Readex Pro";
font-style: normal;
font-weight: 300 700;
font-display: swap;
src: url("/fonts/readex-latin.woff2") format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
:root {
--paper: #ffffff;
--paper-2: #f7f6fb;
--paper-3: #eeecf5;
--ink: #1a1446;
--ink-2: #3a3468;
--ink-3: #5f5985;
--line: rgba(26, 20, 70, 0.09);
--line-2: rgba(26, 20, 70, 0.18);
--stamp: #e23a5e;
--stamp-ink: #c4214a;
--stamp-soft: #fde4ea;
--gold: #ffb020;
--gold-2: #f59e0b;
--gold-soft: #fff1d2;
--mint: #19c39c;
--mint-ink: #087a5f;
--night: #0e0b24;
--night-2: #17133a;
--night-3: #241e55;
--on-night: #f6f3ff;
--on-night-2: #bdb6e6;
--font-d: "Alexandria", "Readex Pro", system-ui, -apple-system, "Segoe UI", Tahoma, sans-serif;
--font-b: "Readex Pro", system-ui, -apple-system, "Segoe UI", Tahoma, sans-serif;
--fs-0: clamp(0.8125rem, 0.78rem + 0.15vw, 0.875rem);
--fs-1: clamp(0.9375rem, 0.9rem + 0.2vw, 1.0625rem);
--fs-2: clamp(1.0625rem, 1rem + 0.35vw, 1.25rem);
--fs-3: clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem);
--fs-4: clamp(1.625rem, 1.3rem + 1.6vw, 2.5rem);
--fs-5: clamp(2.125rem, 1.5rem + 3vw, 4rem);
--r-s: 12px;
--r-m: 18px;
--r-l: 28px;
--r-xl: 40px;
--sh-1: 0 1px 2px rgba(26, 20, 70, 0.05), 0 6px 18px -10px rgba(26, 20, 70, 0.14);
--sh-2: 0 2px 6px rgba(26, 20, 70, 0.05), 0 22px 44px -20px rgba(26, 20, 70, 0.28);
--sh-3: 0 40px 80px -30px rgba(14, 11, 36, 0.55), 0 16px 32px -16px rgba(14, 11, 36, 0.35);
--ease: cubic-bezier(0.16, 1, 0.3, 1);
--spring: cubic-bezier(0.34, 1.56, 0.64, 1);
--wrap: 1180px;
--gut: clamp(16px, 4vw, 32px);
--hdr: 64px;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
scroll-padding-top: calc(var(--hdr) + 16px);
background: var(--paper);
}
body {
margin: 0;
font-family: var(--font-b);
font-size: var(--fs-1);
line-height: 1.8;
color: var(--ink);
background: var(--paper);
overflow-x: clip;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
img,
svg,
picture {
display: block;
max-width: 100%;
}
img {
height: auto;
}
a {
color: var(--stamp-ink);
text-decoration-thickness: 1px;
text-underline-offset: 0.25em;
}
a:hover {
color: var(--ink);
}
p {
margin: 0 0 1em;
}
ul,
ol {
margin: 0;
padding: 0;
list-style: none;
}
h1,
h2,
h3 {
font-family: var(--font-d);
line-height: 1.3;
margin: 0;
font-weight: 700;
letter-spacing: 0;
}
button,
input,
select,
textarea {
font: inherit;
color: inherit;
}
button {
cursor: pointer;
}
:focus-visible {
outline: 3px solid var(--stamp);
outline-offset: 3px;
border-radius: 6px;
}
::selection {
background: var(--stamp);
color: #fff;
}
.sprite {
position: absolute;
width: 0;
height: 0;
overflow: hidden;
}
.sr {
position: absolute !important;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0 0 0 0);
clip-path: inset(50%);
white-space: nowrap;
}
.skip {
position: absolute;
inset-inline-start: 12px;
top: -60px;
z-index: 100;
background: var(--ink);
color: #fff;
padding: 10px 16px;
border-radius: var(--r-s);
text-decoration: none;
}
.skip:focus {
top: 12px;
}
.wrap {
width: 100%;
max-width: var(--wrap);
margin-inline: auto;
padding-inline: var(--gut);
}
.narrow {
max-width: 820px;
}
.ic {
width: 22px;
height: 22px;
flex: none;
fill: none;
stroke: currentColor;
stroke-width: 1.8;
stroke-linecap: round;
stroke-linejoin: round;
}
.ic--sm {
width: 18px;
height: 18px;
}
.ic--xs {
width: 14px;
height: 14px;
}
.h1 {
font-size: var(--fs-5);
line-height: 1.2;
font-weight: 800;
}
.h2 {
font-size: var(--fs-4);
line-height: 1.3;
font-weight: 800;
text-wrap: balance;
}
.h2--mt {
margin-top: 1.6em;
}
.h3 {
font-size: var(--fs-3);
line-height: 1.35;
font-weight: 700;
}
.lead {
font-size: var(--fs-2);
color: var(--ink-2);
line-height: 1.85;
}
.kicker {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: var(--font-d);
font-weight: 700;
font-size: var(--fs-0);
color: var(--stamp-ink);
margin: 0 0 12px;
}
.kicker::before {
content: "";
width: 18px;
height: 18px;
border-radius: 50%;
border: 2px dashed currentColor;
flex: none;
}
.kicker--night {
color: var(--gold);
}
.sub {
color: var(--ink-3);
font-size: var(--fs-2);
max-width: 62ch;
margin: 14px 0 0;
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
min-height: 48px;
padding: 10px 22px;
border-radius: 999px;
border: 0;
font-family: var(--font-d);
font-weight: 700;
font-size: var(--fs-1);
line-height: 1.2;
text-decoration: none;
transition: transform 0.35s var(--spring), box-shadow 0.35s var(--ease), background-color 0.2s;
-webkit-tap-highlight-color: transparent;
}
.btn:hover {
transform: translateY(-2px);
}
.btn:active {
transform: translateY(0) scale(0.98);
}
.btn--ink {
background: var(--ink);
color: #fff;
box-shadow: 0 10px 24px -10px rgba(26, 20, 70, 0.6);
}
.btn--ink:hover {
color: #fff;
background: var(--night-3);
}
.btn--stamp {
background: var(--stamp-ink);
color: #fff;
box-shadow: 0 10px 24px -10px rgba(196, 33, 74, 0.7);
}
.btn--stamp:hover {
color: #fff;
background: #ad1a40;
}
.btn--ghost {
background: transparent;
color: var(--ink);
box-shadow: inset 0 0 0 1.5px var(--line-2);
}
.btn--ghost:hover {
background: #fff;
}
.btn--sm {
min-height: 40px;
padding: 8px 16px;
font-size: var(--fs-0);
}
.badges {
display: flex;
flex-wrap: wrap;
gap: 10px;
align-items: center;
}
.badge {
display: block;
border-radius: 10px;
transition: transform 0.35s var(--spring), box-shadow 0.35s var(--ease);
}
.badge img {
height: 44px;
width: auto;
}
.badges--lg .badge img {
height: 52px;
}
.badges--sm .badge img {
height: 40px;
}
.badge:hover {
transform: translateY(-3px);
box-shadow: 0 14px 24px -14px rgba(0, 0, 0, 0.6);
}
.storehint {
font-size: var(--fs-0);
color: var(--ink-3);
margin: 10px 0 0;
}
.noapp {
display: flex;
align-items: flex-start;
gap: 10px;
margin: 18px 0 0;
padding: 12px 16px;
border-radius: var(--r-m);
background: var(--paper-2);
box-shadow: inset 0 0 0 1px var(--line);
font-size: var(--fs-0);
line-height: 1.7;
color: var(--ink-2);
max-width: 560px;
}
.noapp strong {
color: var(--ink);
}
.noapp__ic {
width: 22px;
height: 22px;
padding: 3px;
border-radius: 50%;
background: var(--mint);
color: #fff;
stroke-width: 3;
margin-top: 1px;
}
.more {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: var(--font-d);
font-weight: 700;
color: var(--ink);
text-decoration: none;
border-bottom: 2px solid var(--stamp);
padding-bottom: 2px;
}
.more .ic {
transition: transform 0.3s var(--ease);
}
.more:hover .ic {
transform: translateX(-4px);
}
.list li {
display: flex;
gap: 10px;
align-items: flex-start;
margin-bottom: 10px;
}
.list .ic {
color: var(--mint-ink);
margin-top: 5px;
stroke-width: 2.6;
}
.prose p,
.prose li {
color: var(--ink-2);
}
.prose .h2 {
margin: 1.4em 0 0.5em;
font-size: var(--fs-3);
}
.prose .h2:first-child {
margin-top: 0;
}
.prose .h3 {
margin: 1.4em 0 0.4em;
font-size: var(--fs-2);
}
.prose .badges {
margin-top: 18px;
}
.hdr {
position: sticky;
top: 0;
z-index: 50;
height: var(--hdr);
background: rgba(255, 255, 255, 0.8);
-webkit-backdrop-filter: saturate(1.6) blur(14px);
backdrop-filter: saturate(1.6) blur(14px);
border-bottom: 1px solid transparent;
transition: border-color 0.3s, background-color 0.3s;
view-transition-name: site-header;
}
.hdr.is-scrolled {
border-bottom-color: var(--line);
background: rgba(255, 255, 255, 0.94);
}
.hdr__in {
height: 100%;
display: flex;
align-items: center;
gap: 18px;
}
.hdr__brand {
text-decoration: none;
color: var(--ink);
flex: none;
}
.logo {
display: inline-flex;
align-items: center;
gap: 10px;
}
.logo__mark {
width: 38px;
height: 38px;
transition: transform 0.6s var(--spring);
}
.hdr__brand:hover .logo__mark {
transform: rotate(-8deg) scale(1.06);
}
.logo__word {
font-family: var(--font-d);
font-weight: 800;
font-size: 1.3rem;
color: var(--ink);
line-height: 1;
}
.hdr__nav {
margin-inline-start: auto;
display: none;
}
.hdr__nav ul {
display: flex;
gap: 4px;
}
.hdr__nav a {
display: block;
padding: 8px 14px;
border-radius: 999px;
color: var(--ink-2);
text-decoration: none;
font-weight: 500;
font-size: var(--fs-0);
transition: background-color 0.2s, color 0.2s;
}
.hdr__nav a:hover,
.hdr__nav a[aria-current="page"] {
background: #fff;
color: var(--ink);
box-shadow: inset 0 0 0 1px var(--line);
}
.hdr__cta {
margin-inline-start: auto;
}
.hdr__cta .ic {
width: 18px;
height: 18px;
}
.hdr__menu {
position: relative;
}
.hdr__menu > summary {
list-style: none;
width: 44px;
height: 44px;
display: grid;
place-items: center;
border-radius: 50%;
cursor: pointer;
color: var(--ink);
box-shadow: inset 0 0 0 1.5px var(--line-2);
}
.hdr__menu > summary::-webkit-details-marker {
display: none;
}
.hdr__menu[open] > summary {
background: var(--ink);
color: #fff;
}
.hdr__drawer {
position: absolute;
inset-inline-end: 0;
top: calc(100% + 10px);
width: min(300px, calc(100vw - 32px));
background: #fff;
border-radius: var(--r-m);
box-shadow: var(--sh-2);
padding: 10px;
animation: pop 0.35s var(--spring);
}
.hdr__drawer a {
display: block;
padding: 12px 14px;
border-radius: var(--r-s);
color: var(--ink);
text-decoration: none;
font-weight: 600;
}
.hdr__drawer a:hover,
.hdr__drawer a[aria-current="page"] {
background: var(--paper-2);
}
.hdr__drawer-note {
display: flex;
gap: 8px;
align-items: flex-start;
margin: 6px 4px 4px;
padding: 10px 12px;
border-radius: var(--r-s);
background: var(--paper);
font-size: var(--fs-0);
line-height: 1.6;
color: var(--ink-2);
}
.hdr__drawer-note .ic {
color: var(--mint-ink);
stroke-width: 2.6;
margin-top: 3px;
}
@media (max-width: 420px) {
.hdr__cta span {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
}
.hdr__cta {
width: 44px;
height: 44px;
min-height: 44px;
padding: 0;
}
}
@media (min-width: 900px) {
.hdr__nav {
display: block;
}
.hdr__cta {
margin-inline-start: 0;
}
.hdr__menu {
display: none;
}
}
.ftr {
background: var(--night);
color: var(--on-night-2);
padding: 64px 0 calc(28px + env(safe-area-inset-bottom));
font-size: var(--fs-0);
}
.ftr__grid {
display: grid;
gap: 36px;
grid-template-columns: minmax(0, 1fr);
}
.ftr__brand {
text-decoration: none;
display: inline-block;
margin-bottom: 14px;
}
.ftr .logo__word {
color: #fff;
}
.ftr .logo__mark rect:first-child {
fill: #fff;
}
.ftr .logo__mark rect:nth-child(2) {
fill: var(--night);
}
.ftr__about p {
max-width: 44ch;
line-height: 1.9;
}
.ftr__h {
font-family: var(--font-d);
color: #fff;
font-weight: 700;
margin-bottom: 12px;
font-size: var(--fs-1);
}
.ftr__nav li {
margin-bottom: 8px;
}
.ftr a {
color: var(--on-night-2);
text-decoration: none;
}
.ftr a:hover {
color: #fff;
}
.ftr__app strong {
color: #fff;
}
.ftr__base {
margin-top: 44px;
padding-top: 20px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
flex-wrap: wrap;
gap: 6px 24px;
justify-content: space-between;
font-size: 0.78rem;
opacity: 0.8;
}
.ftr__base p {
margin: 0;
}
@media (min-width: 800px) {
.ftr__grid {
grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, 1.2fr);
}
}
.mbar {
position: fixed;
inset-inline: 12px;
bottom: calc(12px + env(safe-area-inset-bottom));
z-index: 40;
display: flex;
align-items: center;
gap: 12px;
padding: 8px 8px 8px 16px;
border-radius: 999px;
background: rgba(14, 11, 36, 0.92);
-webkit-backdrop-filter: blur(12px);
backdrop-filter: blur(12px);
box-shadow: var(--sh-3);
transform: translateY(160%);
transition: transform 0.5s var(--ease);
visibility: hidden;
}
.mbar.is-on {
transform: none;
visibility: visible;
}
.mbar__btn {
min-height: 44px;
padding: 8px 18px;
font-size: var(--fs-0);
flex: none;
}
.mbar__btn .ic {
width: 18px;
height: 18px;
}
.mbar__note {
margin: 0;
color: var(--on-night-2);
font-size: 0.78rem;
line-height: 1.4;
}
@media (min-width: 900px) {
.mbar {
display: none;
}
}
.getdlg {
border: 0;
padding: 32px 28px 24px;
border-radius: var(--r-l);
width: min(420px, calc(100vw - 32px));
background: var(--paper);
color: var(--ink);
box-shadow: var(--sh-3);
text-align: center;
}
.getdlg[open] {
animation: pop 0.45s var(--spring);
}
.getdlg::backdrop {
background: rgba(14, 11, 36, 0.55);
-webkit-backdrop-filter: blur(4px);
backdrop-filter: blur(4px);
}
.getdlg__x {
position: absolute;
top: 12px;
inset-inline-end: 12px;
margin: 0;
}
.getdlg__x button {
width: 40px;
height: 40px;
display: grid;
place-items: center;
border: 0;
border-radius: 50%;
background: #fff;
box-shadow: inset 0 0 0 1px var(--line);
}
.getdlg__t {
font-family: var(--font-d);
font-weight: 800;
font-size: var(--fs-3);
margin: 0 0 4px;
}
.getdlg__s {
color: var(--ink-3);
font-size: var(--fs-0);
}
.getdlg__qr {
width: 200px;
margin: 8px auto 18px;
padding: 14px;
background: #fff;
border-radius: var(--r-m);
box-shadow: var(--sh-1);
}
.getdlg .badges {
justify-content: center;
}
.getdlg__n {
display: flex;
gap: 8px;
justify-content: center;
align-items: center;
margin: 16px 0 0;
font-size: var(--fs-0);
color: var(--ink-2);
}
.getdlg__n .ic {
color: var(--mint-ink);
stroke-width: 2.6;
}
.qr {
width: 100%;
height: auto;
}
.qr__bg {
fill: #fff;
}
.qr__fg {
fill: var(--ink);
}
.hero {
position: relative;
isolation: isolate;
padding: clamp(28px, 5vw, 64px) 0 clamp(48px, 6vw, 96px);
overflow: clip;
background: radial-gradient(52% 60% at 12% 42%, rgba(226, 58, 94, 0.07), rgba(226, 58, 94, 0) 70%), radial-gradient(40% 40% at 92% 8%, rgba(255, 176, 32, 0.08), rgba(255, 176, 32, 0) 70%), var(--paper);
}
.hero__grid {
display: grid;
gap: clamp(28px, 5vw, 56px);
grid-template-columns: minmax(0, 1fr);
align-items: center;
}
@media (min-width: 980px) {
.hero__grid {
grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
}
}
.eyebrow {
display: inline-flex;
align-items: center;
gap: 10px;
margin: 0 0 18px;
padding: 6px 14px 6px 16px;
border-radius: 999px;
background: #fff;
box-shadow: inset 0 0 0 1px var(--line), 0 1px 2px rgba(26, 20, 70, 0.04);
font-size: var(--fs-0);
font-weight: 500;
color: var(--ink-2);
}
.eyebrow__dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--mint);
animation: ping 2.4s var(--ease) infinite;
}
.hero__h1 {
font-size: var(--fs-5);
line-height: 1.22;
font-weight: 800;
color: var(--ink);
text-wrap: balance;
}
.hl {
position: relative;
display: inline-block;
color: var(--stamp-ink);
white-space: nowrap;
}
.hl__u {
position: absolute;
inset-inline: -2%;
bottom: -0.12em;
width: 104%;
height: 0.34em;
overflow: visible;
}
.hl__u path {
fill: none;
stroke: var(--gold);
stroke-width: 7;
stroke-linecap: round;
stroke-dasharray: 320;
stroke-dashoffset: 0;
}
.hero .lead {
margin: 20px 0 26px;
max-width: 58ch;
}
.hero__cta .badges {
gap: 12px;
}
.ticks {
display: flex;
flex-wrap: wrap;
gap: 8px 18px;
margin-top: 18px;
font-size: var(--fs-0);
color: var(--ink-2);
}
.ticks li {
display: inline-flex;
align-items: center;
gap: 6px;
}
.ticks .ic {
color: var(--stamp-ink);
stroke-width: 2.6;
}
.hero__stage {
position: relative;
display: grid;
place-items: center;
}
.stage {
--rx: 0deg;
--ry: 0deg;
position: relative;
width: 100%;
height: 600px;
display: grid;
place-items: center;
perspective: 1400px;
}
.stage > * {
grid-area: 1 / 1;
}
.seal {
width: min(540px, 118%);
height: auto;
overflow: visible;
animation: spin 70s linear infinite;
}
.seal__o {
fill: none;
stroke: rgba(26, 20, 70, 0.1);
stroke-width: 1.5;
stroke-dasharray: 3 7;
}
.seal__i {
fill: rgba(255, 255, 255, 0.6);
stroke: rgba(226, 58, 94, 0.28);
stroke-width: 2;
stroke-dasharray: 10 8;
}
.seal__t {
fill: rgba(26, 20, 70, 0.34);
font-family: var(--font-d);
font-weight: 700;
font-size: 15px;
letter-spacing: 1px;
}
.phone {
--pw: 250px;
position: relative;
width: var(--pw);
aspect-ratio: 9 / 19.5;
padding: 9px;
border-radius: calc(var(--pw) * 0.17);
background: linear-gradient(145deg, #2c2748, #0b0a16 40%, #1d1935);
box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, 0.14), inset 0 0 0 5px #06050d, var(--sh-3);
}
.phone::before {
content: "";
position: absolute;
inset-inline-end: -2px;
top: 22%;
width: 3px;
height: 11%;
border-radius: 2px;
background: #2a2545;
}
.phone__screen {
position: relative;
width: 100%;
height: 100%;
border-radius: calc(var(--pw) * 0.14);
overflow: hidden;
background: #f2f2f7;
}
.phone__island {
position: absolute;
top: calc(9px + var(--pw) * 0.035);
left: 50%;
width: 30%;
height: calc(var(--pw) * 0.1);
translate: -50% 0;
border-radius: 999px;
background: #000;
z-index: 3;
}
.phone--dark .phone__screen {
background: #0c0b16;
}
.phone--hero {
--pw: 272px;
transform: rotateY(var(--ry)) rotateX(var(--rx));
transition: transform 0.25s linear;
}
.wallet {
position: absolute;
inset: 0;
padding: calc(var(--pw) * 0.19) 10px 10px;
display: flex;
flex-direction: column;
}
.wallet__bar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 6px 10px;
}
.wallet__t {
font-family: var(--font-d);
font-weight: 800;
font-size: calc(var(--pw) * 0.085);
color: #000;
}
.wallet__plus {
width: 26px;
height: 26px;
display: grid;
place-items: center;
border-radius: 50%;
background: #e3e3ea;
color: #1c6ef2;
font-weight: 700;
line-height: 1;
}
.wallet__tops {
display: grid;
--passw: calc(var(--pw) - 38px);
}
.wallet__tops .ptop {
--passw: calc(var(--pw) - 38px);
margin-bottom: calc(var(--passw) * -0.045);
}
.wallet__front {
position: relative;
z-index: 2;
margin-top: calc(var(--pw) * -0.01);
}
.wallet__front .pass {
--passw: calc(var(--pw) - 38px);
box-shadow: 0 -6px 16px -6px rgba(0, 0, 0, 0.35);
}
.ptop {
--passw: 240px;
display: flex;
align-items: center;
gap: 0.6em;
padding: 0.75em 1.05em 1.3em;
border-radius: 0.95em 0.95em 0 0;
background: var(--pbg);
color: var(--pfg);
font-family: var(--font-b);
font-size: calc(var(--passw) * 0.0435);
line-height: 1.3;
box-shadow: 0 -4px 12px -6px rgba(0, 0, 0, 0.3);
}
.ptop .pass__logo {
width: 2.1em;
height: 2.1em;
border-radius: 0.5em;
}
.ptop .pass__ini {
font-size: 1.05em;
}
.ptop .pass__org {
font-size: 1em;
}
.ptop__f {
margin-inline-start: auto;
display: flex;
flex-direction: column;
align-items: flex-end;
line-height: 1.15;
}
.ptop__f small {
font-size: 0.66em;
color: var(--plb);
font-weight: 600;
}
.ptop__f b {
font-weight: 400;
font-size: 1.05em;
}
.notif {
position: absolute;
top: calc(var(--pw) * 0.16);
inset-inline: 8px;
z-index: 9;
display: flex;
align-items: center;
gap: 8px;
padding: 9px 10px;
border-radius: 16px;
background: rgba(255, 255, 255, 0.9);
-webkit-backdrop-filter: blur(14px);
backdrop-filter: blur(14px);
box-shadow: 0 10px 30px -8px rgba(0, 0, 0, 0.35);
font-size: calc(var(--pw) * 0.042);
line-height: 1.4;
color: #111;
opacity: 0;
transform: translateY(-150%);
transition: opacity 0.5s var(--ease), transform 0.6s var(--spring);
}
.notif.is-on {
opacity: 1;
transform: none;
}
.notif__ic {
width: 30px;
height: 30px;
flex: none;
display: grid;
place-items: center;
border-radius: 9px;
background: linear-gradient(160deg, var(--stamp), #a61b43);
color: #fff;
}
.notif__ic .ic {
width: 16px;
height: 16px;
}
.notif__tx {
display: flex;
flex-direction: column;
min-width: 0;
}
.notif__tm {
margin-inline-start: auto;
align-self: flex-start;
color: #6b6b75;
font-size: 0.85em;
}
.chip {
display: inline-flex;
align-items: center;
gap: 8px;
margin: 0;
padding: 8px 14px 8px 12px;
border-radius: 999px;
background: #fff;
box-shadow: 0 1px 0 var(--line), var(--sh-2);
font-family: var(--font-d);
font-weight: 700;
font-size: 0.82rem;
color: var(--ink);
white-space: nowrap;
z-index: 10;
}
.chip .ic {
width: 20px;
height: 20px;
padding: 3px;
border-radius: 50%;
background: var(--mint);
color: #fff;
stroke-width: 3;
}
.chip--add {
transform: translate(-176px, 178px);
animation: bob 5s ease-in-out infinite alternate;
}
.chip--stamp {
transform: translate(-196px, -52px);
animation: bob 6s ease-in-out -2s infinite alternate;
}
.chip__stamp {
width: 28px;
height: 28px;
display: grid;
place-items: center;
border-radius: 50%;
background: var(--stamp-ink);
color: #fff;
font-size: 0.78rem;
box-shadow: 0 0 0 3px var(--stamp-soft);
animation: thump 3.2s var(--spring) infinite;
}
.qrchip {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 14px 10px 10px;
border-radius: 18px;
background: #fff;
box-shadow: 0 1px 0 var(--line), var(--sh-2);
font-family: var(--font-d);
font-weight: 700;
font-size: 0.74rem;
line-height: 1.35;
color: var(--ink);
z-index: 10;
transform: translate(188px, 36px) rotate(3deg);
animation: bob 7s ease-in-out -1s infinite alternate;
}
.qrchip__qr {
width: 56px;
padding: 4px;
border-radius: 8px;
box-shadow: inset 0 0 0 1px var(--line);
}
@media (min-width: 980px) and (max-width: 1239px) {
.phone--hero {
--pw: 252px;
}
.chip--add {
transform: translate(-112px, 196px);
}
.chip--stamp {
transform: translate(-138px, -52px);
}
.qrchip {
transform: translate(138px, 40px) rotate(3deg);
}
}
@media (max-width: 979px) {
.stage {
height: 560px;
}
.phone--hero {
--pw: 244px;
}
.seal {
width: min(460px, 112%);
}
.chip--add,
.qrchip {
display: none;
}
.chip--stamp {
transform: translate(-118px, -52px);
}
}
@media (max-width: 560px) {
.hero__h1 {
font-size: clamp(1.9rem, 1rem + 5.2vw, 2.4rem);
}
.hl {
display: inline;
white-space: normal;
background: linear-gradient(transparent 62%, rgba(255, 176, 32, 0.42) 62%, rgba(255, 176, 32, 0.42) 88%, transparent 88%);
-webkit-box-decoration-break: clone;
box-decoration-break: clone;
}
.hl__u {
display: none;
}
.eyebrow {
font-size: 0.78rem;
}
.chip--stamp {
transform: translate(-104px, -52px);
font-size: 0.74rem;
}
}
.sec {
padding: clamp(56px, 8vw, 112px) 0;
position: relative;
}
.sec__head {
margin-bottom: clamp(28px, 4vw, 48px);
max-width: 760px;
}
.sec__head--center {
text-align: center;
margin-inline: auto;
}
.sec__head--center .sub {
margin-inline: auto;
}
.sec__more {
margin-top: 28px;
text-align: center;
}
.sec--paper,
.sec--tint {
background: var(--paper-2);
}
.bento {
display: grid;
gap: 16px;
grid-template-columns: minmax(0, 1fr);
}
.bx {
display: flex;
flex-direction: column;
border-radius: var(--r-l);
background: #fff;
box-shadow: inset 0 0 0 1px var(--line);
overflow: hidden;
transition: transform 0.45s var(--spring), box-shadow 0.45s var(--ease);
}
.bx:hover {
transform: translateY(-4px);
box-shadow: inset 0 0 0 1px var(--line), var(--sh-2);
}
.bx__vis {
position: relative;
height: 200px;
display: grid;
place-items: center;
overflow: hidden;
background: radial-gradient(80% 90% at 50% 100%, var(--paper-2), #fff 70%);
border-bottom: 1px dashed var(--line-2);
}
.bx__tx {
padding: 22px 24px 26px;
}
.bx__tx .h3 {
font-size: var(--fs-2);
margin-bottom: 8px;
}
.bx__tx p {
margin: 0;
color: var(--ink-2);
font-size: var(--fs-0);
line-height: 1.9;
}
.bx__vis--stack {
--passw: 230px;
align-content: start;
justify-items: center;
padding-top: 26px;
-webkit-mask-image: linear-gradient(180deg, #000 70%, transparent);
mask-image: linear-gradient(180deg, #000 70%, transparent);
}
.bx__vis--stack > * {
width: var(--passw);
}
.bx__vis--stack .ptop {
--passw: 230px;
margin-bottom: -10px;
}
.bx__front .pass {
--passw: 230px;
}
@media (min-width: 700px) {
.bento {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.bx--wide {
grid-column: 1 / -1;
}
}
@media (min-width: 1000px) {
.bento {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.bx--wide {
grid-column: span 2;
flex-direction: row;
align-items: stretch;
}
.bx--wide .bx__vis {
flex: 1.1;
height: auto;
min-height: 260px;
border-bottom: 0;
border-inline-end: 1px dashed var(--line-2);
}
.bx--wide .bx__tx {
flex: 1;
align-self: center;
padding: 32px;
}
.bx--wide .h3 {
font-size: var(--fs-3);
}
}
.mscan {
position: relative;
width: 132px;
height: 132px;
display: grid;
place-items: center;
background: linear-gradient(var(--ink), var(--ink)) top left / 24px 3px no-repeat, linear-gradient(var(--ink), var(--ink)) top left / 3px 24px no-repeat,
linear-gradient(var(--ink), var(--ink)) top right / 24px 3px no-repeat, linear-gradient(var(--ink), var(--ink)) top right / 3px 24px no-repeat,
linear-gradient(var(--ink), var(--ink)) bottom left / 24px 3px no-repeat, linear-gradient(var(--ink), var(--ink)) bottom left / 3px 24px no-repeat,
linear-gradient(var(--ink), var(--ink)) bottom right / 24px 3px no-repeat, linear-gradient(var(--ink), var(--ink)) bottom right / 3px 24px no-repeat;
}
.mscan__qr {
width: 88px;
}
.mscan__line {
position: absolute;
inset-inline: 10px;
top: 12%;
height: 2px;
background: var(--stamp);
box-shadow: 0 0 10px 2px rgba(226, 58, 94, 0.5);
animation: scan 2.2s ease-in-out infinite alternate;
}
.mscan__plus {
position: absolute;
top: -14px;
inset-inline-start: -18px;
width: 38px;
height: 38px;
display: grid;
place-items: center;
border-radius: 50%;
background: var(--stamp-ink);
color: #fff;
font-family: var(--font-d);
font-weight: 800;
box-shadow: 0 0 0 5px var(--stamp-soft);
animation: thump 2.2s var(--spring) infinite;
}
.madd {
width: 210px;
display: grid;
gap: 10px;
padding: 16px;
border-radius: 18px;
background: #fff;
box-shadow: var(--sh-2);
}
.madd__row {
display: flex;
gap: 10px;
align-items: center;
}
.madd__i {
width: 26px;
height: 26px;
border-radius: 8px;
background: var(--paper-3);
}
.madd__l {
height: 8px;
flex: 1;
border-radius: 99px;
background: var(--paper-3);
}
.madd__l--s {
flex: 0.6;
}
.madd__btn {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin-top: 4px;
padding: 10px;
border-radius: 12px;
background: #000;
color: #fff;
font-family: var(--font-d);
font-weight: 700;
font-size: 0.82rem;
animation: press 3s var(--ease) infinite;
}
.mnote {
position: relative;
width: 230px;
display: grid;
}
.mnote__n {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 12px;
border-radius: 16px;
background: #fff;
box-shadow: var(--sh-2);
font-size: 0.74rem;
line-height: 1.45;
}
.mnote__n > span:last-child {
display: flex;
flex-direction: column;
}
.mnote__n--b {
transform: scale(0.9) translateY(14px);
opacity: 0.55;
margin-bottom: -18px;
}
.mnote__ic {
width: 28px;
height: 28px;
flex: none;
display: grid;
place-items: center;
border-radius: 8px;
background: var(--ink);
color: #fff;
}
.mnote__l {
flex: 1;
height: 8px;
border-radius: 99px;
background: var(--paper-3);
}
.mkinds {
width: 210px;
display: grid;
gap: 14px;
}
.mkinds > span {
display: flex;
align-items: center;
padding: 12px 14px;
border-radius: 14px;
background: #fff;
box-shadow: var(--sh-1);
}
.mkinds__s {
gap: 8px;
}
.mkinds__s i {
width: 20px;
height: 20px;
border-radius: 50%;
border: 2px dashed var(--line-2);
}
.mkinds__s i.on {
border: 0;
background: var(--stamp);
}
.mkinds__p i {
display: block;
width: 64%;
height: 10px;
border-radius: 99px;
background: var(--gold);
box-shadow: 0 0 0 1px rgba(245, 158, 11, 0.2);
}
.mkinds__c {
font-family: var(--font-d);
font-weight: 800;
font-size: 1.15rem;
color: var(--mint-ink);
}
.mkinds__c em {
font-style: normal;
font-size: 0.7em;
margin-inline-start: 6px;
color: var(--ink-3);
}
.what {
display: grid;
gap: clamp(32px, 5vw, 72px);
grid-template-columns: minmax(0, 1fr);
align-items: center;
}
.answer {
font-size: var(--fs-2);
color: var(--ink);
font-weight: 500;
line-height: 1.9;
padding-inline-start: 18px;
border-inline-start: 4px solid var(--stamp);
margin: 20px 0;
}
.what__copy > p:not(.answer):not(.kicker) {
color: var(--ink-2);
}
.legend {
display: grid;
gap: 12px;
margin-top: 24px;
}
.legend li {
display: flex;
gap: 12px;
align-items: flex-start;
color: var(--ink-2);
}
.legend b {
color: var(--ink);
}
.legend__n,
.hs {
width: 30px;
height: 30px;
flex: none;
display: grid;
place-items: center;
border-radius: 50%;
background: var(--stamp-ink);
color: #fff;
font-family: var(--font-d);
font-weight: 800;
font-size: 0.85rem;
line-height: 1;
}
.anat {
margin: 0;
justify-self: center;
text-align: center;
}
.anat__card {
position: relative;
width: min(320px, 68vw);
transform: rotate(2deg);
}
.anat__card .pass {
--passw: min(300px, 68vw);
}
.hs {
position: absolute;
box-shadow: 0 0 0 5px rgba(226, 58, 94, 0.22);
animation: ping-s 2.6s var(--ease) infinite;
}
.hs--1 {
top: 2%;
right: -12px;
}
.hs--2 {
top: 20%;
left: -14px;
animation-delay: 0.4s;
}
.hs--3 {
top: 44%;
right: -14px;
animation-delay: 0.8s;
}
.hs--4 {
top: 72%;
left: -14px;
animation-delay: 1.2s;
}
.anat figcaption {
margin-top: 22px;
font-size: var(--fs-0);
color: var(--ink-3);
}
@media (min-width: 900px) {
.what {
grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
}
}
.sec--story {
background: linear-gradient(180deg, var(--paper) 0%, var(--paper-2) 100%);
}
.story {
display: grid;
gap: 24px;
grid-template-columns: minmax(0, 1fr);
}
.story__stage {
position: sticky;
top: calc(var(--hdr) + 8px);
z-index: 2;
height: 340px;
padding-bottom: 12px;
background: linear-gradient(180deg, var(--paper-2) 85%, rgba(251, 241, 229, 0));
}
.story__frame {
position: relative;
height: 100%;
border-radius: var(--r-xl);
overflow: hidden;
background: radial-gradient(120% 90% at 50% 0%, #fff 0%, var(--paper-3) 100%);
box-shadow: inset 0 0 0 1px var(--line);
}
.scene {
position: absolute;
inset: 0;
display: grid;
place-items: center;
opacity: 0;
transform: translateY(18px) scale(0.96);
transition: opacity 0.6s var(--ease), transform 0.9s var(--ease);
pointer-events: none;
}
.scene.is-on {
opacity: 1;
transform: none;
}
.scene > * {
grid-area: 1 / 1;
}
.scene .pass {
--passw: 250px;
}
.scene .phone {
--pw: 150px;
}
.scene__sw {
width: 38px;
height: 38px;
border-radius: 50%;
border: 4px solid #fff;
box-shadow: var(--sh-2);
animation: bob 4s ease-in-out infinite alternate;
}
.scene__sw--1 {
background: #3b2416;
translate: -150px -110px;
}
.scene__sw--2 {
background: var(--stamp);
translate: 150px -60px;
animation-delay: -1.2s;
}
.scene__sw--3 {
background: #0a3d62;
translate: 140px 110px;
animation-delay: -2.4s;
}
.scene__prize {
width: 64px;
height: 64px;
display: grid;
place-items: center;
border-radius: 50%;
background: var(--gold);
color: var(--ink);
translate: 120px -130px;
box-shadow: 0 0 0 10px rgba(255, 176, 32, 0.25), var(--sh-2);
animation: thump 2.4s var(--spring) infinite;
}
.scene__prize .ic {
width: 32px;
height: 32px;
}
.stand {
display: grid;
justify-items: center;
}
.stand__card {
width: 190px;
padding: 18px 18px 14px;
border-radius: 18px;
background: #fff;
box-shadow: var(--sh-2);
text-align: center;
transform: perspective(700px) rotateX(8deg);
}
.stand__t {
font-family: var(--font-d);
font-weight: 800;
font-size: 0.95rem;
margin: 0 0 10px;
}
.stand__qr {
width: 130px;
margin: 0 auto;
position: relative;
}
.stand__qr::after {
content: "";
position: absolute;
inset: -6px;
border: 3px solid var(--stamp);
border-radius: 10px;
animation: qrpulse 2s var(--ease) infinite;
}
.stand__s {
font-size: 0.78rem;
color: var(--ink-3);
margin: 10px 0 0;
}
.stand__foot {
width: 220px;
height: 16px;
margin-top: -4px;
border-radius: 6px;
background: linear-gradient(180deg, #c89a6a, #9b7045);
box-shadow: 0 16px 24px -12px rgba(0, 0, 0, 0.4);
}
.addsheet {
position: absolute;
inset: 0;
display: flex;
flex-direction: column;
align-items: center;
padding-top: calc(var(--pw) * 0.17);
background: #f2f2f7;
}
.addsheet__bar {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 12px 12px;
font-size: calc(var(--pw) * 0.05);
color: #005ecb;
}
.addsheet__bar b {
color: #111;
}
.addsheet__add {
padding: 3px 12px;
border-radius: 999px;
background: #005ecb;
color: #fff;
font-weight: 700;
animation: press 2.4s var(--ease) infinite;
}
.phone .addsheet__pass .pass {
--passw: calc(var(--pw) - 44px);
}
.scanui {
position: absolute;
inset: 0;
display: grid;
place-items: center;
align-content: center;
gap: 12px;
background: radial-gradient(circle at 50% 40%, #24203f, #07060e);
}
.scanui__view {
position: relative;
width: 78%;
aspect-ratio: 1;
display: grid;
place-items: center;
overflow: hidden;
border-radius: 14px;
}
.scanui__card {
width: 74%;
transform: rotate(-6deg) translateY(10%);
filter: brightness(0.92);
}
.phone .scanui__card .pass {
--passw: calc(var(--pw) * 0.5);
}
.scanui__frame {
position: absolute;
inset: 12%;
border-radius: 12px;
background: linear-gradient(var(--mint), var(--mint)) top left / 22px 3px no-repeat, linear-gradient(var(--mint), var(--mint)) top left / 3px 22px no-repeat,
linear-gradient(var(--mint), var(--mint)) top right / 22px 3px no-repeat, linear-gradient(var(--mint), var(--mint)) top right / 3px 22px no-repeat,
linear-gradient(var(--mint), var(--mint)) bottom left / 22px 3px no-repeat, linear-gradient(var(--mint), var(--mint)) bottom left / 3px 22px no-repeat,
linear-gradient(var(--mint), var(--mint)) bottom right / 22px 3px no-repeat, linear-gradient(var(--mint), var(--mint)) bottom right / 3px 22px no-repeat;
}
.scanui__line {
position: absolute;
inset-inline: 14%;
top: 14%;
height: 2px;
background: var(--mint);
box-shadow: 0 0 12px 2px rgba(25, 195, 156, 0.8);
animation: scan 2.2s ease-in-out infinite alternate;
}
.scanui__ok {
display: inline-flex;
align-items: center;
gap: 6px;
margin: 0;
padding: 6px 12px;
border-radius: 999px;
background: var(--mint-ink);
color: #fff;
font-family: var(--font-d);
font-weight: 700;
font-size: 0.72rem;
animation: okpop 2.2s var(--spring) infinite;
}
.scanui__ok .ic {
stroke-width: 3;
width: 14px;
height: 14px;
}
.story__steps {
counter-reset: s;
}
.step {
display: flex;
gap: 18px;
align-items: flex-start;
min-height: 42vh;
padding: 18px 0;
transition: opacity 0.5s var(--ease);
}
.js .step {
opacity: 0.38;
}
.js .step.is-on {
opacity: 1;
}
.step__n {
width: 46px;
height: 46px;
flex: none;
display: grid;
place-items: center;
border-radius: 50%;
border: 2px dashed var(--stamp);
color: var(--stamp-ink);
font-family: var(--font-d);
font-weight: 800;
font-size: 1.15rem;
transition: background-color 0.4s, color 0.4s, border-color 0.4s;
}
.step.is-on .step__n {
background: var(--stamp-ink);
border-color: var(--stamp-ink);
color: #fff;
}
.step__h {
display: flex;
align-items: center;
gap: 10px;
font-size: var(--fs-3);
margin: 6px 0 10px;
}
.step__ic {
color: var(--stamp-ink);
}
.step p {
color: var(--ink-2);
max-width: 46ch;
}
@media (min-width: 980px) {
.story {
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
gap: 64px;
align-items: start;
}
.story__stage {
top: calc(var(--hdr) + 40px);
height: min(600px, calc(100vh - var(--hdr) - 80px));
background: none;
padding: 0;
}
.scene .pass {
--passw: 300px;
}
.scene .phone {
--pw: 220px;
}
.step {
min-height: 64vh;
align-items: center;
}
.step:last-child {
min-height: 50vh;
}
}
@media (max-width: 979px) {
.step:last-child {
min-height: 30vh;
}
.scene .pass {
--passw: 196px;
}
.scene .phone {
--pw: 136px;
}
.scene__sw {
display: none;
}
.stand__card {
width: 160px;
padding: 14px;
}
.stand__qr {
width: 104px;
}
.scene__sw--1 {
translate: -130px -100px;
}
.scene__sw--2 {
translate: 130px -60px;
}
.scene__sw--3 {
translate: 125px 100px;
}
.scene__prize {
translate: 110px -120px;
width: 52px;
height: 52px;
}
}
.sec--try {
background: var(--paper);
}
.try {
display: grid;
gap: 40px;
grid-template-columns: minmax(0, 1fr);
align-items: center;
}
.try__copy > p {
color: var(--ink-2);
margin-top: 14px;
}
.try__more {
margin-top: 22px;
}
.try__stage {
display: grid;
justify-items: center;
gap: 24px;
padding: clamp(24px, 4vw, 48px) 16px;
border-radius: var(--r-xl);
background: radial-gradient(90% 80% at 50% 10%, var(--night-3) 0%, var(--night) 100%);
box-shadow: var(--sh-3);
}
.try__cta {
text-align: center;
background: #fff;
color: var(--ink);
}
.try__cta:hover {
background: var(--gold);
color: var(--ink);
}
@media (min-width: 980px) {
.try {
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
gap: 64px;
}
}
.sec--types {
background: var(--paper-2);
}
.tabs__list {
display: flex;
gap: 4px;
overflow-x: auto;
scrollbar-width: none;
padding: 6px;
margin: 0 auto 26px;
width: max-content;
max-width: 100%;
border-radius: 999px;
background: #fff;
box-shadow: var(--sh-1);
}
.tabs__list::-webkit-scrollbar {
display: none;
}
.tabs__tab {
border: 0;
background: transparent;
padding: 10px 18px;
border-radius: 999px;
white-space: nowrap;
font-family: var(--font-d);
font-weight: 700;
font-size: var(--fs-0);
color: var(--ink-3);
transition: background-color 0.3s, color 0.3s;
}
.tabs__tab:hover {
color: var(--ink);
}
.tabs__tab[aria-selected="true"] {
background: var(--ink);
color: #fff;
}
.tabs__panel {
display: grid;
grid-template-columns: minmax(0, 1fr);
gap: 28px;
align-items: center;
padding: clamp(22px, 4vw, 48px);
margin-bottom: 18px;
border-radius: var(--r-xl);
background: #fff;
box-shadow: var(--sh-1);
}
.tabs__panel[hidden] {
display: none;
}
.tabs.is-ready .tabs__panel {
margin-bottom: 0;
}
.tp__copy p {
margin-top: 12px;
color: var(--ink-2);
font-size: var(--fs-2);
line-height: 1.9;
}
.tp__card {
width: min(250px, 72%);
justify-self: center;
transform: rotate(-3deg);
}
.tp__card .pass {
--passw: min(260px, 66vw);
}
@media (min-width: 800px) {
.tabs__panel {
grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr);
}
}
.roles {
display: grid;
gap: 20px;
grid-template-columns: minmax(0, 1fr);
}
.role {
display: grid;
gap: 24px;
grid-template-columns: minmax(0, 1fr);
align-items: center;
padding: clamp(24px, 4vw, 40px);
border-radius: var(--r-xl);
overflow: hidden;
}
.role--you {
background: linear-gradient(160deg, var(--night-3), var(--night));
color: var(--on-night);
}
.role--them {
background: #fff;
box-shadow: var(--sh-1);
}
.role__vis {
display: grid;
place-items: center;
}
.role .phone {
--pw: 180px;
}
.role__tag {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 12px;
border-radius: 999px;
font-family: var(--font-d);
font-weight: 700;
font-size: var(--fs-0);
margin: 0 0 12px;
}
.role--you .role__tag {
background: rgba(255, 255, 255, 0.1);
color: var(--gold);
}
.role--them .role__tag {
background: var(--stamp-soft);
color: var(--stamp-ink);
}
.role .h3 {
margin-bottom: 16px;
}
.role--you .list li {
color: var(--on-night-2);
}
.role--you .list .ic {
color: var(--gold);
}
.role__note {
margin: 12px 0 0;
font-size: var(--fs-0);
color: var(--on-night-2);
}
.wallet--still {
padding-top: calc(var(--pw) * 0.22);
}
.wallet--still .wallet__t {
font-size: 1rem;
}
.phone .wallet__one .pass {
--passw: calc(var(--pw) - 38px);
}
.scanui--mini .scanui__view {
width: 84%;
}
@media (min-width: 640px) {
.role {
grid-template-columns: auto minmax(0, 1fr);
}
}
@media (min-width: 1100px) {
.roles {
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
.role {
grid-template-columns: minmax(0, 1fr);
}
}
.sec--night {
background: radial-gradient(100% 70% at 50% 0%, var(--night-3), var(--night) 70%);
color: var(--on-night);
}
.sec--night .h2 {
color: #fff;
}
.sec--night .sub {
color: var(--on-night-2);
}
.feats {
display: grid;
gap: 18px;
grid-template-columns: minmax(0, 1fr);
}
.feat {
position: relative;
padding: 28px;
border-radius: var(--r-l);
background: rgba(255, 255, 255, 0.05);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1);
overflow: hidden;
}
.feat__ic {
width: 48px;
height: 48px;
display: grid;
place-items: center;
border-radius: 14px;
background: linear-gradient(145deg, var(--stamp), #9d1b43);
color: #fff;
margin-bottom: 18px;
}
.feat .h3 {
color: #fff;
font-size: var(--fs-2);
margin-bottom: 10px;
}
.feat p {
color: var(--on-night-2);
font-size: var(--fs-0);
line-height: 1.9;
margin: 0;
}
.lock {
margin-top: 22px;
padding: 16px 12px 14px;
border-radius: 20px;
background: linear-gradient(160deg, #3a2f8c, #1a1446 60%, #0e0b24);
text-align: center;
}
.lock__time {
display: block;
font-family: var(--font-d);
font-weight: 700;
font-size: 2rem;
color: #fff;
line-height: 1;
margin-bottom: 12px;
}
.lock__n {
display: flex;
gap: 10px;
align-items: center;
text-align: start;
padding: 10px;
border-radius: 14px;
background: rgba(255, 255, 255, 0.16);
-webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
color: #fff;
font-size: 0.76rem;
line-height: 1.5;
animation: lockin 6s var(--ease) infinite;
}
.lock__n > span:last-child {
display: flex;
flex-direction: column;
}
.lock__ic {
width: 32px;
height: 32px;
flex: none;
display: grid;
place-items: center;
border-radius: 9px;
background: #fff;
color: var(--ink);
}
.lock__ic .ic {
width: 18px;
height: 18px;
}
@media (min-width: 900px) {
.feats {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
.tiles {
display: grid;
gap: 16px;
grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr));
}
.tile__a {
display: flex;
gap: 18px;
align-items: center;
height: 100%;
padding: 16px;
border-radius: var(--r-l);
background: #fff;
box-shadow: var(--sh-1);
color: var(--ink);
text-decoration: none;
transition: transform 0.45s var(--spring), box-shadow 0.45s var(--ease);
}
.tile__a:hover {
transform: translateY(-4px);
box-shadow: var(--sh-2);
color: var(--ink);
}
.tile__card {
width: 96px;
flex: none;
transform: rotate(-4deg);
transition: transform 0.5s var(--spring);
}
.tile__a:hover .tile__card {
transform: rotate(2deg) scale(1.05);
}
.tile__card .pass {
--passw: 96px;
box-shadow: var(--sh-1);
}
.tile__tx {
display: flex;
flex-direction: column;
gap: 4px;
}
.tile__h {
font-family: var(--font-d);
font-weight: 800;
font-size: var(--fs-2);
}
.tile__p {
font-size: var(--fs-0);
color: var(--ink-3);
line-height: 1.7;
}
.tile__go {
display: inline-flex;
align-items: center;
gap: 6px;
margin-top: 4px;
font-size: var(--fs-0);
font-weight: 700;
color: var(--stamp-ink);
}
.cmp {
max-width: 900px;
overflow-x: auto;
}
.cmp__t {
width: 100%;
border-collapse: separate;
border-spacing: 0;
background: #fff;
border-radius: var(--r-l);
box-shadow: var(--sh-1);
overflow: hidden;
font-size: var(--fs-0);
}
.cmp__t th,
.cmp__t td {
padding: 16px 18px;
text-align: start;
border-bottom: 1px solid var(--line);
vertical-align: top;
}
.cmp__t tr:last-child th,
.cmp__t tr:last-child td {
border-bottom: 0;
}
.cmp__t thead th {
font-family: var(--font-d);
font-weight: 800;
background: var(--paper);
font-size: var(--fs-1);
}
.cmp__t thead th:last-child {
background: var(--ink);
color: #fff;
}
.cmp__t tbody th {
font-family: var(--font-d);
font-weight: 700;
width: 22%;
color: var(--ink);
}
.cmp__t td:nth-child(2) {
color: var(--ink-3);
}
.cmp__t td:last-child {
color: var(--ink);
font-weight: 500;
background: rgba(25, 195, 156, 0.06);
}
.tips {
display: grid;
gap: 16px;
grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
}
.tip {
padding: 26px;
border-radius: var(--r-l);
background: #fff;
box-shadow: inset 0 0 0 1px var(--line);
transition: transform 0.45s var(--spring), box-shadow 0.45s var(--ease);
}
.tip:hover {
transform: translateY(-4px);
box-shadow: var(--sh-2);
}
.tip__n {
display: block;
font-family: var(--font-d);
font-weight: 800;
font-size: 2.2rem;
line-height: 1;
margin-bottom: 14px;
background: linear-gradient(135deg, var(--stamp), var(--gold));
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.tip .h3 {
font-size: var(--fs-2);
margin-bottom: 8px;
}
.tip p {
margin: 0;
color: var(--ink-2);
font-size: var(--fs-0);
line-height: 1.9;
}
.free {
display: grid;
gap: 28px;
grid-template-columns: minmax(0, 1fr);
align-items: center;
padding: clamp(28px, 5vw, 56px);
border-radius: var(--r-xl);
background: linear-gradient(120deg, var(--gold-soft), #ffe6c2 55%, var(--stamp-soft));
box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.25);
}
.free__copy p {
color: var(--ink-2);
margin-top: 12px;
max-width: 52ch;
}
.free__facts {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.free__facts li {
padding: 18px 10px;
border-radius: var(--r-m);
background: rgba(255, 255, 255, 0.75);
text-align: center;
}
.free__facts b {
display: block;
font-family: var(--font-d);
font-size: var(--fs-4);
font-weight: 800;
line-height: 1.2;
color: var(--ink);
}
.free__facts span {
font-size: var(--fs-0);
color: var(--ink-2);
}
@media (min-width: 900px) {
.free {
grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
}
}
.faq {
display: grid;
gap: 10px;
}
.faq__i {
border-radius: var(--r-m);
background: #fff;
box-shadow: inset 0 0 0 1px var(--line);
transition: box-shadow 0.3s;
}
.faq__i[open] {
box-shadow: inset 0 0 0 1.5px var(--ink), var(--sh-1);
}
.faq__i summary {
list-style: none;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: 18px 22px;
cursor: pointer;
}
.faq__i summary::-webkit-details-marker {
display: none;
}
.faq__i h3 {
font-size: var(--fs-1);
font-weight: 700;
line-height: 1.6;
}
.faq__pm {
position: relative;
width: 28px;
height: 28px;
flex: none;
border-radius: 50%;
background: var(--paper-2);
}
.faq__pm::before,
.faq__pm::after {
content: "";
position: absolute;
inset: 0;
margin: auto;
width: 12px;
height: 2px;
border-radius: 2px;
background: var(--ink);
transition: transform 0.35s var(--ease);
}
.faq__pm::after {
transform: rotate(90deg);
}
.faq__i[open] .faq__pm {
background: var(--stamp);
}
.faq__i[open] .faq__pm::before,
.faq__i[open] .faq__pm::after {
background: #fff;
}
.faq__i[open] .faq__pm::after {
transform: rotate(0);
}
.faq__a {
padding: 0 22px 18px;
}
.faq__a p {
margin: 0;
color: var(--ink-2);
}
.faq__i[open] .faq__a {
animation: rise 0.45s var(--ease);
}
.cta {
padding: clamp(40px, 6vw, 80px) 0 clamp(56px, 8vw, 104px);
}
.cta__in {
display: grid;
gap: 32px;
grid-template-columns: minmax(0, 1fr);
align-items: center;
padding: clamp(28px, 5vw, 64px);
border-radius: var(--r-xl);
background: radial-gradient(90% 120% at 100% 0%, #3a2f8c 0%, var(--night-2) 45%, var(--night) 100%);
color: var(--on-night);
position: relative;
overflow: hidden;
box-shadow: var(--sh-3);
}
.cta__in::before {
content: "";
position: absolute;
width: 420px;
height: 420px;
inset-inline-end: -140px;
bottom: -220px;
border-radius: 50%;
border: 3px dashed rgba(226, 58, 94, 0.45);
animation: spin 50s linear infinite;
}
.cta__t {
font-size: var(--fs-4);
font-weight: 800;
color: #fff;
text-wrap: balance;
}
.cta__p {
color: var(--on-night-2);
font-size: var(--fs-2);
margin: 14px 0 24px;
max-width: 52ch;
}
.cta .noapp {
background: rgba(255, 255, 255, 0.07);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.12);
color: var(--on-night-2);
}
.cta .noapp strong {
color: #fff;
}
.cta__qr {
display: none;
justify-items: center;
text-align: center;
color: var(--on-night-2);
font-size: var(--fs-0);
position: relative;
}
.cta__qrbox {
width: 190px;
padding: 14px;
border-radius: var(--r-m);
background: #fff;
box-shadow: 0 0 0 8px rgba(255, 255, 255, 0.08);
margin-bottom: 12px;
}
@media (min-width: 900px) and (hover: hover) {
.cta__in {
grid-template-columns: minmax(0, 1fr) auto;
}
.cta__qr {
display: grid;
}
}
.pagehead {
padding: clamp(32px, 5vw, 64px) 0 clamp(24px, 4vw, 40px);
background: radial-gradient(60% 120% at 90% 0%, rgba(226, 58, 94, 0.1), transparent 70%), radial-gradient(50% 100% at 0% 20%, rgba(255, 176, 32, 0.14), transparent 70%);
}
.pagehead__in {
max-width: 900px;
}
.pagehead .h1 {
margin: 14px 0 16px;
font-size: clamp(2rem, 1.5rem + 2.4vw, 3.25rem);
text-wrap: balance;
}
.crumbs {
display: flex;
gap: 8px;
font-size: var(--fs-0);
color: var(--ink-3);
}
.crumbs a {
color: var(--ink-3);
text-decoration: none;
}
.crumbs a:hover {
color: var(--stamp-ink);
}
.pass {
--passw: 300px;
--pbg: #3b2416;
--pfg: #fff3e2;
--plb: #d4a373;
--pad: 1.05em;
position: relative;
width: var(--passw);
aspect-ratio: 5 / 7;
display: flex;
flex-direction: column;
padding: var(--pad);
border-radius: 0.95em;
background: var(--pbg);
color: var(--pfg);
font-family: var(--font-b);
font-size: calc(var(--passw) * 0.0435);
line-height: 1.3;
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.08) inset, var(--sh-3);
transition: background-color 0.5s var(--ease), color 0.5s var(--ease), border-radius 0.5s var(--ease);
isolation: isolate;
}
.pass::before {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
background: linear-gradient(160deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0) 40%, rgba(0, 0, 0, 0.08));
pointer-events: none;
z-index: -1;
}
.pass__top {
display: flex;
align-items: center;
gap: 0.6em;
min-height: 2.6em;
}
.pass__logo {
width: 2.5em;
height: 2.5em;
flex: none;
display: grid;
place-items: center;
border-radius: 0.6em;
background: var(--plb);
color: var(--pbg);
overflow: hidden;
transition: background-color 0.5s;
}
.pass__logo img {
width: 100%;
height: 100%;
object-fit: contain;
background: #fff;
}
.pass__ini {
font-family: var(--font-d);
font-weight: 800;
font-size: 1.25em;
line-height: 1;
}
.pass__org {
font-family: var(--font-d);
font-weight: 700;
font-size: 1.12em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.pass__strip {
--n: 6;
display: grid;
grid-template-columns: repeat(var(--n), minmax(0, 1fr));
gap: 0.45em;
align-items: center;
margin: 0.9em calc(var(--pad) * -1) 0;
padding: 1.05em var(--pad);
background: linear-gradient(180deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.02));
border-block: 1px solid rgba(255, 255, 255, 0.08);
transition: box-shadow 0.6s var(--ease);
}
.pass__strip.n-3 { --n: 3; }
.pass__strip.n-4 { --n: 4; }
.pass__strip.n-5 { --n: 5; }
.pass__strip.n-6 { --n: 6; }
.pass__strip.n-7 { --n: 7; }
.pass__strip.n-8 { --n: 8; }
.pass__strip.n-9 { --n: 9; }
.pass__strip.n-3 .stp,
.pass__strip.n-4 .stp {
max-width: 3.4em;
justify-self: center;
width: 100%;
}
.stp {
position: relative;
aspect-ratio: 1;
display: grid;
place-items: center;
border-radius: 50%;
border: 0.12em dashed color-mix(in srgb, var(--pfg) 45%, transparent);
color: color-mix(in srgb, var(--pfg) 40%, transparent);
transition: background-color 0.4s, border-color 0.4s, color 0.4s;
}
.stp svg {
width: 58%;
height: 58%;
fill: none;
stroke: currentColor;
stroke-width: 1.9;
stroke-linecap: round;
stroke-linejoin: round;
}
.stp.is-on {
background: var(--plb);
border: 0.12em solid var(--plb);
color: var(--pbg);
}
.stp.is-new {
animation: stampin 0.6s var(--spring) both;
}
.stp.is-new::after {
content: "";
position: absolute;
inset: -35%;
border-radius: 50%;
border: 0.15em solid var(--plb);
animation: ink 0.8s var(--ease) forwards;
pointer-events: none;
}
.pass__strip--pts,
.pass__strip--cash {
display: grid;
gap: 0.55em;
grid-template-columns: minmax(0, 1fr);
align-items: center;
padding: 1.05em var(--pad) 1.2em;
}
.pp {
display: flex;
align-items: baseline;
gap: 0.45em;
}
.pp__big,
.pc {
font-family: var(--font-d);
font-weight: 800;
font-size: 2.3em;
line-height: 1;
}
.pp__unit {
font-size: 0.82em;
color: var(--plb);
font-weight: 600;
}
.pp__bar {
display: block;
height: 0.6em;
border-radius: 999px;
background: color-mix(in srgb, var(--pfg) 18%, transparent);
overflow: hidden;
}
.pp__fill {
display: block;
height: 100%;
width: 0;
border-radius: inherit;
background: var(--plb);
}
.p-10 { width: 10%; }
.p-20 { width: 20%; }
.p-30 { width: 30%; }
.p-40 { width: 40%; }
.p-50 { width: 50%; }
.p-60 { width: 60%; }
.p-70 { width: 70%; }
.p-80 { width: 80%; }
.p-90 { width: 90%; }
.p-100 { width: 100%; }
.pass__strip--cash small {
font-size: 0.78em;
font-weight: 600;
color: var(--plb);
}
.pc em {
font-style: normal;
font-size: 0.42em;
font-weight: 600;
margin-inline-start: 0.35em;
color: var(--plb);
}
.pass__fields {
display: grid;
grid-template-columns: auto auto minmax(0, 1fr);
gap: 1.1em;
margin-top: 0.95em;
}
.pf {
display: flex;
flex-direction: column;
gap: 0.15em;
min-width: 0;
}
.pf small {
font-size: 0.72em;
font-weight: 600;
color: var(--plb);
white-space: nowrap;
}
.pf b {
font-size: 1.45em;
font-weight: 400;
line-height: 1.2;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.pf--end {
text-align: end;
}
.pass__code {
margin: auto auto 0;
width: 42%;
padding: 0.55em 0.55em 0.35em;
border-radius: 0.5em;
background: #fff;
color: #111;
text-align: center;
}
.pass__qr .qr__fg {
fill: #111;
}
.pass__num {
display: block;
font-size: 0.66em;
letter-spacing: 0.08em;
margin-top: 0.2em;
direction: ltr;
}
.pass__burst {
position: absolute;
inset: 0;
pointer-events: none;
overflow: visible;
z-index: 3;
}
.cf {
position: absolute;
left: 50%;
top: 28%;
width: 0.55em;
height: 0.8em;
border-radius: 2px;
background: var(--c, var(--gold));
opacity: 0;
animation: confetti 1.3s var(--ease) forwards;
animation-delay: var(--d, 0s);
}
.pass.is-full .pass__strip {
box-shadow: inset 0 0 0 0.15em var(--gold), 0 0 2.4em rgba(255, 176, 32, 0.45);
}
.pass.is-full .pf--end b {
color: var(--gold);
}
.pass[data-face="google"] {
border-radius: 1.4em;
padding-bottom: 0;
overflow: hidden;
}
.pass[data-face="google"] .pass__logo {
border-radius: 50%;
}
.pass[data-face="google"] .pass__fields {
order: 2;
margin-top: 1em;
padding-top: 0.9em;
border-top: 1px solid rgba(255, 255, 255, 0.14);
}
.pass[data-face="google"] .pass__code {
order: 3;
margin: 1em auto 1em;
border-radius: 0.8em;
}
.pass[data-face="google"] .pass__strip {
order: 4;
margin: auto calc(var(--pad) * -1) 0;
border-block: 0;
background: rgba(0, 0, 0, 0.14);
}
.t-cafe { --pbg: #3b2416; --pfg: #fff3e2; --plb: #d4a373; }
.t-carwash { --pbg: #0a3d62; --pfg: #ffffff; --plb: #7ed7f7; }
.t-salon { --pbg: #3d0066; --pfg: #ffffff; --plb: #e4c1f9; }
.t-food { --pbg: #7b0323; --pfg: #fff0c2; --plb: #ffd166; }
.t-pets { --pbg: #1b4332; --pfg: #ffffff; --plb: #95d5b2; }
.t-gym { --pbg: #1a1a2e; --pfg: #ffffff; --plb: #ff9aae; }
.t-flowers { --pbg: #f7dde6; --pfg: #4a1430; --plb: #8e2f52; }
.t-sweets { --pbg: #fbe3c4; --pfg: #4a2a12; --plb: #94460d; }
.t-flowers .stp.is-on,
.t-sweets .stp.is-on {
color: #fff;
}
.t-flowers .pass__strip,
.t-sweets .pass__strip {
border-block-color: rgba(0, 0, 0, 0.08);
}
.dz {
display: grid;
gap: 18px;
margin-top: 22px;
}
.dz__f {
border: 0;
margin: 0;
padding: 0;
min-width: 0;
}
.dz__f legend {
font-family: var(--font-d);
font-weight: 700;
font-size: var(--fs-0);
color: var(--ink-2);
margin-bottom: 10px;
padding: 0;
}
.tchips {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.tchip {
position: relative;
display: inline-flex;
align-items: center;
gap: 8px;
padding: 7px 14px 7px 10px;
border-radius: 999px;
background: #fff;
box-shadow: inset 0 0 0 1.5px var(--line);
font-size: var(--fs-0);
font-weight: 600;
cursor: pointer;
transition: box-shadow 0.25s, transform 0.3s var(--spring);
}
.tchip:hover {
transform: translateY(-2px);
}
.tchip input,
.ichip input,
.seg input {
position: absolute;
opacity: 0;
width: 1px;
height: 1px;
}
.tchip__sw {
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--pbg);
box-shadow: inset 0 0 0 3px var(--plb);
}
.tchip:has(input:checked) {
box-shadow: inset 0 0 0 2px var(--ink);
background: var(--paper-2);
}
.tchip:has(input:focus-visible),
.ichip:has(input:focus-visible),
.seg label:has(input:focus-visible) {
outline: 3px solid var(--stamp);
outline-offset: 2px;
}
.dz__row,
.dz__grid {
display: grid;
gap: 14px;
grid-template-columns: minmax(0, 1fr);
}
@media (min-width: 560px) {
.dz__grid {
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
}
.dz__in {
display: grid;
gap: 6px;
font-size: var(--fs-0);
font-weight: 600;
color: var(--ink-2);
}
.dz__in input[type="text"] {
min-height: 48px;
padding: 10px 14px;
border-radius: var(--r-s);
border: 0;
background: #fff;
box-shadow: inset 0 0 0 1.5px var(--line-2);
font-weight: 500;
color: var(--ink);
}
.dz__in input[type="text"]:focus {
outline: none;
box-shadow: inset 0 0 0 2px var(--ink);
}
.dz__in--color input {
width: 100%;
height: 48px;
padding: 4px;
border-radius: var(--r-s);
border: 0;
background: #fff;
box-shadow: inset 0 0 0 1.5px var(--line-2);
cursor: pointer;
}
.dz__in--file input {
font-size: var(--fs-0);
padding: 10px;
border-radius: var(--r-s);
background: #fff;
box-shadow: inset 0 0 0 1.5px var(--line-2);
min-width: 0;
}
.dz__in small {
font-weight: 400;
color: var(--ink-3);
font-size: 0.75rem;
}
.dz__range {
display: grid;
gap: 8px;
font-size: var(--fs-0);
font-weight: 600;
color: var(--ink-2);
}
.dz__range output {
font-family: var(--font-d);
color: var(--stamp-ink);
font-weight: 800;
}
.dz__range input {
width: 100%;
accent-color: var(--stamp-ink);
height: 28px;
}
.ichips {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 12px;
}
.ichip {
position: relative;
cursor: pointer;
}
.ichip__b {
width: 46px;
height: 46px;
display: grid;
place-items: center;
border-radius: 14px;
background: #fff;
box-shadow: inset 0 0 0 1.5px var(--line);
color: var(--ink-2);
transition: background-color 0.25s, color 0.25s, transform 0.3s var(--spring);
}
.ichip:hover .ichip__b {
transform: translateY(-2px);
}
.ichip:has(input:checked) .ichip__b {
background: var(--ink);
color: #fff;
box-shadow: none;
}
.seg {
display: inline-flex;
padding: 4px;
border-radius: 999px;
background: #fff;
box-shadow: inset 0 0 0 1.5px var(--line);
}
.seg label {
position: relative;
cursor: pointer;
border-radius: 999px;
}
.seg span {
display: block;
padding: 8px 16px;
border-radius: 999px;
font-size: var(--fs-0);
font-weight: 700;
color: var(--ink-3);
direction: ltr;
transition: background-color 0.25s, color 0.25s;
}
.seg label:has(input:checked) span {
background: var(--ink);
color: #fff;
}
.dz__actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.dz__live {
min-height: 1.6em;
margin: 0;
font-family: var(--font-d);
font-weight: 700;
color: var(--stamp-ink);
}
.try__pass {
display: grid;
place-items: center;
}
.try__pass .pass {
--passw: min(320px, 78vw);
}
.sec--tool {
padding-top: 8px;
}
.tool {
display: grid;
gap: 32px;
grid-template-columns: minmax(0, 1fr);
}
.tool__form .dz {
margin: 0;
padding: clamp(18px, 3vw, 32px);
border-radius: var(--r-xl);
background: var(--paper-2);
box-shadow: inset 0 0 0 1px var(--line);
gap: 24px;
}
.tool__stage {
order: -1;
}
.tool__sticky {
position: sticky;
top: calc(var(--hdr) + 16px);
display: grid;
justify-items: center;
gap: 16px;
padding: clamp(24px, 4vw, 48px) 16px;
border-radius: var(--r-xl);
background: radial-gradient(90% 80% at 50% 10%, var(--night-3) 0%, var(--night) 100%);
}
.tool__hint {
display: flex;
gap: 8px;
align-items: center;
margin: 0;
color: var(--on-night-2);
font-size: var(--fs-0);
text-align: center;
}
.tool__hint .ic {
color: var(--gold);
}
@media (min-width: 980px) {
.tool {
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
align-items: start;
gap: 48px;
}
.tool__stage {
order: 0;
}
}
@media (max-width: 979px) {
.tool__sticky {
position: relative;
top: 0;
}
}
.getpage {
padding: clamp(48px, 8vw, 96px) 0;
text-align: center;
}
.getpage__in {
display: grid;
justify-items: center;
gap: 8px;
}
.getpage .h1 {
font-size: var(--fs-4);
}
.getpage__status {
color: var(--ink-2);
font-size: var(--fs-2);
}
.getpage .badges {
justify-content: center;
}
.getpage .noapp {
text-align: start;
}
.getpage__qr {
display: none;
justify-items: center;
margin-top: 28px;
color: var(--ink-3);
font-size: var(--fs-0);
}
@media (hover: hover) and (min-width: 900px) {
.getpage__qr {
display: grid;
}
}
.nf {
padding: clamp(48px, 8vw, 96px) 0;
}
.nf__in {
text-align: center;
display: grid;
justify-items: center;
}
.nf__card {
width: 170px;
transform: rotate(-8deg);
margin-bottom: 28px;
animation: floaty 6s ease-in-out infinite alternate;
}
.nf__card .pass {
--passw: 170px;
}
.nf .h1 {
font-size: var(--fs-4);
margin-bottom: 10px;
}
.nf__links {
display: grid;
gap: 8px;
margin-top: 8px;
}
.nf__links a {
display: inline-flex;
align-items: center;
gap: 8px;
font-weight: 700;
}
@view-transition {
navigation: auto;
}
::view-transition-old(root),
::view-transition-new(root) {
animation-duration: 0.35s;
}
.js .rv {
opacity: 0;
transform: translateY(26px);
}
.js:not(.app-ok) .rv {
animation: failsafe 0s linear 2.5s forwards;
}
.js .rv.is-in {
opacity: 1;
transform: none;
animation: none;
transition: opacity 0.9s var(--ease), transform 1s var(--ease);
}
.js .rv.is-in:nth-child(2) {
transition-delay: 0.08s;
}
.js .rv.is-in:nth-child(3) {
transition-delay: 0.16s;
}
.js .rv.is-in:nth-child(4) {
transition-delay: 0.24s;
}
.js .rv.is-in:nth-child(5) {
transition-delay: 0.32s;
}
.js .rv.is-in:nth-child(6) {
transition-delay: 0.4s;
}
.hl__u path {
animation: draw 1.3s var(--ease) 0.35s both;
}
.hero__stage {
animation: stagein 1.2s var(--ease) both;
}
@supports (animation-timeline: view()) {
.tp__card,
.anat__card {
animation: tiltin linear both;
animation-timeline: view();
animation-range: entry 0% cover 45%;
}
}
@keyframes failsafe {
to {
opacity: 1;
transform: none;
}
}
@keyframes draw {
from {
stroke-dashoffset: 320;
}
to {
stroke-dashoffset: 0;
}
}
@keyframes stagein {
from {
opacity: 0;
transform: translateY(30px) scale(0.97);
}
to {
opacity: 1;
transform: none;
}
}
@keyframes tiltin {
from {
transform: rotate(-9deg) translateY(40px) scale(0.92);
opacity: 0.4;
}
to {
transform: rotate(-3deg);
opacity: 1;
}
}
@keyframes drift {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(6vmax, 4vmax, 0);
}
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
@keyframes ping {
0% {
box-shadow: 0 0 0 0 rgba(25, 195, 156, 0.55);
}
70%,
100% {
box-shadow: 0 0 0 10px rgba(25, 195, 156, 0);
}
}
@keyframes ping-s {
0% {
box-shadow: 0 0 0 0 rgba(226, 58, 94, 0.5);
}
70%,
100% {
box-shadow: 0 0 0 12px rgba(226, 58, 94, 0);
}
}
@keyframes floaty {
from {
translate: 0 0;
}
to {
translate: 0 -14px;
}
}
@keyframes bob {
from {
translate: 0 0;
}
to {
translate: 0 -10px;
}
}
@keyframes thump {
0%,
70%,
100% {
scale: 1;
}
80% {
scale: 1.22;
}
90% {
scale: 0.94;
}
}
@keyframes pop {
from {
opacity: 0;
transform: translateY(10px) scale(0.96);
}
to {
opacity: 1;
transform: none;
}
}
@keyframes rise {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: none;
}
}
@keyframes marquee {
to {
transform: translateX(-50%);
}
}
@keyframes press {
0%,
70%,
100% {
scale: 1;
}
78% {
scale: 0.94;
}
86% {
scale: 1.03;
}
}
@keyframes scan {
from {
top: 14%;
}
to {
top: 84%;
}
}
@keyframes okpop {
0%,
55% {
opacity: 0;
transform: translateY(6px) scale(0.9);
}
65%,
100% {
opacity: 1;
transform: none;
}
}
@keyframes qrpulse {
0%,
100% {
opacity: 0.2;
transform: scale(1);
}
50% {
opacity: 1;
transform: scale(1.04);
}
}
@keyframes lockin {
0%,
10% {
opacity: 0;
transform: translateY(-16px) scale(0.96);
}
18%,
85% {
opacity: 1;
transform: none;
}
95%,
100% {
opacity: 0;
transform: translateY(-8px);
}
}
@keyframes stampin {
0% {
transform: scale(2.3) rotate(-22deg);
opacity: 0;
}
55% {
transform: scale(0.86) rotate(5deg);
opacity: 1;
}
100% {
transform: none;
}
}
@keyframes ink {
from {
opacity: 0.9;
transform: scale(0.6);
}
to {
opacity: 0;
transform: scale(1.25);
}
}
@keyframes confetti {
0% {
opacity: 1;
transform: translate(-50%, 0) rotate(0);
}
100% {
opacity: 0;
transform: translate(calc(-50% + var(--x, 0px)), var(--y, 120px)) rotate(var(--r, 360deg));
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.001ms !important;
animation-iteration-count: 1 !important;
animation-delay: 0s !important;
transition-duration: 0.001ms !important;
scroll-behavior: auto !important;
}
.seal,
.hs,
.chip,
.chip__stamp,
.qrchip,
.mscan__line,
.mscan__plus,
.madd__btn,
.addsheet__add,
.scanui__line,
.lock__n,
.cta__in::before,
.nf__card,
.scene__sw,
.scene__prize,
.stand__qr::after,
.tp__card,
.anat__card {
animation: none !important;
}
.scanui__ok,
.lock__n {
opacity: 1;
}
.js .rv {
opacity: 1;
transform: none;
}
@view-transition {
navigation: none;
}
}
