/* Member and invite cards: a printed banner on the front; the member card flips. */
.member-card{width:100%;max-width:540px;aspect-ratio:3/2;perspective:1100px;cursor:pointer;outline:none}
.member-card-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.16,1,.3,1)}
.member-card.flipped .member-card-inner{transform:rotateY(180deg)}
.member-card:focus-visible .member-card-inner{box-shadow:0 0 0 2px #D7FF2E}
.member-card-face{position:absolute;inset:0;overflow:hidden;border-radius:var(--surface-radius,2px);box-shadow:inset 0 0 0 1px var(--line,#2A2A27);backface-visibility:hidden;-webkit-backface-visibility:hidden;background:#14110C}
.member-card-back{transform:rotateY(180deg)}
.member-card-face canvas,.member-card-face svg,.invite-card-face canvas{display:block;width:100%;height:100%}
.invite-card{margin:0;width:100%;max-width:540px;aspect-ratio:3/2;perspective:1100px;cursor:pointer;outline:none;container-type:inline-size}
.invite-card-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.16,1,.3,1)}
.invite-card.flipped .invite-card-inner{transform:rotateY(180deg)}
.invite-card:focus-visible .invite-card-inner{box-shadow:0 0 0 2px #D7FF2E}
.invite-card-face{position:absolute;inset:0;overflow:hidden;border-radius:var(--surface-radius,2px);box-shadow:inset 0 0 0 1px var(--line,#2A2A27);backface-visibility:hidden;-webkit-backface-visibility:hidden;background:#14110C}
/* The front's details, as the PNG draws them: the number top right in the brand's mono, the Join button in lime. */
.invite-card-number{position:absolute;top:4cqw;right:4cqw;font:500 2.1cqw/1 "Martian Mono",Mono,monospace;letter-spacing:.06em;text-transform:uppercase;color:#F5ECD7}
.invite-card-join{position:absolute;left:4cqw;bottom:4cqw;display:inline-flex;align-items:center;height:6.4cqw;padding:0 2.2cqw;border-radius:var(--control-radius,2px);background:#D7FF2E;color:#14110C;font:600 2.6cqw/1 Suisse,system-ui,sans-serif;text-decoration:none}
/* The back: what's waiting, on the brand's ink ground in paper type. */
.invite-card-back{transform:rotateY(180deg);display:flex;flex-direction:column;justify-content:center;gap:2.4cqw;padding:7cqw;color:#F5ECD7}
.invite-card-eyebrow{font:500 2.1cqw/1 "Martian Mono",Mono,monospace;letter-spacing:.08em;text-transform:uppercase;color:#A79C84}
.invite-card-head{margin:0;font:600 5.4cqw/1.12 Suisse,system-ui,sans-serif;letter-spacing:-.03em;text-wrap:balance;color:#F5ECD7}
.invite-card-body{margin:0;font:500 2.8cqw/1.4 Suisse,system-ui,sans-serif;color:#A79C84;max-width:44ch}
.invite-card-caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@media(prefers-reduced-motion:reduce){.member-card-inner,.invite-card-inner{transition:none}}
/* Your agent's face sits exactly on the mark's free agent dot: (40,140) r40 in the mark, scaled 3.6 from (540,30). */
.member-card-agent{position:absolute;left:50%;top:54.1667%;width:26.6667%;aspect-ratio:1;border-radius:50%;overflow:hidden}
.member-card-agent canvas{display:block;width:100%!important;height:100%!important}
