@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--night:#0f2742;--night-deep:#081a2e;--ink:#12304f;--cream:#fff8ec;--paper:#fffdf7;--sky-text:#a9c8e8;--gold:#f2c35b;--red:#d9474b;--red-dark:#a8323a;--teal-dark:#1f6f69;--muted:#66778a;--display:"Fraunces Variable", Georgia, serif;--body:"Nunito Variable", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(120% 90% at 50% 0%, #1b4068 0%, var(--night) 48%, var(--night-deep) 100%);color:var(--cream);font-family:var(--body);overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}button{font:inherit}:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.app{position:fixed;inset:0;overflow:hidden}.layer{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.stars{z-index:0}.globe{z-index:1}.sleigh{z-index:2;pointer-events:none;opacity:0;will-change:transform;width:clamp(110px,30vw,170px);position:absolute;top:0;left:0}.snow{z-index:3}.sleigh img,.intro-sleigh img{width:100%;height:auto;animation:1.6s ease-in-out infinite bob;display:block}@keyframes bob{50%{translate:0 -4px}}.btn{all:unset;box-sizing:border-box;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 18px;font-size:15px;font-weight:750;line-height:1.1;transition:scale .15s,background-color .2s;display:inline-flex}.btn:active{scale:.97}.btn svg{flex:none;width:20px;height:20px}.btn:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.btn[disabled]{opacity:.3;cursor:default}.btn-primary{background:var(--red);color:#fff;box-shadow:0 3px 0 var(--red-dark)}.btn-gold{background:var(--gold);color:var(--ink);box-shadow:0 3px #b88a2a}.btn-ghost{color:var(--cream);box-shadow:inset 0 0 0 1.5px #fff8ec59}.btn-big{min-height:56px;padding:0 36px;font-size:19px}.btn-small{gap:6px;min-height:36px;padding:0 12px;font-size:13px}.btn-small svg{width:16px;height:16px}.icon-btn{all:unset;cursor:pointer;width:42px;height:42px;color:inherit;border-radius:50%;flex:none;place-items:center;display:grid}.icon-btn svg{width:22px;height:22px}.icon-btn:hover{background:#12304f14}.icon-btn:focus-visible{outline:3px solid var(--gold)}.intro{z-index:4;padding:env(safe-area-inset-top) 16px 0;flex-direction:column;align-items:center;display:flex;position:absolute;inset:0}.intro-copy{z-index:1;text-align:center;flex-direction:column;align-items:center;gap:14px;padding-top:clamp(56px,11vh,120px);display:flex;position:relative}.intro-title{font-family:var(--display);letter-spacing:-.01em;text-wrap:balance;margin:0;font-size:clamp(31px,8.6vw,66px);font-weight:650;line-height:1.04}.intro-title .line{display:block}.intro-title .accent{color:var(--gold);font-style:italic}.intro-sub{color:var(--sky-text);margin:0;font-size:15px}.intro-reveal{opacity:0;transform:translateY(12px)}.intro .btn-big{margin-top:6px}.intro-globe{flex:1;width:100%;min-height:220px;margin:3vh 0 -16vh}.globe-grab{touch-action:none;cursor:grab}.globe-grab:active{cursor:grabbing}.intro-trail{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.intro-trail path{fill:none;stroke:#f2c35bbf;stroke-width:2px;stroke-linecap:round}.intro-sleigh{z-index:2;pointer-events:none;width:clamp(96px,26vw,160px);position:absolute;top:0;left:0;transform:translate(-400px,-400px)}.skip{all:unset;top:max(12px, env(safe-area-inset-top));z-index:3;color:var(--sky-text);cursor:pointer;border-radius:999px;padding:10px 14px;font-size:14px;font-weight:700;position:absolute;right:12px}.skip:hover{color:var(--cream)}.skip:focus-visible{outline:3px solid var(--gold)}.journey{z-index:4;touch-action:pan-y;display:grid;position:absolute;inset:0}.journey.narrow{padding:max(6px, env(safe-area-inset-top)) 16px max(14px, env(safe-area-inset-bottom));grid-template-rows:auto minmax(150px,1fr) auto auto auto;grid-template-areas:"top""globe""info""gifts""nav";gap:10px}.journey.wide{grid-template:"top top""globe."1fr"globe info""globe gifts""globe nav""globe."1fr"route route"/minmax(0,1.3fr) minmax(340px,.7fr);gap:16px 32px;padding:18px max(32px,4vw) 6px}.journey-top{grid-area:top}.journey.wide .journey-top{justify-content:space-between;align-items:center;display:flex}.brand{font-family:var(--display);margin:0;font-size:19px;font-weight:600}.journey-meta{justify-content:space-between;align-items:center;gap:16px;display:flex}.stop-count{color:var(--sky-text);font-size:13px}.journey-globe{grid-area:globe;min-height:0}.journey-globe.pick{cursor:pointer}.stop-info{text-align:center;grid-area:info;min-height:104px}.journey.wide .stop-info{text-align:left;min-height:150px}.stop-name{letter-spacing:.12em;text-transform:uppercase;color:var(--sky-text);margin:0;font-size:13px;font-weight:800}.stop-place{color:var(--gold)}.greeting{font-family:var(--display);text-wrap:balance;margin:4px 0 0;font-size:clamp(32px,9.5vw,46px);font-weight:650;line-height:1.08}.journey.wide .greeting{font-size:clamp(44px,4.6vw,68px)}.romanized{color:var(--cream);opacity:.85;margin:0;font-size:15px}.greeting-note{color:var(--sky-text);margin:4px 0 0;font-size:14px}.flying{font-family:var(--display);color:var(--sky-text);margin:12px 0 0;font-size:20px;font-style:italic}.gift-type{letter-spacing:.04em;text-transform:uppercase;color:var(--teal-dark);align-items:center;gap:6px;font-size:12px;font-weight:800;display:inline-flex}.gift-type svg{width:16px;height:16px}.gifts{--box:92px;grid-area:gifts;justify-content:center;align-items:flex-end;gap:clamp(24px,10vw,56px);padding-top:40px;transition:opacity .3s;display:flex}.journey.wide .gifts{--box:124px;justify-content:flex-start;padding-top:52px}.gifts.waiting{opacity:0;pointer-events:none}.gift-box{all:unset;box-sizing:border-box;cursor:pointer;text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.gift-box:focus-visible{outline:3px solid var(--gold);outline-offset:6px;border-radius:14px}.box-art{width:var(--box);height:var(--box);margin-bottom:4px;transition:scale .15s;position:relative}.gift-box:active .box-art{scale:.94}.box-art img{filter:drop-shadow(0 10px 14px #020a1673);height:auto;position:absolute;bottom:0;left:50%;translate:-50%}.box-closed{transform-origin:50% 100%;width:100%;animation:3.6s ease-in-out infinite nudge}.box-open{opacity:0;width:98%}.gift-box.is-open .box-closed{opacity:0;animation:none}.gift-box.is-open .box-open{opacity:1}.gift-box+.gift-box .box-closed{animation-delay:-1.8s}@keyframes nudge{0%,78%,to{rotate:0deg}83%{rotate:-5deg}88%{rotate:4deg}93%{rotate:-2deg}}.spark{width:16px;height:16px;color:var(--gold);opacity:0;pointer-events:none;margin:-8px;position:absolute;top:30%;left:50%}.gift-box .gift-type{color:var(--sky-text);white-space:nowrap}.gift-cta{background:var(--red);color:#fff;white-space:nowrap;box-shadow:0 3px 0 var(--red-dark);border-radius:999px;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:800;display:inline-flex}.gift-cta svg{width:16px;height:16px}.gift-box.is-open .gift-cta{color:var(--gold);background:0 0;box-shadow:inset 0 0 0 1.5px}@media (height<=700px){.journey.narrow .gifts{--box:72px;padding-top:30px}.journey.narrow .stop-info{min-height:92px}.journey.narrow .greeting{font-size:clamp(28px,8vw,38px)}}.stop-nav{grid-area:nav;justify-content:space-between;gap:10px;display:flex}.stop-nav .btn-ghost{max-width:44%;padding:0 14px 0 12px}.stop-nav .btn-gold,.stop-nav .btn-primary{max-width:56%;padding:0 12px 0 18px}.nav-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.route{margin:0;padding:0;list-style:none;display:flex}.route button{all:unset;cursor:pointer}.route-bar{gap:3px}.route-bar li{flex:1}.route-bar button{width:100%;padding:8px 0 7px;display:block}.route-bar .mark{background:#a9c8e847;border-radius:2px;height:3px;display:block}.route-bar .past .mark{background:#f2c35bbf}.route-bar .current .mark{background:var(--gold);box-shadow:0 0 8px #f2c35bcc}.route-dots{grid-area:route;padding:26px 10px 12px}.route-dots li{flex:1;justify-content:center;display:flex;position:relative}.route-dots li+li:before{content:"";background:#a9c8e840;height:2px;margin-top:-1px;position:absolute;top:50%;left:-50%;right:50%}.route-dots li.past:before,.route-dots li.current:before{background:#f2c35bbf}.route-dots button{z-index:1;border-radius:50%;padding:8px;position:relative}.route-dots .mark{width:10px;height:10px;box-shadow:0 0 0 3px var(--night);background:#2f5c88;border-radius:50%;display:block}.route-dots .past .mark{background:var(--gold)}.route-dots .current .mark{background:var(--red);width:14px;height:14px;box-shadow:0 0 0 3px var(--cream), 0 0 0 6px var(--night);margin:-2px}.route-label{background:var(--paper);color:var(--ink);white-space:nowrap;opacity:0;pointer-events:none;border-radius:7px;padding:3px 9px;font-size:12px;font-weight:700;transition:opacity .15s;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.route-dots button:hover .route-label,.route-dots button:focus-visible .route-label,.route-dots .current .route-label{opacity:1}.overlay{z-index:20;background:#050e1a9e;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.stop-list{background:var(--paper);width:100%;max-width:640px;max-height:86dvh;color:var(--ink);border-radius:22px 22px 0 0;flex-direction:column;display:flex}@media (width>=700px){.overlay{align-items:center}.stop-list{border-radius:22px;max-height:80vh}}.stop-list header{justify-content:space-between;align-items:center;padding:14px 12px 6px 20px;display:flex}.stop-list h2{font-family:var(--display);margin:0;font-size:23px}.stop-list ol{padding:4px 10px max(16px, env(safe-area-inset-bottom));grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:2px 8px;margin:0;list-style:none;display:grid;overflow-y:auto}.stop-list li button{all:unset;box-sizing:border-box;cursor:pointer;border-radius:12px;grid-template-columns:30px minmax(0,1fr) auto auto;align-items:center;gap:10px;width:100%;padding:9px 10px;display:grid}.stop-list li button:hover{background:#f5eedf}.stop-list li button.current{background:#fbe8cc}.stop-list li button:focus-visible{outline:3px solid var(--gold)}.stop-list .num{background:var(--night);width:30px;height:30px;color:var(--cream);border-radius:50%;place-items:center;font-size:13px;font-weight:800;display:grid}.stop-list .name{font-weight:750}.stop-list .name small{color:var(--muted);font-size:12px;font-weight:600;display:block}.stop-list .types{color:var(--teal-dark);gap:4px;display:flex}.stop-list .types svg,.stop-list .seen svg{width:18px;height:18px}.stop-list .seen{color:var(--teal-dark)}.gift-layer{z-index:30;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.gift-layer.wide{align-items:center}.sheet-backdrop{background:#050e1a9e;position:absolute;inset:0}.sheet{width:100%;max-width:720px;height:calc(100dvh - max(36px, env(safe-area-inset-top)));background:var(--paper);color:#26313d;border-radius:22px 22px 0 0;flex-direction:column;display:flex;position:relative;overflow:hidden}.gift-layer.wide .sheet{border-radius:22px;height:min(88vh,920px);box-shadow:0 30px 80px #00000073}.sheet-head{justify-content:space-between;align-items:center;padding:10px 10px 2px 22px;display:flex}.sheet-body{overscroll-behavior:contain;flex:1;padding:2px 22px 24px;overflow-y:auto}.gift-layer.wide .sheet-body{padding:4px 48px 32px}.sheet-body h2{font-family:var(--display);color:var(--ink);text-wrap:balance;margin:4px 0 16px;font-size:clamp(25px,6.6vw,36px);font-weight:650;line-height:1.15}.sheet-body p{text-wrap:pretty;margin:0 0 12px;font-size:17px;line-height:1.65}.sheet-body h3{font-family:var(--display);color:var(--red-dark);margin:22px 0 8px;font-size:19px;font-weight:650}.sheet-body ul,.sheet-body ol{margin:0 0 14px;padding-left:22px;font-size:17px;line-height:1.6}.sheet-body li+li{margin-top:6px}.block-verse{margin:0 0 16px}.block-verse p{margin:0;font-style:italic}.block-img{max-width:min(100%,340px);height:auto;margin:10px auto 18px;display:block}.sheet-wait{color:var(--muted)}.source{color:var(--muted);border-top:1px solid #e8dfcb;padding-top:12px;margin-top:22px!important;font-size:14px!important}.sheet-foot{padding:12px 16px max(12px, env(safe-area-inset-bottom));border-top:1px solid #eee5d3;gap:10px;display:flex}.sheet-foot .btn{flex:1;padding:0 12px}.sheet-foot .btn-ghost{color:var(--ink);box-shadow:inset 0 0 0 1.5px #cfc09f}.gift-layer.wide .sheet-foot{justify-content:flex-end;padding:14px 24px}.gift-layer.wide .sheet-foot .btn{flex:none;padding:0 22px}.pages{z-index:40;background:#0b1b2e;position:fixed;inset:0}.pages-scroll{padding:60px 0 24px;position:absolute;inset:0;overflow:auto}.pages-scroll img{width:100%;max-width:900px;height:auto;margin:0 auto 12px;display:block}.pages-close{top:max(8px, env(safe-area-inset-top));z-index:1;color:var(--ink);background:#fff8eceb;position:absolute;right:8px}.finale{z-index:4;padding:max(32px, env(safe-area-inset-top)) 20px max(20px, env(safe-area-inset-bottom));text-align:center;flex-direction:column;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.finale h1{font-family:var(--display);text-wrap:balance;margin:0;font-size:clamp(28px,7vw,54px);font-weight:650;line-height:1.1}.finale-copy p{max-width:34em;color:var(--sky-text);margin:8px auto 0}.finale-globe{flex:1;width:100%;min-height:180px}.finale.narrow{gap:6px;padding-left:12px;padding-right:12px}.finale.narrow h1{font-size:clamp(26px,7.6vw,34px)}.finale.narrow .finale-copy p{margin-top:4px;font-size:15px}.finale.narrow .finale-globe{min-height:260px}.finale.narrow .more-gifts{gap:10px;margin-bottom:12px;padding:8px 14px 8px 10px}.finale.narrow .more-gifts img{width:42px}.finale.narrow .more-gifts strong{font-size:16px}.finale.narrow .more-gifts>span{font-size:13px}.finale-books ul{flex-wrap:wrap;justify-content:center;gap:8px;margin:0 0 14px;padding:0;list-style:none;display:flex}.finale-books li{background:#fff8ec14;border:1px solid #fff8ec38;border-radius:999px;padding:6px 12px;font-size:14px}.about-btn{all:unset;cursor:pointer;width:36px;height:36px;color:var(--sky-text);opacity:.8;border-radius:50%;flex:none;place-items:center;display:grid}.about-btn svg{width:20px;height:20px}.about-btn:hover{opacity:1;color:var(--cream)}.about-btn:focus-visible{outline:3px solid var(--gold)}.about-corner{top:max(10px, env(safe-area-inset-top));z-index:3;position:absolute;left:10px}.meta-actions{align-items:center;gap:4px;display:flex}.about-panel{background:var(--paper);color:#26313d;text-align:left;border-radius:22px 22px 0 0;flex-direction:column;width:100%;max-width:520px;max-height:86dvh;display:flex}@media (width>=700px){.about-panel{border-radius:22px}}.about-panel header{justify-content:space-between;align-items:center;padding:14px 12px 4px 22px;display:flex}.about-panel h2{font-family:var(--display);color:var(--ink);margin:0;font-size:23px}.about-body{padding:4px 22px max(20px, env(safe-area-inset-bottom));font-size:16px;line-height:1.55;overflow-y:auto}.about-body h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:18px 0 8px;font-size:13px;font-weight:800}.about-body p{margin:0}.about-body a{color:var(--red-dark);font-weight:700}.about-body ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.about-body li a{color:#26313d;background:#f5eedf;border-radius:14px;gap:2px;padding:12px 14px;font-weight:400;text-decoration:none;display:grid}.about-body li a:hover{background:#f0e5cf}.about-body li strong{color:var(--ink)}.about-body li span{font-size:14px}.about-body li small{color:var(--red-dark);font-size:13px;font-weight:700}.more-gifts{background:var(--paper);max-width:440px;color:var(--ink);text-align:left;border-radius:18px;align-items:center;gap:12px;margin:0 auto 14px;padding:10px 16px 10px 12px;text-decoration:none;display:flex;box-shadow:0 8px 28px #020a1659}.more-gifts img{flex:none;width:52px;height:auto}.more-gifts>span{gap:2px;font-size:14px;line-height:1.35;display:grid}.more-gifts strong{font-family:var(--display);font-size:18px}.more-gifts>svg{width:22px;height:22px;color:var(--red);flex:none}.more-gifts:focus-visible{outline:3px solid var(--gold);outline-offset:3px}@media (prefers-reduced-motion:reduce){.sleigh img,.intro-sleigh img,.gift-card:not(.done) .gift-cta svg{animation:none}}
