*{box-sizing:border-box}html,body{margin:0;background:#fff;color:#101010;font-family:CircularPro,Arial,sans-serif}body{overflow-x:hidden}button{font:inherit}#journey{height:100svh}.viewport{height:100svh;width:100%;position:sticky;top:0;overflow:clip;background:white}.masthead{position:absolute;top:40px;left:0;right:0;text-align:center;z-index:40;pointer-events:none}.brand-mark{display:block;width:69px;height:39px;margin:0 auto;background:#111;mask:url('https://eventshop-assets.imgix.net/assets/homepage/memre-mark.png?ixlib=js-3.8.0&s=c434293bab13f01cf518fd46f44ecf18') 48.913043% 54.376164%/111.586902% 220.674157% no-repeat;mask-mode:alpha;-webkit-mask:url('https://eventshop-assets.imgix.net/assets/homepage/memre-mark.png?ixlib=js-3.8.0&s=c434293bab13f01cf518fd46f44ecf18') 48.913043% 54.376164%/111.586902% 220.674157% no-repeat}h1{font-size:clamp(60px,6.9vw,94px);font-weight:600;letter-spacing:-.075em;line-height:1.08;margin:20px 0 0}.scene-window{position:absolute;inset:220px 0 90px;display:grid;place-items:center;perspective:1800px}.scene{position:relative;width:1100px;height:580px;transform:scale(.82);flex-shrink:0;transform-origin:center}.piece{position:absolute;left:50%;top:50%;will-change:transform,opacity}.memory{width:460px;height:340px;transform:translate(-50%,-50%) rotate(-6deg);border-radius:28px;overflow:hidden;box-shadow:0 20px 40px -18px #19374338;background:#ddd}.memory>img{width:100%;height:100%;object-fit:cover}.cover-copy{position:absolute;inset:0;padding:28px;display:flex;flex-direction:column;justify-content:end;color:#fff;background:linear-gradient(transparent 38%,#0008 100%)}.cover-copy>span{font-size:12px;letter-spacing:.18em;margin-bottom:9px}.cover-copy>strong{font-size:44px;line-height:1;letter-spacing:-.055em;font-weight:600}.cover-people{display:flex;align-items:center;margin-top:18px}.cover-people i{font:500 12px CircularPro;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#6a7054;border:2px solid #333;margin-left:-6px}.cover-people i:first-child{margin-left:0;background:#9b714b}.cover-people i:nth-child(2){background:#ba7363}.cover-people i:nth-child(3){background:#5494a3}.cover-people i:nth-child(4){background:#6d5692}.cover-people>span{font-size:14px;margin-left:10px}.download{position:absolute;bottom:max(27px,env(safe-area-inset-bottom));right:30px;display:flex;gap:10px;z-index:60}.store{text-decoration:none;border:0;border-radius:9px;background:#111;color:white;display:flex;align-items:center;gap:8px;padding:9px 13px;height:49px;text-align:left;cursor:pointer;box-shadow:0 3px 7px #0001}.store svg{width:24px;height:28px;flex-shrink:0}.store span{display:block}.store small{display:block;font-size:10px;line-height:1.25;letter-spacing:0;font-weight:400}.store b{display:block;font-size:21px;line-height:1.1;font-weight:500;letter-spacing:-.04em}.store:focus-visible{outline:3px solid #738eff;outline-offset:5px}
@media(max-width:700px){.masthead{top:max(28px,env(safe-area-inset-top))}.brand-mark{width:58px;height:33px}h1{font-size:66px;margin-top:18px}.scene-window{inset:170px 0 110px}.scene{transform:scale(.62);width:580px;height:650px}.download{right:auto;left:50%;transform:translateX(-50%);bottom:max(27px,env(safe-area-inset-bottom));gap:9px}.store{height:46px;padding:8px 11px;gap:7px;white-space:nowrap}.store b{font-size:19px}.store small{font-size:9px}.store svg{width:21px;height:25px}}
html{scrollbar-width:none}html::-webkit-scrollbar{display:none}#journey{height:100svh}.viewport{height:100svh}.scene-window{inset:215px 0 100px}.scene{width:1160px;height:610px}.piece{opacity:0;transform:translate(-50%,-50%);pointer-events:none;backface-visibility:hidden}.memory{opacity:1;z-index:10}.memory>img{object-position:center 43%;transition:none}.cover-copy{padding:26px;opacity:0}.cover-copy>strong{font-size:var(--cover-title,44px)}.cover-people{overflow:hidden;white-space:nowrap}.photo-tile,.video-tile{overflow:hidden;box-shadow:0 24px 48px -25px #35485a66;background:#e0e5e9}.photo-tile>img,.video-tile>video{width:100%;height:100%;object-fit:cover}.media-tag{position:absolute;left:17px;top:16px;border-radius:25px;background:#0004;backdrop-filter:blur(16px);color:#fff;padding:7px 12px;font-size:14px;font-weight:500}.play-disc{position:absolute;inset:0;margin:auto;width:59px;height:59px;display:grid;place-items:center;border:1px solid #fff8;border-radius:50%;background:#fff3;backdrop-filter:blur(10px);color:#fff}.play-disc svg{width:27px;height:27px}.video-time{position:absolute;bottom:17px;right:18px;color:#fff;font-size:14px}.tile-label{font-size:14px;font-weight:500;letter-spacing:-.02em}.note-tile{padding:26px 29px;background:#f9ea70;color:#3d3915;box-shadow:0 22px 40px -22px #76703d55}.note-tile p{font-family:Georgia,serif;font-size:32px;letter-spacing:-.05em;line-height:1.17;margin:25px 0 22px}.note-sign{font-size:16px;opacity:.8}.voice-tile{padding:23px 26px;background:#d1bdf6;color:#37234d;box-shadow:0 22px 40px -22px #63477f44}.voice-top{display:flex;justify-content:space-between;align-items:center;font-size:13px}.voice-track{display:flex;align-items:center;gap:13px;margin:20px 0 13px}.voice-play{width:40px;height:40px;flex-shrink:0;border-radius:50%;background:#38214e;display:grid;place-items:center;color:#edddff}.voice-play svg{width:20px;height:20px}.wave{display:flex;align-items:center;justify-content:space-between;height:46px;flex:1;gap:3px}.wave i{display:block;background:#51346e;width:4px;border-radius:5px}.voice-caption{font-size:13px;opacity:.8}.link-tile{background:white;box-shadow:0 20px 50px -18px #18395338;border:1px solid #eee;display:flex;align-items:center;gap:18px;padding:18px;color:#171b1c}.link-art{width:73px;height:73px;flex-shrink:0;position:relative;overflow:hidden;border-radius:13px;background:#378760}.link-art img{width:100%;height:100%;object-fit:cover;filter:brightness(.7)}.link-art>span{position:absolute;inset:0;display:grid;place-items:center;font-size:40px;color:white}.link-tile>div:nth-child(2){flex:1}.link-tile .tile-label{color:#787878;font-size:12px}.link-tile strong{display:block;font-size:17px;line-height:1.2;letter-spacing:-.035em;margin:5px 0 6px}.link-tile small{font-size:12px;color:#888}.link-tile>svg{width:22px;height:22px;flex-shrink:0;color:#888}.editor-tile{background:#fff;box-shadow:0 16px 50px #0002;border:1px solid #eee;display:flex;align-items:center;justify-content:center;gap:18px;padding:16px;z-index:22}.editor-letter{font-size:26px;font-weight:500}.editor-divider{height:24px;width:1px;background:#e4e4e4}.swatch{height:25px;width:25px;flex-shrink:0;border-radius:50%}.swatch-white{background:#fff;box-shadow:0 0 0 2px #fff,0 0 0 3px #333}.swatch-blue{background:#86bfe0}.swatch-yellow{background:#f7e777}.swatch-pink{background:#eea8b2}.editor-tile>svg{width:24px;height:24px}.type-tile{display:flex;flex-direction:column;align-items:center;gap:18px;justify-content:center;background:#fff;border:1px solid #eee;box-shadow:0 18px 50px #0001}.type-tile>span{font-size:33px;font-weight:500;line-height:1.15}.type-tile>span:nth-child(2){font-family:Georgia,serif;font-style:italic;color:#aaa}.type-tile>span:nth-child(3){font-family:monospace;color:#aaa}.invite-tile{display:flex;align-items:center;padding:19px;gap:14px;background:#fff;border:1px solid #efefef;box-shadow:0 20px 50px #1e233724;white-space:nowrap}.invite-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#f2f4f5}.invite-icon svg{width:26px;height:26px}.invite-tile strong{font-size:21px;font-weight:500;letter-spacing:-.04em}.invite-avatars{display:flex;margin-left:auto}.invite-avatars i{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#acc8b6;border:2px solid white;margin-left:-10px;font:500 11px CircularPro}.invite-avatars i:nth-child(2){background:#f1bb93}.invite-avatars i:nth-child(3){background:#cac5eb}.invite-avatars i:nth-child(4){background:#eee}.comment-tile{display:flex;align-items:center;gap:13px;padding:21px;background:white;border:1px solid #eee;box-shadow:0 19px 45px #3e36531c}.avatar{width:42px;height:42px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;font-size:17px;font-weight:500}.mia{background:#f3c6a7;color:#754c38}.dan{background:#bed0e9;color:#42576c}.comment-tile strong{display:block;font-size:13px;font-weight:500}.comment-tile p{font-size:19px;letter-spacing:-.035em;margin:5px 0 0;white-space:nowrap}.heart-tile{display:flex;align-items:center;gap:15px;color:#f44869;filter:drop-shadow(0 18px 18px #ff758240)}.heart-tile svg{width:85px;height:78px}.heart-tile span{font-size:38px;font-weight:600;letter-spacing:-.08em}.book img{width:100%;height:100%;object-fit:contain}.book{z-index:30;filter:drop-shadow(0 26px 20px #0001)}.saved-card{overflow:hidden;box-shadow:0 15px 25px -15px #17212375;background:#172131;color:#fff}.saved-card>img{width:100%;height:100%;object-fit:cover}.saved-card>div{position:absolute;inset:0;padding:26px;display:flex;flex-direction:column;justify-content:flex-end;background:linear-gradient(transparent 10%,#000b 100%)}.saved-card span{font-size:11px;letter-spacing:.15em;margin-bottom:12px}.saved-card strong{font-size:32px;font-weight:600;letter-spacing:-.06em;line-height:1.08}.saved-card small{font-size:13px;margin-top:9px;opacity:.8}.hilary-card{background:#8a4769}.hilary-card>img{object-position:50% 22%}.fifa-card{background:#427946}.birthday-card{background:#fab8ce;color:#662244}.birthday-card>div{background:linear-gradient(0deg,#fab8ce,transparent 80%);z-index:2}.birthday-card>.birthday-type{position:absolute;top:-34px;right:-8px;font-size:220px;font-weight:600;letter-spacing:-.13em;color:#fd739b;line-height:1}.wallet-ui{background:#f2f2f4;border:1px solid #e4e4e9;box-shadow:0 30px 70px -40px #43455888}.wallet-top{display:flex;align-items:center;gap:12px;padding:25px 27px;font-size:19px;letter-spacing:-.045em;font-weight:500}.wallet-mark{width:26px;height:15px;background:#151515;mask:url('https://eventshop-assets.imgix.net/assets/homepage/memre-mark.png?ixlib=js-3.8.0&s=c434293bab13f01cf518fd46f44ecf18') 48.913043% 54.376164%/111.586902% 220.674157% no-repeat}.wallet-plus{margin-left:auto;font-size:26px;font-weight:400}.wallet-bottom{position:absolute;bottom:25px;left:27px;right:27px;display:flex;justify-content:space-between;font-size:12px;color:#7c7c83}.progress{position:absolute;left:28px;bottom:29px;z-index:60;display:flex;align-items:center;gap:0}.progress button{display:grid;place-items:center;width:28px;height:38px;padding:0;border:0;background:none;cursor:pointer}.progress button:after{content:'';width:5px;height:5px;border-radius:10px;background:#d0d0d0;transition:width .2s,background .2s}.progress button[aria-current=step]:after{width:18px;background:#151515}.progress button:focus-visible{outline:2px solid #7795ed;border-radius:5px;outline-offset:1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.masthead h1{will-change:filter,opacity,transform}
@media(max-width:700px){.scene-window{inset:170px 0 113px}.scene{width:600px;height:740px}.progress{left:50%;transform:translateX(-50%);bottom:82px}.progress button{width:24px;height:24px}.progress button:after{width:4px;height:4px}.progress button[aria-current=step]:after{width:15px}h1{font-size:clamp(50px,14.5vw,70px)}.masthead{top:max(27px,env(safe-area-inset-top))}.download{bottom:max(25px,env(safe-area-inset-bottom))}.cover-copy{padding:24px}}
@media(max-height:600px) and (min-width:701px){.masthead{top:20px}.brand-mark{width:45px;height:26px}h1{font-size:58px;margin-top:10px}.scene-window{inset:135px 0 78px}.download{bottom:18px}.progress{bottom:18px}}
.scene{position:absolute;left:50%;top:50%}
.saved-card>div{justify-content:flex-start;background:linear-gradient(#0008,transparent 90%)}.saved-card span{margin-bottom:9px}.saved-card strong{font-size:29px}.saved-card small{margin-top:7px}.birthday-card>div{background:none}.birthday-card>.birthday-type{opacity:.48}.birthday-card strong{max-width:220px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.masthead h1{filter:none!important}.progress button:after{transition:none}}

/* Gestures advance a complete scene; there is no long scroll runway. */
html,body{height:100%;overflow:hidden;overscroll-behavior:none}.viewport{position:relative;touch-action:pan-x pinch-zoom}

/* Printed assets sit behind the same photos that form the earlier scenes. */
.book{filter:none;overflow:visible;pointer-events:none}.book>img{position:absolute;left:0;top:0;width:1536px;height:1024px;max-width:none;object-fit:fill;transform-origin:0 0;will-change:transform,clip-path}
.collection-art{border-radius:4px;background:transparent;box-shadow:0 16px 28px -16px #17212366}.collection-art>img{display:block;object-fit:cover}.scene-window.is-remember{mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);mask-position:center;mask-repeat:no-repeat}
.masthead{top:clamp(65px,7.5svh,104px)}.download{bottom:max(55px,env(safe-area-inset-bottom))}.progress{bottom:57px}.scene-window{inset:245px 0 130px}
.card-motion{position:absolute;left:212px;bottom:62px;width:29px;height:29px;padding:6px;border:0;border-radius:50%;background:#f3f3f3;color:#666;z-index:60;cursor:pointer}.card-motion svg{width:100%;height:100%;display:block}.card-motion[hidden]{display:none}.card-motion:focus-visible{outline:2px solid #7795ed;outline-offset:4px}
@media(max-width:700px){.masthead{top:max(46px,env(safe-area-inset-top))}.download{bottom:max(43px,env(safe-area-inset-bottom))}.progress{bottom:100px}.scene-window{inset:190px 0 141px}.card-motion{left:auto;right:32px;bottom:98px;width:28px;height:28px}.scene-window.is-remember{mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}}
@media(max-height:600px) and (min-width:701px){.masthead{top:25px}.download{bottom:max(24px,env(safe-area-inset-bottom))}.progress{bottom:26px}.scene-window{inset:145px 0 94px}.card-motion{bottom:32px}}
@media(max-height:600px) and (max-width:700px){.masthead{top:20px}.brand-mark{width:42px;height:24px}h1{font-size:48px;margin-top:10px}.scene-window{inset:125px 0 116px}.download{bottom:max(24px,env(safe-area-inset-bottom))}.progress{bottom:82px}.card-motion{bottom:80px}}

/* A vertical journey marker follows the direction of the swipe. */
.progress{flex-direction:column;left:max(28px,env(safe-area-inset-left));transform:none}
.progress button{width:28px;height:28px}
.progress button:after{width:5px;height:5px;transition:height .2s,background .2s}
.progress button[aria-current=step]:after{width:5px;height:18px}
.card-motion{left:max(72px,env(safe-area-inset-left))}
@media(max-width:700px){.progress{left:max(12px,env(safe-area-inset-left));bottom:108px}.progress button{width:28px;height:24px}.progress button:after{width:4px;height:4px}.progress button[aria-current=step]:after{width:4px;height:15px}.card-motion{left:auto}}
@media(max-height:600px) and (max-width:700px){.progress{bottom:90px}}
@media(prefers-reduced-motion:reduce){.progress button:after{transition:none}}

@font-face{font-family:CircularPro;src:url('/homepage/assets/circular-pro-medium.otf') format('opentype');font-weight:500;font-display:swap}
.masthead h1{font-family:CircularPro,Arial,sans-serif;font-weight:500;letter-spacing:-.055em;min-height:1.08em}
.title-wordmark{display:none;width:auto;height:.98em;max-width:calc(100vw - 64px);object-fit:contain;margin:0 auto}
.is-wordmark .title-wordmark{display:block}.is-wordmark .title-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.site-menu{position:absolute;left:50%;bottom:max(14px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;gap:22px;z-index:60;white-space:nowrap}
.site-menu a{display:flex;align-items:center;min-height:32px;color:#666;text-decoration:none;font-size:13px;letter-spacing:-.015em}.site-menu a:hover{color:#111}.site-menu a:focus-visible{outline:2px solid #7795ed;outline-offset:3px;border-radius:3px}
.download{bottom:max(55px,calc(env(safe-area-inset-bottom) + 43px))}
.intro{display:none;position:fixed;inset:0;z-index:100;background:white;pointer-events:none;overflow:hidden}.has-intro .intro{display:block}.intro[hidden]{display:none}
.intro-photo{position:absolute;left:50%;top:50%;width:100vw;height:100svh;transform:translate(-50%,-50%);overflow:hidden;background:#72aed0;will-change:width,height,transform}
.intro-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 43%;will-change:transform,filter}.intro-photo>img:nth-child(2){transform:translateX(110%)}.intro-photo>img:nth-child(3){transform:translateX(110%)}
.intro-mark{position:absolute;left:50%;top:50%;width:110px;height:63px;margin:0;background:white;transform:translate(-50%,-50%);z-index:4;will-change:transform,opacity}
.has-intro .scene-window{visibility:hidden}.has-intro .masthead,.has-intro .download,.has-intro .site-menu,.has-intro .progress{opacity:var(--intro-ui,0);pointer-events:none}
.intro-arrived #photo,.intro-arrived #video{animation:intro-companions .65s ease-out}@keyframes intro-companions{from{opacity:0}to{opacity:1}}
@media(max-width:700px){.title-wordmark{height:.94em}.site-menu{bottom:max(7px,env(safe-area-inset-bottom));gap:20px}.site-menu a{min-height:28px;font-size:12px}.download{bottom:max(43px,calc(env(safe-area-inset-bottom) + 37px))}.intro-mark{width:82px;height:47px}}
@media(max-height:600px) and (min-width:701px){.site-menu{bottom:max(5px,env(safe-area-inset-bottom))}.download{bottom:max(43px,calc(env(safe-area-inset-bottom) + 39px))}.progress{bottom:44px}.card-motion{bottom:48px}}
@media(max-height:600px) and (max-width:700px){.download{bottom:max(39px,calc(env(safe-area-inset-bottom) + 37px))}.progress{bottom:100px}.card-motion{bottom:96px}}
@media(prefers-reduced-motion:reduce){.intro-arrived #photo,.intro-arrived #video{animation:none}}

.birthday-card{background:#82b5cc;color:white}.birthday-card>img{object-position:58% center}
.birthday-card>.birthday-copy{justify-content:flex-end;background:linear-gradient(transparent 38%,#0008 100%);padding:26px}
.birthday-copy>span{font-size:12px;letter-spacing:.18em;margin-bottom:9px}.birthday-copy>strong{font-size:35px;letter-spacing:-.055em;max-width:none}
.birthday-people{display:flex;align-items:center;margin-top:18px;white-space:nowrap}.birthday-people i{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#6a7054;border:2px solid #333;margin-left:-6px;font-size:12px;font-style:normal}.birthday-people i:first-child{margin-left:0;background:#9b714b}.birthday-people i:nth-child(2){background:#ba7363}.birthday-people i:nth-child(3){background:#5494a3}.birthday-people i:nth-child(4){background:#6d5692}.birthday-people>span{font-size:14px;letter-spacing:0;margin:0 0 0 10px}

/* A quiet qualifier follows each title through the same transition. */
.title-qualifier{font-family:"cofo-sans-mono-variable",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:400;font-size:.8125rem;line-height:1.55;letter-spacing:0;color:#757575;max-width:calc(100vw - 48px);margin:12px auto 0;min-height:1.55em;will-change:filter,opacity,transform;text-wrap:balance}
@media(max-width:700px){.title-qualifier{font-size:.75rem;margin-top:10px;max-width:calc(100vw - 40px);min-height:3.1em}}
@media(prefers-reduced-motion:reduce){.title-qualifier{filter:none!important}}

/* Shared content lands on blank paper, one page at a time. */
.page-photo{background:transparent;border:2px dashed #b8b7b0;overflow:hidden}.flying-photo{overflow:hidden;background:#fff}.flying-photo>img{display:block;width:100%;height:100%;object-fit:cover}.flying-photo{box-shadow:0 20px 30px -14px #19374355}
.page-note{display:grid;place-items:center;text-align:center;font:italic 28px/1.2 Georgia,serif;color:#524b40;white-space:nowrap}
.page-leaf{overflow:hidden;backface-visibility:hidden;background:#fff}.leaf-paper{position:absolute;width:234%;height:170%;left:-120%;top:-35%;max-width:none}.leaf-photo{position:absolute;left:8%;top:15%;width:82%;height:61%;object-fit:cover;display:block}
.book-qr{overflow:visible}.book-qr>img{display:block;width:100%;height:100%;position:relative;z-index:2;opacity:.7;mix-blend-mode:multiply}.qr-ring{position:absolute;inset:-14%;border:1.5px solid #b5b6b0;border-radius:12px;animation:memre-connect 2.4s ease-out infinite}.qr-ring-two{animation-delay:1.2s}@keyframes memre-connect{0%{transform:scale(.8);opacity:.4}100%{transform:scale(1.6);opacity:0}}
@media(prefers-reduced-motion:reduce){.qr-ring{animation:none}.qr-ring{opacity:.3}}

.motion-paused .qr-ring{animation-play-state:paused}

/* A fine white edge gives the layered photos a little separation. */
.memory::after,.photo-tile::after{content:"";position:absolute;inset:0;border:2px solid white;border-radius:inherit;opacity:var(--photo-border,1);pointer-events:none}
.physical-product{overflow:visible;filter:drop-shadow(0 16px 17px #27322c18)}
.physical-product>img{display:block;width:100%;height:100%;object-fit:contain}
.physical-card{overflow:hidden;background:#fff;padding:6px;box-shadow:0 15px 28px -13px #19374344}
.physical-card>img:first-child{width:100%;height:72%;object-fit:cover;border-radius:5px;display:block}
.physical-card>span{position:absolute;left:9px;bottom:15px;font-size:13px;color:#5c5a55;letter-spacing:-.02em}
.physical-card>.product-card-qr{position:absolute;bottom:13px;right:10px;width:21px;height:21px;opacity:.65;mix-blend-mode:multiply}
.title-qualifier{max-width:min(640px,calc(100vw - 48px))}
@media(max-width:700px){.title-qualifier{max-width:calc(100vw - 40px)}}

/* Voice memos match the current app; the first scene offers a gentle way in. */
.voice-tile{background:#191919;color:#f4f4f4;box-shadow:0 22px 40px -22px #0005}
.voice-play{background:#f4f4f4;color:#171717}.wave i{background:#f2f2f2}
.learn-how{position:absolute;left:50%;bottom:60px;transform:translateX(-50%);display:flex;align-items:center;gap:9px;border:0;padding:8px 12px;background:transparent;color:#777;font:400 12px/1.4 "cofo-sans-mono-variable",ui-monospace,monospace;z-index:60;cursor:pointer}
.learn-how svg{width:17px;height:20px;animation:learn-bounce 2s ease-in-out infinite}.learn-how[hidden]{display:none}.learn-how:focus-visible{outline:2px solid #7795ed;border-radius:4px;outline-offset:2px}
@keyframes learn-bounce{0%,100%{transform:translateY(-2px)}50%{transform:translateY(3px)}}
.has-intro .learn-how{opacity:var(--intro-ui,0);pointer-events:none}
@media(max-width:700px){.learn-how{bottom:100px}}
@media(max-height:600px) and (min-width:701px){.learn-how{bottom:95px}}
@media(prefers-reduced-motion:reduce){.learn-how svg{animation:none}}

.site-menu button{display:flex;align-items:center;min-height:32px;color:#666;border:0;padding:0;background:transparent;font-size:13px;letter-spacing:-.015em;cursor:pointer}.site-menu button:hover{color:#111}.site-menu button:focus-visible{outline:2px solid #7795ed;outline-offset:3px;border-radius:3px}
.has-intro .site-menu button{pointer-events:none}
.contact-dialog{width:min(420px,calc(100vw - 32px));max-height:calc(100svh - 40px);overflow:auto;border:1px solid #ececec;border-radius:24px;padding:32px;color:#171717;background:#fff;box-shadow:0 20px 70px #0002}
.contact-dialog::backdrop{background:#ffffff9c;backdrop-filter:blur(9px)}
.contact-close{position:absolute;right:16px;top:12px;padding:4px 9px;border:0;background:none;color:#777;font-size:28px;cursor:pointer}
.contact-dialog h2{font-size:32px;font-weight:500;letter-spacing:-.045em;margin:0 0 8px}.contact-intro{font-size:14px;color:#777;margin:0 0 26px}
.contact-dialog label{display:block;font-size:13px;margin:16px 0 7px}.contact-dialog input,.contact-dialog textarea{display:block;width:100%;padding:11px 12px;border:1px solid #dedede;border-radius:10px;background:#fafafa;font:inherit;font-size:16px;color:inherit;resize:vertical}
.contact-dialog :focus-visible{outline:2px solid #7795ed;outline-offset:3px}.contact-send{display:block;width:100%;margin-top:22px;border:0;border-radius:11px;padding:13px;background:#171717;color:white;cursor:pointer;font-size:15px}.contact-send:disabled{opacity:.6;cursor:wait}
.contact-status{font-size:13px;line-height:1.5;color:#666;margin:14px 0 0;min-height:1.5em}
@media(max-width:700px){.site-menu button{font-size:12px;min-height:28px}.contact-dialog{padding:28px 24px}}

.ar-phone{overflow:visible}.phone-shell{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}.ar-screen{position:absolute;left:18.55%;top:4.56%;width:63.1%;height:91.0%;overflow:hidden;border-radius:12%/6%;background:#f3f1ed}.ar-camera{position:absolute;inset:0;overflow:hidden}.camera-book{position:absolute;left:-130%;top:10%;width:245%;height:auto;max-width:none}.camera-photo,.ar-live{position:absolute;left:8%;top:33%;width:84%;height:29%;object-fit:cover}.ar-live{z-index:2;opacity:0}.ar-tracking{position:absolute;left:5%;top:31.5%;width:90%;height:32%;border:1px solid #fff9;z-index:3;border-radius:3px;box-shadow:0 0 0 1px #8882}.ar-label{position:absolute;top:7%;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:6px;white-space:nowrap;font-size:10px;letter-spacing:.01em;color:white;background:#0007;padding:7px 9px;border-radius:20px;z-index:4;backdrop-filter:blur(10px)}.ar-label i{display:block;width:5px;height:5px;border-radius:50%;background:#fff;animation:live-light 2s ease-in-out infinite}.ar-focus{position:absolute;left:50%;bottom:7%;width:31px;height:31px;transform:translateX(-50%);border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 3px #0002;z-index:4}@keyframes live-light{50%{opacity:.35}}

/* The brand stays in place while the chapter changes below it. */
.brand-lockup{display:flex;align-items:center;justify-content:center;gap:12px;height:36px}
.brand-lockup .brand-mark{width:50px;height:29px;margin:0}
.brand-wordmark{display:block;width:145px;height:auto;mix-blend-mode:multiply}
.masthead h1.is-intro-title{font:400 18px/1.55 "cofo-sans-mono-variable",ui-monospace,monospace;letter-spacing:0;color:#757575;margin-top:24px;min-height:1.55em}
.learn-how{font-size:15px;bottom:95px;gap:10px}.learn-how svg{width:22px;height:24px}
.page-photo{border-color:rgb(184 183 176 / calc(1 - var(--relive-amount,0)))}
.page-photo>img{display:block;width:100%;height:100%;object-fit:cover;opacity:var(--relive-amount,0)}
.ar-phone{filter:drop-shadow(var(--shadow-x,0px) var(--shadow-y,22px) 18px #19374330)}
.motion-paused .ar-label i{animation-play-state:paused}
@media(max-width:700px){.brand-lockup{height:30px;gap:10px}.brand-lockup .brand-mark{width:40px;height:23px}.brand-wordmark{width:125px}.masthead h1.is-intro-title{font-size:15px;margin-top:21px}.learn-how{font-size:14px;bottom:125px}}
@media(max-height:600px){.brand-lockup{height:25px}.brand-lockup .brand-mark{width:36px;height:21px}.brand-wordmark{width:112px}.masthead h1.is-intro-title{margin-top:14px}.learn-how{bottom:100px}}

/* Separate depth planes preserve each object's existing morph. Printed layers share a plane. */
.scene{transform-style:preserve-3d;--mouse-x:0;--mouse-y:0;--book-amount:0}
.depth-layer{position:absolute;inset:0;pointer-events:none;transform-style:preserve-3d;--depth:var(--rest-depth);--shadow-x:calc(var(--mouse-x) * var(--depth) * -12px);--shadow-y:calc(22px - var(--mouse-y) * var(--depth) * 10px);--depth-transform:translate3d(calc(var(--mouse-x) * var(--depth) * 16px),calc(var(--mouse-y) * var(--depth) * 12px),calc(var(--depth) * 20px)) rotateX(calc(var(--mouse-y) * var(--depth) * -2.4deg)) rotateY(calc(var(--mouse-x) * var(--depth) * 3deg));transform:var(--depth-transform)}
.depth-layer.is-paper{--depth:calc(var(--rest-depth) * (1 - var(--book-amount)) + .65 * var(--book-amount))}
.depth-layer>.memory,.depth-layer>.photo-tile,.depth-layer>.video-tile,.depth-layer>.saved-card{box-shadow:var(--shadow-x) var(--shadow-y) 38px -20px #19374350}
.depth-layer>.note-tile{box-shadow:var(--shadow-x) var(--shadow-y) 38px -22px #76703d55}
.depth-layer>.voice-tile{box-shadow:var(--shadow-x) var(--shadow-y) 38px -22px #0005}
.depth-layer>.link-tile,.depth-layer>.editor-tile,.depth-layer>.type-tile,.depth-layer>.invite-tile,.depth-layer>.comment-tile,.depth-layer>.physical-card{box-shadow:var(--shadow-x) var(--shadow-y) 40px -20px #18395338}
.depth-layer>.flying-photo{box-shadow:var(--shadow-x) var(--shadow-y) 30px -14px #19374355}
.depth-layer>.physical-product{filter:drop-shadow(var(--shadow-x) var(--shadow-y) 17px #27322c20)}
.depth-layer>.book{filter:drop-shadow(var(--shadow-x) var(--shadow-y) 20px #0001)}
.depth-layer>.heart-tile{filter:drop-shadow(var(--shadow-x) var(--shadow-y) 18px #ff758240)}
@media(prefers-reduced-motion:reduce),(hover:none),(pointer:coarse){.depth-layer{transform:none}.ar-label i{animation:none}}

/* This preference appears only on touch devices with vibration support. */
.site-menu .haptics-toggle{font:400 11px/1.4 "cofo-sans-mono-variable",ui-monospace,monospace;letter-spacing:0;gap:6px}
.haptics-toggle::before{content:"";width:4px;height:4px;flex-shrink:0;border-radius:50%;background:#c2c2c2}
.haptics-toggle[aria-pressed="true"]::before{background:#666}
.site-menu .haptics-toggle[hidden]{display:none}
@media(max-width:700px){.site-menu{gap:16px}.site-menu .haptics-toggle{font-size:10px}}

/* Tilt is an optional mobile input to the same attached depth planes. */
@media(prefers-reduced-motion:no-preference){.scene.tilt-enabled .depth-layer{transform:var(--depth-transform)}}
.site-menu .tilt-toggle{font:400 11px/1.4 "cofo-sans-mono-variable",ui-monospace,monospace;letter-spacing:0;gap:6px}
.tilt-toggle[aria-pressed="true"]::before{content:"";width:4px;height:4px;border-radius:50%;background:#666}
.site-menu .tilt-toggle[hidden],.tilt-status[hidden]{display:none}
.tilt-toggle:disabled{opacity:.65;cursor:wait}
.tilt-status{position:absolute;bottom:96px;left:50%;transform:translateX(-50%);margin:0;width:min(310px,calc(100vw - 32px));color:#757575;text-align:center;font:400 10px/1.4 "cofo-sans-mono-variable",ui-monospace,monospace;z-index:61;pointer-events:none}
@media(max-width:700px){.site-menu{gap:clamp(8px,2.5vw,16px);max-width:calc(100vw - 24px)}.site-menu .tilt-toggle{font-size:10px}}

/* Keep rounded camera clipping stable while the phone moves in depth. */
.ar-screen{isolation:isolate;transform:translateZ(0);backface-visibility:hidden}
.ar-live{transform:translateZ(0);backface-visibility:hidden;transition:opacity .18s linear}
@media(prefers-reduced-motion:reduce){.ar-live{transition:none}}

/* The camera shares the actual book projection rather than a flat picture crop. */
.camera-book,.camera-memory,.camera-photo,.camera-note,.camera-qr,.ar-live,.ar-tracking{position:absolute;left:0;top:0;max-width:none;transform-origin:0 0}
.camera-book{z-index:0}.camera-memory,.camera-photo{object-fit:cover;z-index:1}.ar-live{z-index:2}
.camera-note{display:grid;place-items:center;text-align:center;font:italic 28px/1.2 Georgia,serif;color:#524b40;white-space:nowrap;z-index:1}
.camera-qr{opacity:.7;mix-blend-mode:multiply;z-index:1}
.ar-tracking{z-index:3;border:2px solid #fff9;border-radius:0;box-shadow:none;pointer-events:none}

.camera-memory{object-position:center 43%}

/* The collection opens into a quiet, focused card preview. */
.piece.is-selectable{pointer-events:auto;cursor:pointer;touch-action:pan-y pinch-zoom}
.piece.is-selectable:focus-visible{outline:4px solid #738eff;outline-offset:6px}
.card-dialog{border:0;padding:0;overflow:visible;background:transparent;color:#111;width:fit-content;max-width:calc(100vw - 56px);max-height:calc(100svh - 100px)}
.card-dialog[open]{display:grid;grid-template-columns:minmax(0,307px) minmax(160px,220px);gap:48px;align-items:center}
.card-dialog::backdrop{background:#ffffffb8;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.card-close{position:absolute;right:-10px;top:-50px;width:40px;height:40px;border:0;border-radius:50%;background:#fff;color:#777;font-size:30px;line-height:1;cursor:pointer;box-shadow:0 3px 18px #0001}
.card-close:focus-visible,.card-open-link:focus-visible{outline:2px solid #738eff;outline-offset:4px}
.card-preview{width:min(307px,36vw,calc((100svh - 160px)*.714));aspect-ratio:307/430}
.card-front{position:relative;inset:auto;width:100%;height:100%;border-radius:28px;overflow:hidden;box-shadow:0 30px 70px -20px #14233355}
.card-front>img{display:block;width:100%;height:100%;object-fit:cover}
.card-front .cover-copy{opacity:1;padding:26px}
.card-front .cover-copy>strong{font-size:35px}
.card-front .cover-people{margin-top:18px}
.card-destination{text-align:center;max-width:220px}
.card-destination h2{font:500 23px/1.2 CircularPro,Arial,sans-serif;letter-spacing:-.035em;margin:0 0 18px}
.card-qr{width:180px;height:180px;object-fit:contain;padding:16px;background:white;border-radius:18px;box-shadow:0 12px 35px #0001}
.card-destination-copy{font:13px/1.6 cofo-sans-mono,monospace;color:#888;margin:18px 0}
.card-open-link{display:inline-block;font-size:14px;color:#555;text-underline-offset:4px}
.card-qr[hidden],.card-open-link[hidden]{display:none}
@media(max-width:700px){.card-dialog[open]{grid-template-columns:1fr;gap:12px}.card-preview{width:min(260px,70vw,calc((100svh - 225px)*.714))}.card-front{border-radius:25px}.card-front .cover-copy,.card-front .birthday-copy{padding:20px}.card-front .cover-copy>strong,.card-front .birthday-copy>strong{font-size:30px}.card-destination{max-width:none}.card-destination h2{font-size:20px;margin:8px 0}.card-destination-copy{margin:8px 0;font-size:12px}.card-qr{width:130px;height:130px}.card-close{top:-44px;right:-4px;width:34px;height:34px;font-size:27px}}

.learn-how{animation:learn-float 2.4s ease-in-out infinite}
.learn-how svg{animation:none}
@keyframes learn-float{0%,100%{transform:translate(-50%,-3px)}50%{transform:translate(-50%,4px)}}
@media(max-width:700px){.learn-how{bottom:96px}}
@media(prefers-reduced-motion:reduce){.learn-how{animation:none}}

/* Slow, continuous breathing across the voice waveform. */
.wave i{transform-origin:center;animation:voice-wave var(--wave-duration,3.8s) ease-in-out var(--wave-delay,0s) infinite;animation-play-state:paused}
.is-add:not(.motion-paused) .wave i{animation-play-state:running}
@keyframes voice-wave{0%,100%{transform:scaleY(.48)}35%{transform:scaleY(1)}70%{transform:scaleY(.64)}}
@media(prefers-reduced-motion:reduce){.wave i{animation:none}}
/* Keep the turning paper within the book's projected dimensions. */
.page-leaf{backface-visibility:visible;background:linear-gradient(90deg,#eeefeb,#fafbf9 12%,#f5f6f3 95%,#e6e7e2);box-shadow:0 4px 8px #2221}
.page-leaf.is-back .leaf-photo{opacity:0}
/* The actual AR viewer uses Continue and a playback timeline. */
.ar-controls{position:absolute;inset:auto 0 0;padding:40px 8px 14px;display:flex;align-items:center;flex-direction:column;gap:10px;background:linear-gradient(transparent,#0003);z-index:4;color:white;pointer-events:none}
.ar-continue{display:grid;place-items:center;width:72%;height:35px;border-radius:30px;background:white;color:#151515;font:500 13px/1 CircularPro,Arial,sans-serif}
.ar-timeline{width:100%;display:flex;align-items:center;gap:6px;font:500 8px/1 CircularPro,Arial,sans-serif;font-variant-numeric:tabular-nums}
.ar-timeline-track{height:3px;background:#ffffff60;border-radius:4px;flex:1;position:relative}
.ar-timeline-track i{display:block;height:100%;width:0;border-radius:inherit;background:white;position:relative}
.ar-timeline-track i::after{content:"";position:absolute;right:-3px;top:-1.5px;width:6px;height:6px;border-radius:50%;background:white}
.piece.is-selectable{touch-action:pinch-zoom;user-select:none;-webkit-user-select:none}
.scene-window.is-remember{touch-action:pinch-zoom}
.learn-how{bottom:120px}
@media(max-width:700px){.learn-how{bottom:122px}}
@media(max-height:600px){.learn-how{bottom:115px}}

/* Quiet branding leaves the section title as the visual focus. */
.brand-lockup{transform:translateY(-18px) scale(.8);transform-origin:center}
@media(max-width:700px){.brand-lockup{transform:translateY(max(-12px,calc(env(safe-area-inset-top,0px) - 46px))) scale(.8)}}
@media(max-height:600px){.brand-lockup{transform:translateY(-6px) scale(.8)}}
@media(max-height:600px) and (max-width:700px){.brand-lockup{transform:translateY(max(-6px,calc(env(safe-area-inset-top,0px) - 20px))) scale(.8)}}

/* Swipe everywhere; QR card previews are a desktop feature. */
.piece.is-draggable{pointer-events:auto;touch-action:pinch-zoom;user-select:none;-webkit-user-select:none;cursor:grab}
.piece.is-selectable{cursor:pointer}
@media(max-width:700px){.piece.is-draggable{cursor:default}}

.learn-how[hidden]{display:none}
