:root{color-scheme:light;font-family:DM Mono,monospace;--ink: #71384d;--ink-soft: #966376;--rose: #d65272;--rose-dark: #ac3d5d;--rose-light: #f2a8ba;--paper: #fffaf7;--paper-deep: #faefec;--blush: #f9dde3;--line: rgba(185, 86, 111, .19);--shadow: rgba(113, 56, 77, .15)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;color:var(--ink);background:#f5d8df}button{color:inherit;font:inherit}button,a{-webkit-tap-highlight-color:transparent}.app{position:relative;display:grid;min-height:100svh;place-items:center;overflow:hidden;isolation:isolate;padding:32px;background:radial-gradient(circle at 52% 38%,rgba(255,252,249,.92) 0,rgba(255,247,246,.54) 26%,transparent 52%),linear-gradient(145deg,#fae7e8,#f5d5de 48%,#f8e3dc)}.app:before,.app:after{position:absolute;z-index:-4;width:min(46vw,610px);aspect-ratio:1;border:1px solid rgba(197,101,126,.12);border-radius:50%;content:""}.app:before{top:-31vw;left:-12vw;box-shadow:0 0 0 45px #ffffff0f,0 0 0 90px #ffffff0a}.app:after{right:-25vw;bottom:-31vw;box-shadow:0 0 0 52px #ffffff12}.grain{position:absolute;z-index:20;inset:0;opacity:.21;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.88' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E");mix-blend-mode:multiply}.ambient{position:absolute;z-index:-3;inset:0;pointer-events:none}.ambient i{position:absolute;display:block;width:7px;height:7px;border:1px solid rgba(190,75,106,.28);transform:rotate(45deg)}.ambient i:nth-child(1){top:18%;left:15%}.ambient i:nth-child(2){top:30%;right:12%;width:4px;height:4px}.ambient i:nth-child(3){right:18%;bottom:17%;width:10px;height:10px}.background-friends{position:fixed;z-index:-2;inset:0;overflow:hidden;pointer-events:none}.background-friend{position:absolute;top:0;left:0;overflow:visible;opacity:.21;backface-visibility:hidden;transform-origin:0 0;will-change:transform}.background-friend-art{display:block;width:100%;height:100%;overflow:visible}.background-friend path,.background-friend circle{fill:none;stroke:#b95070;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.background-friend .miffy-silhouette{fill:#fce7e8;stroke:#b95070}.background-friend .miffy-eye{fill:#b95070;stroke:none}.background-friend.bunny{width:104px;height:130px;filter:drop-shadow(0 5px 0 rgba(132,49,75,.08))}.background-friend .x-mouth{stroke-width:4}.background-friend.corgi{width:116px;height:123px;opacity:.2;filter:drop-shadow(0 5px 0 rgba(132,49,75,.08))}.background-friend.corgi path,.background-friend.corgi circle{stroke:#9c6152;stroke-width:3.8}.background-friend.corgi .corgi-face-fill{fill:url(#corgi-fur)}.background-friend.corgi .corgi-ear-fill{fill:#dda06c}.background-friend.corgi .corgi-inner-ear{fill:#efc1ad;stroke:none}.background-friend.corgi .corgi-blaze,.background-friend.corgi .corgi-muzzle{fill:#fff2df;stroke:none}.background-friend.corgi .corgi-nose{fill:#4b3432;stroke:none}.background-friend.corgi .corgi-eye{fill:#553b33;stroke:#7d4d41;stroke-width:2}.background-friend.corgi .corgi-eye-shine{fill:#fffaf7;stroke:none}.background-friend.corgi .corgi-mouth,.background-friend.corgi .corgi-brow{fill:none;stroke-width:2.7}.login-card{position:relative;z-index:3;width:min(420px,calc(100vw - 36px));padding:42px 40px 29px;border:1px solid rgba(196,105,128,.28);border-radius:20px;background:#fffaf7ed;box-shadow:0 30px 75px #742f4629,inset 0 3px #ffffffbf;text-align:center;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:card-reveal .7s cubic-bezier(.16,1,.3,1) both}.login-card:before{position:absolute;inset:12px;border:1px dashed rgba(197,111,132,.17);border-radius:13px;pointer-events:none;content:""}.login-bunny{display:block;width:65px;height:82px;margin:0 auto 22px;overflow:visible;filter:drop-shadow(0 5px 0 rgba(132,49,75,.05))}.login-bunny .miffy-silhouette{fill:#fffaf7;stroke:#c65b77;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.login-bunny .miffy-eye{fill:#9e4560}.login-bunny .x-mouth{fill:none;stroke:#9e4560;stroke-width:4.5;stroke-linecap:round}.login-card h1{margin:12px 0 0;font-size:46px}.login-copy{width:min(280px,100%);margin:16px auto 24px;color:#966b79;font-size:9px;line-height:1.7}.login-card form{position:relative;z-index:1;display:grid;gap:12px;text-align:left}.login-card label span{display:block;margin:0 0 6px 2px;color:#aa7181;font-size:7px;letter-spacing:.13em;text-transform:uppercase}.login-card input{width:100%;height:45px;padding:0 14px;border:1px solid #e8bdc7;border-radius:10px;outline:none;color:var(--ink);background:#fff9;font:12px DM Mono,monospace;transition:border .2s ease,box-shadow .2s ease}.login-card input:focus{border-color:var(--rose);box-shadow:0 0 0 3px #d652721a}.login-card form>button{height:45px;margin-top:3px;cursor:pointer;border:0;border-radius:999px;color:#fff;background:var(--rose);box-shadow:0 8px 18px #b53b5b36;font-size:8px;letter-spacing:.07em;transition:transform .2s ease,background .2s ease}.login-card form>button:hover:not(:disabled){background:var(--rose-dark);transform:translateY(-2px)}.login-card form>button:disabled{cursor:wait;opacity:.65}.login-card form>button span{margin-left:6px}.login-error{margin:0;color:#b64262;font-size:8px;line-height:1.5;text-align:center}.login-footnote{position:relative;z-index:1;margin:19px 0 0;color:#b98a98;font:italic 9px Playfair Display,serif}.intro{width:min(650px,100%);text-align:center;animation:intro-arrive .8s cubic-bezier(.16,1,.3,1) both}.intro-copy{position:relative;z-index:2}.eyebrow{margin:0;color:#ad6479;font-size:9px;font-weight:500;letter-spacing:.2em;text-transform:uppercase}.intro .eyebrow{display:flex;align-items:center;justify-content:center;gap:12px}.intro .eyebrow span{display:block;width:27px;height:1px;background:#dba4b2}h1{margin:18px 0 0;font:500 clamp(48px,7vw,76px) / .91 "Playfair Display",serif;letter-spacing:-.058em}h1 em{color:var(--rose);font-weight:500}.subhead{width:min(340px,90%);margin:22px auto 0;color:var(--ink-soft);font-size:11px;line-height:1.8}.flight-stage{position:relative;width:min(520px,100%);height:295px;margin:-2px auto 0}.flight-path{position:absolute;inset:16px 22px auto;width:calc(100% - 44px);overflow:visible}.flight-path path{fill:none;stroke:#d992a5;stroke-width:1.2;stroke-dasharray:4 7;stroke-linecap:round;opacity:.62;animation:draw-path 1.5s ease both}.plane{position:absolute;top:65px;left:50%;width:86px;height:52px;background:#fffdf9;clip-path:polygon(0 48%,100% 0,67% 100%,48% 62%);filter:drop-shadow(4px 8px 7px rgba(135,53,77,.16));transform:translate(-340px,25px) rotate(-13deg);animation:fly-in 1.55s cubic-bezier(.15,.9,.3,1) .15s forwards,plane-fold .55s ease 1.84s forwards}.plane:after{position:absolute;top:23px;left:2px;width:72px;height:1px;background:#e9b7c0;transform:rotate(-28deg);transform-origin:left;content:""}.plane span{position:absolute;right:15px;bottom:7px;width:31px;height:24px;background:#f8d6db;clip-path:polygon(0 0,100% 100%,0 100%)}.ribbon{position:absolute;top:104px;left:calc(50% - 39px);width:76px;height:52px;opacity:0;animation:ribbon-show .5s ease 1.68s both,ribbon-hide .35s ease 2.12s forwards}.ribbon b{position:absolute;top:2px;left:23px;width:30px;height:30px;border-radius:50%;background:#c13c5e;box-shadow:inset -5px -4px #6f182f21}.ribbon i{position:absolute;top:26px;left:18px;width:17px;height:29px;background:#cd4968;clip-path:polygon(0 0,100% 0,72% 100%,42% 74%,0 100%);transform:rotate(17deg)}.ribbon i:nth-child(2){left:41px;transform:scaleX(-1) rotate(17deg)}.envelope{position:absolute;top:119px;left:50%;width:210px;height:140px;padding:0;cursor:pointer;border:0;background:transparent;filter:drop-shadow(0 18px 16px rgba(132,48,75,.18));opacity:0;pointer-events:none;transform:translate(-50%) scale(.62);animation:envelope-arrive .65s cubic-bezier(.16,1,.3,1) 2.18s forwards}.envelope:hover{filter:drop-shadow(0 22px 19px rgba(132,48,75,.24))}.envelope:hover .wax-seal{transform:translate(-50%) scale(1.1) rotate(-4deg)}.envelope:focus-visible{outline:2px solid var(--rose-dark);outline-offset:10px;border-radius:8px}.envelope-paper{position:absolute;top:11px;left:26px;width:158px;height:108px;border-radius:3px;background:#fffaf7;box-shadow:0 1px 2px #69253a1a}.envelope-paper i{display:block;padding-top:26px;color:#c05270;font:italic 18px Playfair Display,serif}.envelope-body{position:absolute;z-index:2;inset:0;overflow:hidden;border-radius:5px;background:#f2a8ba}.envelope-body:before,.envelope-body:after{position:absolute;bottom:-68px;width:148px;height:148px;border:1px solid rgba(180,68,98,.24);background:#f6b7c6;content:""}.envelope-body:before{left:-73px;transform:rotate(45deg)}.envelope-body:after{right:-73px;transform:rotate(45deg)}.envelope-flap{position:absolute;z-index:3;inset:0;border-radius:5px;background:#f9c2ce;clip-path:polygon(0 0,50% 59%,100% 0)}.wax-seal{position:absolute;z-index:4;top:57px;left:50%;display:grid;width:31px;height:31px;place-items:center;border-radius:50%;color:#fff6f5;background:#bd3859;box-shadow:0 3px 4px #771b3538,inset 0 0 0 2px #ffffff1f;font-size:13px;transform:translate(-50%);transition:transform .25s ease}.open-hint{position:absolute;top:165px;left:0;width:100%;color:#a85e73;font-size:8px;letter-spacing:.16em;text-transform:uppercase;opacity:0;animation:hint-in .5s ease 2.85s forwards}.open-hint b{display:inline-block;margin-left:5px;font-size:12px;transition:transform .2s ease}.envelope:hover .open-hint b{transform:translate(2px,-2px)}.intro-signature{margin:-4px 0 0;color:#b68291;font:italic 11px Playfair Display,serif;letter-spacing:.04em}.particle-burst{position:absolute;z-index:4;top:50%;left:50%;width:0;height:0;pointer-events:none}.particle-burst i{position:absolute;display:grid;width:var(--size);height:var(--size);place-items:center;border-radius:50%;color:#cf4e6d;background:#e988a1;font-style:normal;font-size:calc(var(--size) * 1.5);transform:translate(-50%,-50%);animation:particle-out 1s cubic-bezier(.18,.8,.35,1) var(--delay) both}.particle-burst i:nth-child(3n){background:#f7c767}.particle-burst i:nth-child(3n+1){background:#fff9f4}.particle-burst .heart{background:transparent}.memory-card{position:relative;z-index:3;width:min(910px,calc(100vw - 48px));max-height:calc(100svh - 62px);overflow:auto;padding:30px 34px 25px;border:1px solid rgba(196,105,128,.28);border-radius:18px;background:linear-gradient(#fffaf7f0,#fffaf7f0),repeating-linear-gradient(0deg,transparent 0 24px,rgba(199,115,137,.06) 24px 25px);box-shadow:0 30px 80px #742f4629,0 3px #fffc inset;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);scrollbar-width:thin;scrollbar-color:#e3a5b4 transparent;animation:card-reveal .72s cubic-bezier(.16,1,.3,1) .14s both}.archive-shell{position:relative;z-index:3;display:flex;width:min(910px,calc(100vw - 48px));max-height:calc(100svh - 36px);flex-direction:column;gap:12px}.archive-shell .memory-card{width:100%;max-height:calc(100svh - 116px)}.section-navigation{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;width:min(570px,100%);margin:0 auto;padding:6px;border:1px solid rgba(196,105,128,.28);border-radius:18px;background:#fffaf7e6;box-shadow:0 13px 32px #742f4621;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:card-reveal .6s cubic-bezier(.16,1,.3,1) .22s both}.section-navigation button{display:flex;min-width:0;padding:9px 12px;cursor:pointer;align-items:center;justify-content:center;gap:7px;border:0;border-radius:12px;color:#a16c7d;background:transparent;font-size:8px;letter-spacing:.05em;transition:color .2s ease,background .2s ease,transform .2s ease}.section-navigation button span{font-size:14px}.section-navigation button:hover{color:var(--rose-dark);transform:translateY(-1px)}.section-navigation button.active{color:#fff;background:var(--rose);box-shadow:0 5px 12px #b53b5b33}.feature-card{position:relative;width:100%;max-height:calc(100svh - 116px);overflow:auto;padding:34px;border:1px solid rgba(196,105,128,.28);border-radius:18px;background:linear-gradient(#fffaf7f2,#fffaf7f2),repeating-linear-gradient(0deg,transparent 0 24px,rgba(199,115,137,.06) 24px 25px);box-shadow:0 30px 80px #742f4629,0 3px #fffc inset;scrollbar-width:thin;scrollbar-color:#e3a5b4 transparent;animation:card-reveal .55s cubic-bezier(.16,1,.3,1) both}.feature-card:before{position:absolute;top:12px;left:12px;width:11px;height:11px;border-top:1px solid #dca2b1;border-left:1px solid #dca2b1;content:""}.feature-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:27px}.feature-heading h2{margin:9px 0 0;font:500 clamp(28px,3.6vw,42px) / 1.05 "Playfair Display",serif;letter-spacing:-.04em}.feature-stamp{flex:0 0 auto;padding:8px 11px;border:1px solid #e4afbb;border-radius:3px;color:#bd7286;font-size:7px;letter-spacing:.12em;text-transform:uppercase;transform:rotate(2deg)}.trip-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.trip-card{position:relative;width:100%;min-height:338px;overflow:hidden;padding:24px 20px 20px;cursor:pointer;border:1px solid rgba(177,91,112,.15);border-radius:10px;color:inherit;background:#fce9e5;box-shadow:0 12px 25px #70364814;font:inherit;text-align:left;transition:transform .25s ease,box-shadow .25s ease}.trip-card:hover,.trip-card:focus-visible{box-shadow:0 16px 28px #7036481f;transform:translateY(-4px) rotate(-.4deg)}.trip-card:focus-visible{outline:2px solid var(--rose);outline-offset:3px}.trip-card.rose{background:#f9e0e7}.trip-card.lavender{background:#eee5f3}.trip-number{position:absolute;top:12px;right:14px;color:#914b5f4a;font:500 30px Playfair Display,serif}.trip-icon{display:grid;width:43px;height:43px;margin-bottom:34px;place-items:center;border:1px solid rgba(184,91,113,.3);border-radius:50%;color:var(--rose);background:#fffaf7a3;font-size:16px}.trip-date{margin:0 0 8px;color:#b56e82;font-size:7px;letter-spacing:.14em;text-transform:uppercase}.trip-card h3{min-height:54px;margin:0;font:500 23px/1.08 Playfair Display,serif;letter-spacing:-.025em}.trip-note{min-height:50px;margin:14px 0 17px;color:#8f6372;font-size:9px;line-height:1.65}.trip-card ul{display:grid;gap:8px;margin:0;padding:14px 0 0;border-top:1px solid rgba(174,94,114,.17);list-style:none}.trip-card li{display:flex;gap:8px;color:#9c7280;font-size:8px;line-height:1.4}.trip-card li span{color:var(--rose)}.view-trip{display:flex;margin-top:18px;align-items:center;justify-content:flex-end;gap:7px;color:#a85d73;font-size:7px;letter-spacing:.12em;text-transform:uppercase}.view-trip b{font-size:13px;transition:transform .2s ease}.trip-card:hover .view-trip b{transform:translate(3px)}.trip-heading-actions{display:flex;align-items:center;gap:10px}.add-trip-button{display:flex;padding:8px 11px;cursor:pointer;align-items:center;gap:5px;border:1px solid #e2aab8;border-radius:999px;color:#a85d73;background:#fff8f6;font-size:7px;letter-spacing:.08em;text-transform:uppercase}.add-trip-button span{font-size:12px}.private-edit-note{margin:22px 0 0;color:#ad7d8b;font:italic 11px Playfair Display,serif;text-align:right}.private-edit-note span{color:var(--rose)}.trip-modal-backdrop{position:fixed;z-index:50;display:grid;inset:0;padding:24px;place-items:center;background:#56293a4d;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);animation:modal-fade .25s ease both}.trip-modal{position:relative;width:min(570px,100%);max-height:min(720px,calc(100svh - 40px));overflow:auto;padding:42px;border:1px solid #e7b7c2;border-radius:20px;background:#fffaf7;box-shadow:0 30px 90px #5725373d;animation:modal-arrive .35s cubic-bezier(.16,1,.3,1) both}.modal-close{position:absolute;top:15px;right:15px;display:grid;width:34px;height:34px;padding:0;cursor:pointer;place-items:center;border:1px solid #e8bdc7;border-radius:50%;color:#a65d72;background:#fff;font-size:18px}.modal-trip-icon{display:grid;width:58px;height:58px;margin-bottom:28px;place-items:center;border:1px solid #e3adba;border-radius:50%;color:var(--rose);background:#fce9e5;font-size:22px}.modal-trip-icon.rose{background:#f9e0e7}.modal-trip-icon.lavender{background:#eee5f3}.trip-modal>h3,.trip-form h3{margin:8px 0 18px;font:500 clamp(31px,6vw,45px) / 1.06 "Playfair Display",serif;letter-spacing:-.04em}.modal-trip-note{margin:0;color:#8f6372;font:500 18px/1.55 Playfair Display,serif}.trip-checklist{margin-top:27px;padding:22px;border:1px solid #edd0d6;border-radius:13px;background:#fdf1ef}.trip-checklist>p{margin:0 0 15px;color:#b66d82;font-size:7px;letter-spacing:.14em;text-transform:uppercase}.trip-checklist ul{display:grid;gap:11px;margin:0;padding:0;list-style:none}.trip-checklist li{display:flex;gap:10px;color:#8f6875;font-size:9px;line-height:1.5}.trip-checklist li span{color:var(--rose)}.owner-edit-button{display:flex;margin:22px 0 0 auto;padding:10px 15px;cursor:pointer;align-items:center;gap:8px;border:1px solid #e3b1bd;border-radius:999px;color:#a95d73;background:#fff;font-size:8px}.trip-form{display:grid;gap:15px}.trip-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.trip-form label>span{display:block;margin:0 0 7px 2px;color:#aa7181;font-size:7px;letter-spacing:.13em;text-transform:uppercase}.trip-form input,.trip-form textarea{width:100%;padding:12px 13px;resize:vertical;border:1px solid #e8bdc7;border-radius:10px;outline:none;color:var(--ink);background:#fff;font:10px/1.6 DM Mono,monospace}.trip-form input:focus,.trip-form textarea:focus{border-color:var(--rose);box-shadow:0 0 0 3px #d652721a}.trip-form-actions{display:flex;justify-content:flex-end;gap:9px}.trip-form-actions button{padding:10px 16px;cursor:pointer;border:1px solid #e2adba;border-radius:999px;color:#a45e72;background:#fff;font-size:8px}.trip-form-actions button[type=submit]{color:#fff;border-color:var(--rose);background:var(--rose)}.trip-form-actions button:disabled{cursor:wait;opacity:.6}.trip-save-message{margin:0;color:#a06a7a;font-size:8px;line-height:1.55}.trip-save-message.error{color:#b43f5d}.trip-save-message.saved{color:#698d72}.mood-picker{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}.mood-picker button{padding:8px 13px;cursor:pointer;border:1px solid #e5b5c1;border-radius:999px;color:#a66d7e;background:transparent;font-size:8px;transition:color .2s ease,background .2s ease}.mood-picker button.active{color:#fff;border-color:var(--rose);background:var(--rose)}.generated-date{position:relative;display:grid;min-height:330px;overflow:hidden;padding:48px 60px;place-items:center;border:1px solid #e3aebc;border-radius:14px;background:radial-gradient(circle at 10% 15%,rgba(255,255,255,.8),transparent 25%),linear-gradient(135deg,#f9e1e5,#f8eee9);text-align:center;animation:memory-change .45s cubic-bezier(.16,1,.3,1) both}.generated-date:before,.generated-date:after{position:absolute;top:0;bottom:0;width:9px;background:radial-gradient(circle,var(--paper) 0 3px,transparent 3.5px) 0 4px / 9px 18px repeat-y;content:""}.generated-date:before{left:-4px}.generated-date:after{right:-4px}.idea-tag{margin:0;color:#bb7185;font-size:8px;letter-spacing:.17em;text-transform:uppercase}.idea-heart{color:var(--rose);font:37px Playfair Display,serif}.generated-date h3{margin:0;font:500 clamp(32px,4vw,47px) / 1.04 "Playfair Display",serif;letter-spacing:-.04em}.generated-date>p:not(.idea-tag){width:min(490px,100%);margin:0;color:#8f6473;font-size:10px;line-height:1.8}.ticket-code{color:#bf8797;font-size:7px;letter-spacing:.13em}.generate-button{display:flex;margin:18px auto 0;padding:11px 18px;cursor:pointer;align-items:center;gap:9px;border:0;border-radius:999px;color:#fff;background:var(--rose);box-shadow:0 8px 17px #b53b5b33;font-size:8px;letter-spacing:.06em;transition:transform .2s ease,background .2s ease}.generate-button:hover{background:var(--rose-dark);transform:translateY(-2px)}.generate-button span{font-size:14px}.date-actions{display:flex;margin-top:18px;align-items:center;justify-content:center;gap:10px}.date-actions .generate-button{margin:0}.save-date-button{display:flex;padding:11px 18px;cursor:pointer;align-items:center;gap:7px;border:1px solid #dda6b4;border-radius:999px;color:#a6556d;background:#fff8f5;box-shadow:0 7px 15px #8c3e5417;font-size:8px;letter-spacing:.04em;transition:transform .2s ease,background .2s ease}.save-date-button:hover:not(:disabled){background:#fbe6e8;transform:translateY(-2px)}.save-date-button:disabled{cursor:wait;opacity:.6}.save-date-button span{font-size:13px}.date-history-message{margin:12px 0 0;color:#9a6b78;font-size:8px;text-align:center}.date-history-message.saved{color:#718d76}.date-history-message.error{color:#b64262}.date-history{margin-top:30px;padding-top:27px;border-top:1px solid #edcbd2}.date-history-heading{display:flex;margin-bottom:20px;align-items:flex-start;justify-content:space-between}.date-history-heading h3{margin:7px 0 0;font:500 27px/1.1 Playfair Display,serif;letter-spacing:-.03em}.date-history-heading>span{color:var(--rose);font:29px Playfair Display,serif}.date-history-layout{display:grid;grid-template-columns:minmax(290px,.85fr) minmax(0,1.15fr);gap:16px}.calendar,.selected-date-list{border:1px solid #ead0d5;border-radius:14px;background:#fff8f5}.calendar{padding:16px}.calendar-heading{display:grid;grid-template-columns:31px 1fr 31px;align-items:center;gap:6px}.calendar-heading>button{display:grid;width:31px;height:31px;padding:0;cursor:pointer;place-items:center;border:1px solid #e5bac4;border-radius:50%;color:#a75c72;background:#fff}.calendar-heading>p{margin:0;font:500 18px Playfair Display,serif;text-align:center}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-weekdays{margin:15px 0 7px}.calendar-weekdays span{color:#bc8796;font-size:7px;text-align:center}.calendar-grid{gap:4px}.calendar-grid>span,.calendar-grid>button{aspect-ratio:1}.calendar-grid>button{position:relative;display:grid;min-width:0;padding:0;cursor:pointer;place-items:center;border:0;border-radius:50%;color:#936775;background:transparent;font-size:8px}.calendar-grid>button:hover{background:#f8e7e9}.calendar-grid>button.has-date{color:#9c4861;background:#f4cbd5;box-shadow:inset 0 0 0 1px #bc5b7326;font-weight:700}.calendar-grid>button.selected{color:#fff;background:var(--rose);box-shadow:0 4px 9px #ab3a5833}.calendar-grid>button i{position:absolute;top:-2px;right:-1px;display:grid;width:12px;height:12px;place-items:center;border:1px solid #fff7f5;border-radius:50%;color:#fff;background:#c7647e;font: 6px DM Mono,monospace}.selected-date-list{min-height:315px;padding:25px}.selected-date-label{margin:0 0 7px;color:#bd7185;font-size:8px;letter-spacing:.14em}.selected-date-list h4{margin:0 0 18px;font:500 27px Playfair Display,serif}.selected-date-list ul{display:grid;gap:10px;margin:0;padding:0;list-style:none}.selected-date-list li{position:relative;display:flex;gap:11px;padding:13px 43px 13px 13px;border:1px solid #efd2d8;border-radius:11px;background:#fff}.selected-date-list li>span{flex:0 0 auto;color:var(--rose)}.selected-date-list strong{display:block;color:#754052;font:500 17px Playfair Display,serif}.selected-date-list li p{margin:6px 0 0;color:#966b79;font-size:8px;line-height:1.55}.empty-date-list{margin:0;color:#aa7b89;font:italic 13px/1.6 Playfair Display,serif}.remove-date-item{position:absolute;top:10px;right:10px;display:grid;width:27px;height:27px;padding:0;cursor:pointer;place-items:center;border:1px solid #ecc4ce;border-radius:50%;color:#ad6176;background:#fff8f6;font-size:15px;transition:color .2s ease,background .2s ease,transform .2s ease}.remove-date-item:hover:not(:disabled){color:#fff;background:var(--rose);transform:scale(1.05)}.remove-date-item:disabled{cursor:wait;opacity:.5}.game-toolbar{display:flex;margin-bottom:18px;align-items:center;justify-content:space-between;gap:16px}.difficulty-picker{display:flex;gap:7px}.difficulty-picker button{padding:8px 12px;cursor:pointer;border:1px solid #e3b3bf;border-radius:999px;color:#a66b7c;background:#fff8f5;font-size:8px}.difficulty-picker button.active{color:#fff;border-color:var(--rose);background:var(--rose)}.difficulty-picker button:disabled{cursor:default;opacity:.65}.game-stats{display:flex;gap:9px}.game-stats span{padding:8px 11px;border:1px solid #e6bec8;border-radius:9px;color:#a1707f;background:#fff;font-size:7px;letter-spacing:.06em;text-transform:uppercase}.game-stats b{margin-left:5px;color:var(--rose-dark);font-size:10px}.miffy-game-board{position:relative;display:grid;width:min(620px,100%);min-height:430px;margin:0 auto;padding:22px;grid-template-columns:repeat(3,1fr);gap:13px;overflow:hidden;border:1px solid #e5b9c3;border-radius:18px;background:radial-gradient(circle at 15% 12%,rgba(255,255,255,.8),transparent 24%),linear-gradient(145deg,#f7e2e8,#f4d3dc);box-shadow:inset 0 3px #ffffff73;touch-action:manipulation}.miffy-hole{position:relative;min-width:0;padding:0;cursor:default;overflow:visible;border:1px solid rgba(169,92,113,.16);border-radius:50%;background:radial-gradient(ellipse at center,#b96f82 0 39%,#cf91a1 40% 52%,#ffffff47 53% 100%);box-shadow:inset 0 8px 15px #68324521,0 5px #ffffff47}.miffy-hole.is-active{cursor:pointer}.game-miffy{position:absolute;top:50%;left:50%;width:68px;height:81px;image-rendering:pixelated;transform:translate(-50%,-48%);animation:game-miffy-pop .16s steps(3) both}.game-miffy-ear{position:absolute;top:0;width:20px;height:42px;border:5px solid #a84f69;border-bottom:0;background:#fffaf7;clip-path:polygon(20% 0,80% 0,100% 10%,100% 100%,0 100%,0 10%)}.game-miffy-ear.left{left:10px}.game-miffy-ear.right{right:10px}.game-miffy-face{position:absolute;right:0;bottom:0;left:0;height:52px;border:5px solid #a84f69;border-radius:12px 12px 18px 18px;color:#873d54;background:#fffaf7}.game-eye{position:absolute;top:17px;width:5px;height:7px;background:#873d54}.game-eye.left{left:15px}.game-eye.right{right:15px}.game-miffy-face em{position:absolute;top:25px;left:50%;font:700 18px Arial,sans-serif;transform:translate(-50%)}.game-miffy.is-hit{animation:game-miffy-hit .35s steps(3) both}.game-miffy.is-hit .game-eye{top:15px;width:15px;height:9px;border:4px solid #873d54;border-top:0;border-right-color:transparent;border-left-color:transparent;border-radius:0 0 50% 50%;background:transparent}.game-miffy.is-hit .game-eye.left{left:7px}.game-miffy.is-hit .game-eye.right{right:7px}.game-heart-burst{position:absolute;z-index:3;top:49%;left:50%;width:0;height:0;pointer-events:none}.game-heart-burst i{position:absolute;color:var(--rose);font: 16px Playfair Display,serif;animation:game-heart-pop .65s ease-out both}.game-heart-burst i:nth-child(1){--hx: -45px;--hy: -40px}.game-heart-burst i:nth-child(2){--hx: -14px;--hy: -56px;animation-delay:.03s}.game-heart-burst i:nth-child(3){--hx: 25px;--hy: -48px;animation-delay:.06s}.game-heart-burst i:nth-child(4){--hx: 43px;--hy: -18px}.game-heart-burst i:nth-child(5){--hx: 38px;--hy: 24px;animation-delay:.04s}.game-heart-burst i:nth-child(6){--hx: 4px;--hy: 38px}.game-heart-burst i:nth-child(7){--hx: -33px;--hy: 28px;animation-delay:.05s}.game-heart-burst i:nth-child(8){--hx: -50px;--hy: 0}.game-overlay{position:absolute;z-index:5;display:flex;inset:0;padding:25px;align-items:center;justify-content:center;flex-direction:column;color:#754052;background:#fffaf7de;text-align:center;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.game-overlay p{margin:0;font:500 36px Playfair Display,serif}.game-overlay strong{margin:3px 0;color:var(--rose);font:600 72px Playfair Display,serif}.game-overlay>span{margin:8px 0 19px;color:#986b79;font-size:9px}.game-overlay button{padding:11px 18px;cursor:pointer;border:0;border-radius:999px;color:#fff;background:var(--rose);box-shadow:0 8px 17px #b53b5b33;font-size:8px}.game-hint{margin:16px 0 0;color:#a77886;font:italic 11px Playfair Display,serif;text-align:center}.memory-card:before{position:absolute;top:12px;left:12px;width:11px;height:11px;border-top:1px solid #dca2b1;border-left:1px solid #dca2b1;content:""}.card-topline,.card-controls{display:flex;align-items:center;justify-content:space-between}.card-topline{margin-bottom:20px;padding:0 2px}.memory-card-meta{display:flex;align-items:center;gap:12px}.manage-note-button{display:flex;padding:8px 12px;cursor:pointer;align-items:center;gap:6px;border:1px solid #e2adba;border-radius:999px;color:#a6576f;background:#fff;font:8px DM Mono,monospace}.owner-note-actions{display:flex;align-items:center;gap:6px}.manage-note-button.subtle{color:#a97a87;background:transparent}.manage-note-button span{font-size:12px}.cloud-note-status{position:absolute;right:18px;bottom:72px;z-index:4;margin:0;color:#aa7786;font:italic 9px Playfair Display,serif;pointer-events:none}.cloud-note-status.error{color:#b64262}.cloud-note-status.saved{color:#6f8e77}.note-editor-modal{width:min(520px,100%)}.photo-upload-label input[type=file]{padding:10px;cursor:pointer;background:#fff6f3}.photo-upload-label small{display:block;margin:7px 2px 0;color:#aa7786;font-size:8px}.note-editor-actions .remove-cloud-note{margin-right:auto;color:#b64262;border-color:#e9bac4}.card-count{margin:0;color:#a85f73;font-size:10px;letter-spacing:.09em}.card-count span{padding:0 4px;color:#d5a0ae}.memory-layout{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(280px,.82fr);gap:32px;align-items:stretch;animation:memory-change .5s cubic-bezier(.16,1,.3,1) both}.photo-frame{position:relative;display:flex;min-height:340px;max-height:55vh;flex-direction:column;justify-content:center;margin:0;padding:13px 13px 34px;border:1px solid rgba(175,88,111,.16);border-radius:3px;background:var(--paper);box-shadow:0 13px 26px #7036481f;transform:rotate(-.55deg)}.photo-frame img{display:block;width:100%;height:auto;max-height:calc(55vh - 48px);object-fit:contain}.photo-frame figcaption{position:absolute;right:17px;bottom:10px;color:#aa7585;font:italic 10px Playfair Display,serif}.tape{position:absolute;z-index:2;top:-10px;width:54px;height:20px;background:#f2c2c99e;box-shadow:0 1px #fff9 inset}.tape-left{left:23px;transform:rotate(-7deg)}.tape-right{right:24px;transform:rotate(6deg)}.note{position:relative;display:flex;min-height:340px;flex-direction:column;justify-content:center;padding:24px 10px 24px 30px}.note:before{position:absolute;top:5%;bottom:5%;left:0;width:1px;background:linear-gradient(transparent,#edc7d0 15%,#edc7d0 85%,transparent);content:""}.note-heart{display:grid;width:40px;height:40px;place-items:center;margin-bottom:25px;border:1px solid #e8afbc;border-radius:50%;color:var(--rose);font-size:15px;box-shadow:0 5px 13px #903e5614}.note-label{margin:0 0 12px;color:#c2768a;font-size:8px;letter-spacing:.17em;text-transform:uppercase}.note-copy{margin:0;color:var(--ink);white-space:pre-line;font:500 clamp(22px,2.5vw,33px) / 1.25 "Playfair Display",serif;letter-spacing:-.025em}.note-signoff{margin:25px 0 0;color:#a57988;font-size:9px}.note-signoff em{color:var(--rose);font:italic 14px Playfair Display,serif}.card-controls{margin-top:23px;padding-top:18px;border-top:1px solid #efd1d7}.nav-buttons{display:flex;gap:9px}.nav-button{display:grid;width:39px;height:39px;padding:0;cursor:pointer;place-items:center;border:1px solid #dfa0b0;border-radius:50%;background:#ffffff75;box-shadow:0 4px 10px #7b32480f;transition:transform .2s ease,color .2s ease,background .2s ease,box-shadow .2s ease}.nav-button.primary{color:#fff;border-color:var(--rose);background:var(--rose);box-shadow:0 7px 15px #be436238}.nav-button:hover:not(:disabled){color:#fff;background:var(--rose-dark);box-shadow:0 8px 16px #a3355333;transform:translateY(-2px)}.nav-button:disabled{cursor:default;opacity:.3;box-shadow:none}.nav-button:focus-visible,.dots button:focus-visible{outline:2px solid var(--rose-dark);outline-offset:4px}.triangle{display:block;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent}.triangle-left{margin-right:2px;border-right:6px solid currentColor}.triangle-right{margin-left:2px;border-left:6px solid currentColor}.dots{display:flex;align-items:center;gap:7px}.dots button{width:5px;height:5px;padding:0;cursor:pointer;border:0;border-radius:50%;background:#dcb3bd;transition:width .25s ease,border-radius .25s ease,background .25s ease}.dots button.active{width:20px;border-radius:8px;background:var(--rose)}.progress{display:grid;grid-template-columns:auto 1fr auto;align-items:end;gap:12px;margin-top:18px}.progress-label{color:#bc8a98;font-size:7px;letter-spacing:.12em;text-transform:uppercase}.progress-line{position:relative;height:28px;border-bottom:1px dashed #dfacb8}.progress-fill{position:absolute;bottom:-1px;left:0;height:2px;background:var(--rose);transition:width .58s cubic-bezier(.32,.72,.28,1)}.progress-heart{color:var(--rose);font-size:13px}.pixel-bunny{position:absolute;bottom:-1px;width:30px;height:42px;transform:translate(-1px);transition:left .58s cubic-bezier(.32,.72,.28,1);image-rendering:pixelated}.pixel-ear{position:absolute;top:0;width:9px;height:23px;border:2px solid #b95070;border-bottom:0;background:var(--paper)}.pixel-ear.left{left:4px;clip-path:polygon(22% 0,78% 0,100% 9%,100% 100%,0 100%,0 9%)}.pixel-ear.right{right:4px;clip-path:polygon(22% 0,78% 0,100% 9%,100% 100%,0 100%,0 9%)}.pixel-face{position:absolute;right:0;bottom:0;left:0;height:25px;border:2px solid #b95070;border-radius:5px 5px 8px 8px;color:#a64060;background:var(--paper);font:700 12px/21px Arial,sans-serif;text-align:center}.pixel-face>i{position:absolute;top:7px;width:2px;height:4px;background:#a64060}.pixel-face>i:first-child{left:7px}.pixel-face>i:nth-child(2){right:7px}.pixel-face em{position:relative;top:5px;font-style:normal}.walking-right{animation:hop-right .19s steps(2) 3}.walking-left{animation:hop-left .19s steps(2) 3}.empty-state{max-width:570px;text-align:center}.empty-state .empty-heart{display:block;margin-bottom:14px;color:var(--rose);font:42px Playfair Display,serif}.empty-state h2{margin:15px 0 9px;font:500 32px Playfair Display,serif}.empty-state>p:last-child{color:var(--ink-soft);font-size:11px;line-height:1.8}.empty-state code{color:var(--rose-dark);background:var(--paper-deep)}.page-mark{position:absolute;z-index:2;right:26px;bottom:19px;margin:0;color:#a87584;font:italic 10px Playfair Display,serif;letter-spacing:.03em}.page-mark span{margin-left:4px;color:var(--rose)}@keyframes intro-arrive{0%{opacity:0;transform:translateY(12px)}}@keyframes draw-path{0%{stroke-dashoffset:500;opacity:0}to{stroke-dashoffset:0}}@keyframes fly-in{to{transform:translate(-44px) rotate(-12deg)}}@keyframes plane-fold{to{opacity:0;transform:translate(-12px,25px) rotate(-7deg) scale(.48)}}@keyframes ribbon-show{0%{opacity:0;transform:scale(.6) rotate(-8deg)}to{opacity:1;transform:scale(1)}}@keyframes ribbon-hide{to{opacity:0;transform:scale(.7) rotate(7deg)}}@keyframes envelope-arrive{to{opacity:1;pointer-events:auto;transform:translate(-50%) scale(1)}}@keyframes hint-in{to{opacity:1}}@keyframes card-reveal{0%{opacity:0;transform:translateY(28px) scale(.965)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes memory-change{0%{opacity:0;transform:translateY(8px)}}@keyframes modal-fade{0%{opacity:0}}@keyframes modal-arrive{0%{opacity:0;transform:translateY(18px) scale(.97)}}@keyframes particle-out{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}12%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) rotate(180deg) scale(.4)}}@keyframes hop-right{0%,to{transform:translate(-1px)}50%{transform:translate(2px,-4px)}}@keyframes hop-left{0%,to{transform:translate(-1px) scaleX(-1)}50%{transform:translate(-3px,-4px) scaleX(-1)}}@keyframes game-miffy-pop{0%{opacity:0;transform:translate(-50%,12%) scale(.75)}to{opacity:1;transform:translate(-50%,-48%) scale(1)}}@keyframes game-miffy-hit{0%{transform:translate(-50%,-48%) scale(1)}45%{transform:translate(-50%,-54%) scale(1.1)}to{transform:translate(-50%,-45%) scale(.94)}}@keyframes game-heart-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.35)}18%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--hx)),calc(-50% + var(--hy))) rotate(18deg) scale(.75)}}@media(max-width:760px){html,body,#root{width:100%;height:100%;overflow:hidden}.app{height:100svh;height:100dvh;min-height:100svh;min-height:100dvh;padding:18px 12px max(18px,env(safe-area-inset-bottom));overflow:hidden}.app.is-open{padding:6px}h1{font-size:clamp(47px,14vw,64px)}.flight-stage{height:282px}.flight-path{right:-8px;left:-8px;width:calc(100% + 16px)}.memory-card{width:100%;max-height:none;padding:18px 15px 16px;border-radius:12px}.archive-shell{height:100%;width:100%;max-height:none;min-height:0;padding-bottom:calc(60px + env(safe-area-inset-bottom));gap:0}.cloud-note-status{right:16px;bottom:calc(62px + env(safe-area-inset-bottom));max-width:55vw;text-align:right}.archive-shell .memory-card,.feature-card{min-height:0;max-height:none;flex:1 1 auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.feature-card{padding:18px 14px 16px;border-radius:12px}.section-navigation{position:fixed;z-index:30;right:6px;bottom:max(6px,env(safe-area-inset-bottom));left:6px;display:grid;width:auto;min-height:52px;margin:0;padding:4px;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;overflow:hidden;border-radius:14px;animation:none;transform:none}.section-navigation button{min-width:0;flex-direction:column;gap:1px;padding:5px 2px;font-size:clamp(5.5px,1.7vw,7px);letter-spacing:0}.section-navigation button span{font-size:13px}.feature-heading{margin-bottom:14px}.feature-heading h2{margin-top:6px;font-size:clamp(25px,7.6vw,34px)}.feature-stamp{display:none}.trip-heading-actions{align-self:center}.trip-list{grid-template-columns:1fr}.trip-card,.trip-card h3,.trip-note{min-height:0}.trip-modal-backdrop{padding:12px;align-items:end}.trip-modal{width:100%;max-height:calc(100dvh - 18px);padding:32px 19px 20px;border-radius:22px 22px 14px 14px}.trip-form-row{grid-template-columns:1fr}.generated-date{min-height:255px;padding:29px 20px}.generated-date h3{font-size:clamp(29px,9vw,40px)}.date-actions{flex-direction:column}.date-actions button{width:min(290px,100%);justify-content:center}.date-history-layout{grid-template-columns:1fr}.selected-date-list{min-height:175px;padding:18px}.calendar{padding:12px}.game-toolbar{align-items:stretch;flex-direction:column}.difficulty-picker,.game-stats{justify-content:center}.miffy-game-board{min-height:300px;padding:10px;gap:7px}.game-miffy{width:56px;height:68px}.game-miffy-ear{width:17px;height:35px;border-width:4px}.game-miffy-face{height:44px;border-width:4px}.memory-layout{grid-template-columns:1fr;gap:12px}.photo-frame{min-height:190px;max-height:34dvh}.photo-frame img{max-height:calc(34dvh - 42px)}.note{min-height:0;padding:24px 8px 10px}.note:before{top:0;right:0;bottom:auto;width:auto;height:1px;background:linear-gradient(90deg,transparent,#edc7d0 15%,#edc7d0 85%,transparent)}.note-heart{width:34px;height:34px;margin-bottom:18px}.note-copy{font-size:clamp(21px,6vw,28px)}.page-mark{display:none}.background-friend{opacity:.14}}@media(max-width:420px){.login-card{padding:36px 25px 25px}.login-card h1{font-size:42px}.intro{transform:translateY(-4px)}.flight-stage{margin-top:-12px}.card-topline{margin-bottom:17px;align-items:flex-start}.memory-card-meta{gap:7px}.owner-note-actions{gap:4px}.manage-note-button{padding:7px 9px;font-size:7px}.photo-frame{min-height:210px}.progress{gap:8px}.progress-label{max-width:45px;line-height:1.3}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.plane,.ribbon{display:none}.envelope{opacity:1;pointer-events:auto;transform:translate(-50%) scale(1)}.open-hint{opacity:1}}
