.ecard{--mute:color-mix(in srgb,var(--paper) 62%,transparent);--seal-hi:color-mix(in srgb,var(--seal) 70%,white);--seal-lo:color-mix(in srgb,var(--seal) 70%,black);--seal-paper:color-mix(in srgb,var(--paper) 92%,white);position:relative;width:100%;height:100%;min-height:100%;overflow:hidden;background:var(--ink);color:var(--paper);font-family:var(--font-serif-role),Georgia,serif;font-size:18px;line-height:1.45;-webkit-font-smoothing:antialiased;background-image:radial-gradient(1200px 700px at 50% 120%,var(--ink-2) 0,transparent 60%),radial-gradient(900px 500px at 50% -20%,color-mix(in srgb,var(--ink-2) 60%,var(--ink)) 0,transparent 60%);-moz-user-select:none;user-select:none;-webkit-user-select:none}.ecard.fullscreen{position:fixed;inset:0}.ecard *{box-sizing:border-box}.ecard button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}.ecard [tabindex]:focus-visible,.ecard button:focus-visible{outline:2px solid var(--accent);outline-offset:6px;border-radius:2px}.ecard .confetti,.ecard .stars{position:absolute;inset:0;pointer-events:none}.ecard .stars{z-index:0}.ecard .confetti{z-index:50}.ecard .scene{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:28px;padding:24px;transition:opacity .8s ease,visibility .8s}.ecard .scene.off{opacity:0;visibility:hidden;pointer-events:none}.ecard .eyebrow{letter-spacing:.28em;color:var(--accent);text-align:center;max-width:34ch}.ecard .eyebrow,.ecard .hint{font-family:var(--font-dmmono),Menlo,monospace;font-size:11px;text-transform:uppercase}.ecard .hint{letter-spacing:.2em;color:var(--mute)}.ecard .stage{perspective:1400px}.ecard .env{position:relative;width:min(86vw,400px);max-width:100%;aspect-ratio:1.45;transform-style:preserve-3d;transition:transform 1.4s cubic-bezier(.2,.7,.2,1),opacity .9s ease}.ecard .env-back,.ecard .env-body{position:absolute;inset:0;border-radius:6px}.ecard .env-back{background:var(--linen-2);box-shadow:0 40px 80px -30px rgba(0,0,0,.7)}.ecard .env-body{background:var(--linen);clip-path:polygon(0 0,50% 48%,100% 0,100% 100%,0 100%);z-index:3}.ecard .env-body:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.05),transparent 20%,transparent 80%,rgba(0,0,0,.05))}.ecard .env-flap{position:absolute;left:0;right:0;top:0;height:52%;background:linear-gradient(180deg,color-mix(in srgb,var(--linen) 85%,white),var(--linen-2));clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top center;transform:rotateX(0deg);transition:transform 1.1s cubic-bezier(.6,0,.2,1),z-index 0s .5s;z-index:4}.ecard .env.open .env-flap{transform:rotateX(180deg);z-index:1}.ecard .env-letter{position:absolute;left:6%;right:6%;top:8%;height:86%;background:var(--linen);border-radius:4px;box-shadow:0 10px 30px -10px rgba(0,0,0,.4);z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:0 8%;color:var(--ink-text);transition:transform 1.1s cubic-bezier(.2,.7,.2,1) .5s;text-align:center}.ecard .env.open .env-letter{transform:translateY(-58%)}.ecard .env-letter .names{font-family:var(--font-display-role),Georgia,serif;font-size:clamp(22px,6vw,36px);letter-spacing:.06em;line-height:1.1;text-wrap:balance}.ecard .env-letter .amp{font-family:var(--font-serif-role);font-style:italic;color:var(--seal)}.ecard .env-letter .date{font-family:var(--font-dmmono),Menlo,monospace;font-size:10px;letter-spacing:.3em;color:color-mix(in srgb,var(--ink-text) 60%,var(--linen))}.ecard .addr{position:absolute;left:6%;right:6%;bottom:12%;text-align:center;z-index:5;pointer-events:none;color:var(--ink-text);font-family:var(--font-serif-role);font-style:italic;font-size:clamp(18px,4.6vw,24px);letter-spacing:.02em;transition:opacity .4s;text-wrap:balance}.ecard .env.open .addr{opacity:0}.ecard .seal{position:absolute;left:50%;top:48%;width:min(23vw,96px);aspect-ratio:1;transform:translate(-50%,-50%);z-index:6;transition:transform .5s cubic-bezier(.5,-.6,.6,1.4),opacity .35s ease .15s;filter:drop-shadow(0 10px 14px rgba(0,0,0,.35))}.ecard .env.open .seal{transform:translate(-50%,-50%) scale(.2) rotate(30deg);opacity:0}.ecard .seal svg{width:100%;height:100%;display:block}.ecard .cta{font-family:var(--font-dmmono),Menlo,monospace;font-size:12px;letter-spacing:.26em;text-transform:uppercase;color:var(--ink);background:var(--accent);padding:16px 26px;border-radius:999px;box-shadow:0 12px 30px -10px color-mix(in srgb,var(--accent) 60%,transparent);transition:transform .2s,box-shadow .2s,opacity .4s}.ecard .cta:hover{transform:translateY(-2px)}.ecard .cta.ghost{background:transparent;color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 60%,transparent)}.ecard .card-wrap{perspective:1600px}.ecard .card{position:relative;width:min(84vw,360px);max-width:100%;aspect-ratio:1/1.5;transform-style:preserve-3d;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .18s ease-out}.ecard .card.flipped{transform:rotateX(var(--rx,0deg)) rotateY(calc(var(--ry, 0deg) + 180deg))}.ecard .card.flipping{transition:transform .9s cubic-bezier(.4,0,.2,1)}.ecard .face{position:absolute;inset:0;border-radius:18px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:var(--ink-2);box-shadow:0 60px 100px -40px rgba(0,0,0,.85),0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)}.ecard .face.back{transform:rotateY(180deg)}.ecard .face,.ecard .face *{backface-visibility:hidden;-webkit-backface-visibility:hidden}.ecard .card .face.back{visibility:hidden}.ecard .card.showback .face.back{visibility:visible}.ecard .card.showback .face.front{visibility:hidden}.ecard .card.showback .face.front,.ecard .card:not(.showback) .face.back,.ecard .frame{pointer-events:none}.ecard .frame{position:absolute;inset:10px;border:1px solid color-mix(in srgb,var(--accent) 60%,transparent);border-radius:12px;z-index:5}.ecard .frame:after,.ecard .frame:before{content:"";position:absolute;width:14px;height:14px;border:1px solid var(--accent)}.ecard .frame:before{left:-1px;top:-1px;border-right:0;border-bottom:0;border-top-left-radius:12px}.ecard .frame:after{right:-1px;bottom:-1px;border-left:0;border-top:0;border-bottom-right-radius:12px}.ecard .photo{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:50% 20%;object-position:50% 20%}.ecard .front .shade{position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 55%,transparent) 0,transparent 28%,transparent 55%,color-mix(in srgb,var(--ink) 92%,transparent) 100%)}.ecard .foil{position:absolute;inset:0;z-index:4;pointer-events:none;mix-blend-mode:color-dodge;opacity:.55;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.55) 45%,transparent 60%),linear-gradient(var(--fa,115deg),rgba(255,0,110,.35) 0,rgba(255,170,0,.35) 18%,rgba(120,255,140,.35) 36%,rgba(60,200,255,.35) 54%,rgba(150,90,255,.35) 72%,rgba(255,0,110,.35) 100%);background-size:260% 260%,320% 320%;background-position:var(--fx,50%) var(--fy,50%),calc(100% - var(--fx, 50%)) var(--fy,50%);transition:opacity .3s}.ecard .face.back .foil{opacity:.22}.ecard .card-top{position:absolute;left:22px;right:22px;top:22px;display:flex;justify-content:space-between;align-items:flex-start;z-index:6;gap:12px}.ecard .card-top .eyebrow{color:var(--accent-2);text-align:left;max-width:none}.ecard .card-bottom{position:absolute;left:22px;right:22px;bottom:22px;z-index:6;display:flex;flex-direction:column;gap:10px}.ecard .card-title{font-family:var(--font-display-role),Georgia,serif;font-size:clamp(26px,7vw,38px);line-height:1;letter-spacing:.04em;text-wrap:balance}.ecard .card-title .amp{font-family:var(--font-serif-role);font-style:italic;color:var(--accent-2);font-size:.8em}.ecard .meta{display:grid;grid-template-columns:1fr auto;gap:4px 12px;font-family:var(--font-dmmono),Menlo,monospace;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);font-variant-numeric:tabular-nums}.ecard .meta b{color:var(--paper);font-weight:500;text-align:right}.ecard .hash{font-family:var(--font-dmmono),Menlo,monospace;font-size:9px;letter-spacing:.12em;color:color-mix(in srgb,var(--paper) 40%,transparent);word-break:break-all;line-height:1.5}.ecard .eye-mini{width:26px;height:26px;flex:none}.ecard .back .inner{position:absolute;inset:0;padding:34px 28px 28px;display:flex;flex-direction:column;gap:14px;z-index:6;background:linear-gradient(180deg,var(--ink-2),var(--ink))}.ecard .letter{mask-image:linear-gradient(#000 88%,transparent);-webkit-mask-image:linear-gradient(#000 88%,transparent);padding-bottom:14px;touch-action:pan-y;font-family:var(--font-serif-role);font-size:clamp(14.5px,3.7vw,16px);line-height:1.42;color:var(--paper);overflow:auto;flex:1;min-height:0;padding-right:4px;scrollbar-width:thin;-moz-user-select:text;user-select:text;-webkit-user-select:text}.ecard .letter p{margin:0 0 .8em;white-space:pre-wrap}.ecard .letter .sal{font-family:var(--font-display-role);font-size:1.5em;letter-spacing:.06em;margin-bottom:.5em}.ecard .letter .sign{font-style:italic;color:var(--accent-2)}.ecard .back .actions{display:flex;flex-direction:column;gap:10px;align-items:stretch}.ecard .back .cta{text-align:center;padding:14px 18px}.ecard .show{padding:0;gap:0;background:#000}.ecard .slide,.ecard .slides{position:absolute;inset:0}.ecard .slide{opacity:0;transition:opacity 1.1s ease;pointer-events:none}.ecard .slide.on{opacity:1;pointer-events:auto}.ecard .slide .bg{position:absolute;inset:-6%;width:112%;height:112%;-o-object-fit:cover;object-fit:cover;filter:blur(28px) brightness(.45) saturate(1.2)}.ecard .slide .fg{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;transform-origin:50% 40%}.ecard .slide.on .fg{animation:ecard-kb 7s ease-out forwards}.ecard .slide.on:nth-child(2n) .fg{animation-name:ecard-kb2}@keyframes ecard-kb{0%{transform:scale(1)}to{transform:scale(1.09) translateY(-1.5%)}}@keyframes ecard-kb2{0%{transform:scale(1.09) translateX(1.5%)}to{transform:scale(1)}}.ecard .cap{position:absolute;left:0;right:0;bottom:0;padding:0 28px 84px;background:linear-gradient(180deg,transparent,rgba(0,0,0,.72));display:flex;flex-direction:column;gap:8px;max-width:640px;margin:0 auto}.ecard .cap .ch{font-family:var(--font-dmmono),Menlo,monospace;font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--accent)}.ecard .cap .t{font-family:var(--font-display-role),Georgia,serif;font-size:clamp(26px,6.5vw,44px);line-height:1.05;letter-spacing:.03em;text-wrap:balance}.ecard .cap .s{font-family:var(--font-serif-role);font-style:italic;font-size:clamp(16px,4.2vw,21px);color:rgba(255,255,255,.85);max-width:34ch}.ecard .slide.on .cap>*{animation:ecard-rise .9s ease both}.ecard .slide.on .cap .t{animation-delay:.15s}.ecard .slide.on .cap .s{animation-delay:.3s}@keyframes ecard-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.ecard .slide.finale .fg{-o-object-fit:contain;object-fit:contain;-o-object-position:50% 18%;object-position:50% 18%;filter:brightness(.95)}.ecard .slide.finale .cap{align-items:center;text-align:center;padding-bottom:40px;padding-top:120px;gap:10px;background:linear-gradient(180deg,transparent,rgba(0,0,0,.6) 35%,rgba(0,0,0,.85))}.ecard .slide.finale .t{font-size:clamp(40px,11vw,80px)}.ecard .slide.finale .heb{font-family:var(--font-serif-role);font-size:clamp(22px,6vw,34px);color:var(--accent-2);letter-spacing:.04em}.ecard .finale-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:14px;position:relative;z-index:9}.ecard .slide.on .cap .heb{animation-delay:.3s}.ecard .slide.on .cap .finale-actions{animation-delay:.6s}.ecard .progress{position:absolute;left:14px;right:14px;top:14px;display:flex;gap:5px;z-index:8}.ecard .progress i{flex:1;height:2px;background:rgba(255,255,255,.28);border-radius:2px;overflow:hidden;position:relative}.ecard .progress i:after{content:"";position:absolute;inset:0;background:var(--paper);transform:scaleX(0);transform-origin:left}.ecard .progress i.done:after{transform:scaleX(1)}.ecard .progress i.live:after{animation:ecard-fill var(--dur,6s) linear forwards}@keyframes ecard-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.ecard .taps{position:absolute;inset:0;z-index:7;display:grid;grid-template-columns:1fr 4fr}.ecard .taps button{display:block;width:100%;height:100%;cursor:pointer}.ecard .nav{position:absolute;left:0;right:0;bottom:0;z-index:9;display:flex;justify-content:space-between;align-items:center;padding:0 14px 14px;pointer-events:none}.ecard .nav button{pointer-events:auto;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:var(--paper);background:rgba(0,0,0,.45);box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.ecard .nav button:disabled{opacity:.25}.ecard .nav svg{width:20px;height:20px;display:block}.ecard .count{font-family:var(--font-dmmono),Menlo,monospace;font-size:11px;letter-spacing:.24em;color:rgba(255,255,255,.8);font-variant-numeric:tabular-nums}.ecard .show.end .nav{display:none}.ecard .close{position:absolute;right:14px;top:28px;z-index:9;font-family:var(--font-dmmono),Menlo,monospace;font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:rgba(255,255,255,.7);padding:8px 10px}.ecard .gift-wrap{perspective:1400px}.ecard .gift{width:min(84vw,380px);aspect-ratio:1.586;border-radius:18px;position:relative;overflow:hidden;background:var(--gift-bg);color:var(--gift-ink);box-shadow:0 50px 90px -40px rgba(0,0,0,.85),0 0 0 1px rgba(255,255,255,.15);display:flex;flex-direction:column;justify-content:space-between;padding:22px 24px;animation:ecard-giftin 1s cubic-bezier(.2,.7,.2,1) both}@keyframes ecard-giftin{0%{transform:rotateX(70deg) translateY(60px);opacity:0}to{transform:none;opacity:1}}.ecard .gift .foil{opacity:.35}.ecard .gift .brand{font-family:var(--font-display-role),Georgia,serif;font-size:30px;letter-spacing:.06em}.ecard .gift .mark{font-family:var(--font-inter),system-ui,sans-serif;font-weight:800;font-size:28px;letter-spacing:.02em}.ecard .gift .amount{font-family:var(--font-display-role),Georgia,serif;font-size:52px;line-height:1;letter-spacing:.02em}.ecard .gift .code{font-size:12px;opacity:.85}.ecard .gift .code,.ecard .gift .small{font-family:var(--font-dmmono),Menlo,monospace;letter-spacing:.2em}.ecard .gift .small{font-size:10px;text-transform:uppercase;opacity:.7}.ecard .gift-note{max-width:36ch;text-align:center;font-style:italic;color:var(--paper);font-size:18px}.ecard .credit{position:absolute;left:0;right:0;bottom:16px;text-align:center;z-index:3;pointer-events:none}.ecard .credit a{pointer-events:auto;font-family:var(--font-dmmono),Menlo,monospace;font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--mute);text-decoration:none}.ecard .credit a:hover{color:var(--accent)}@media (prefers-reduced-motion:reduce){.ecard *{animation-duration:.01ms!important;transition-duration:.01ms!important}.ecard .card{transform:none!important}.ecard .card.flipped{transform:rotateY(180deg)!important}}@media (max-height:640px){.ecard .scene{gap:16px}.ecard .card{width:min(84vw,300px)}}