.mem-page{--mem-ink: var(--ink);--mem-muted: var(--ink-2);--mem-paper: var(--paper-warm);--mem-pink: var(--accent);--mem-violet: var(--accent);--mem-hand: var(--font-sans);--mem-display: var(--font-serif);--mem-shadow: 0 1px 2px rgba(27, 23, 20, .06), 0 14px 34px rgba(27, 23, 20, .12);position:relative;height:100%;overflow:hidden;color:var(--mem-ink);font-family:var(--font-sans)}.mem-layout{position:relative;z-index:10;display:flex;height:100%;flex-direction:column;padding:calc(var(--safe-top) + 56px) 16px calc(var(--safe-bottom) + 14px);pointer-events:none}.mem-layout>*{pointer-events:auto}.mem-header{display:flex;align-items:center;justify-content:space-between;width:min(100%,520px);align-self:center}.mem-round{display:grid;width:46px;height:46px;flex:0 0 auto;place-items:center;border:0;border-radius:50%;border:1px solid var(--rule);background:#fff;color:var(--mem-ink);cursor:pointer;box-shadow:0 2px 8px #1b17140f;transition:transform .12s ease,box-shadow .12s ease,opacity .2s ease;touch-action:manipulation}.mem-round svg{width:22px;height:22px}.mem-round:not(:disabled):active{transform:scale(.94)}.mem-round:disabled{opacity:.4;cursor:default}.mem-round:focus-visible,.mem-pill:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.mem-stage{display:flex;flex:1;min-height:0;align-items:center;justify-content:center;padding:16px 0 14px}.mem-card{position:relative;display:flex;width:min(100%,460px);height:100%;max-height:780px;flex-direction:column;padding:12px;border:1px solid var(--rule);border-radius:6px;background:var(--mem-paper);box-shadow:var(--mem-shadow);transform:rotate(var(--tilt))}.mem-enter-next{animation:mem-in-next .5s cubic-bezier(.2,.85,.25,1)}.mem-enter-prev{animation:mem-in-prev .5s cubic-bezier(.2,.85,.25,1)}@keyframes mem-in-next{0%{opacity:0;transform:translate(70px) rotate(calc(var(--tilt) + 7deg))}to{opacity:1;transform:rotate(var(--tilt))}}@keyframes mem-in-prev{0%{opacity:0;transform:translate(-70px) rotate(calc(var(--tilt) - 7deg))}to{opacity:1;transform:rotate(var(--tilt))}}.mem-photo{position:relative;flex:1 1 0;min-height:140px;overflow:hidden;border-radius:3px;background:var(--ink)}.mem-photo img,.mem-photo video{display:block;width:100%;height:100%;object-fit:cover;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.mem-stamp{position:absolute;top:0;right:0;z-index:3;padding:4px;background:radial-gradient(circle at 4px 4px,transparent 2.6px,#fff 3px) -4px -4px / 8px 8px;filter:drop-shadow(0 3px 5px rgba(27,23,20,.18));transform:translate(10px,-14px) rotate(7deg)}.mem-stamp-inner{display:flex;min-width:64px;max-width:108px;flex-direction:column;align-items:center;gap:2px;padding:7px 9px 6px;border:1.5px solid var(--accent);background:#fff}.mem-stamp-inner svg{width:20px;height:20px;fill:var(--accent);stroke:var(--accent);stroke-width:1.5}.mem-stamp-inner span{overflow:hidden;max-width:100%;color:var(--mem-ink);font-family:var(--font-mono);font-size:.65rem;letter-spacing:.08em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.mem-text{flex:0 0 auto;max-height:42%;overflow-y:auto;padding:14px 6px 4px;overscroll-behavior:contain}.mem-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.mem-heading h2{font-family:var(--mem-display);font-size:1.35rem;font-weight:700;line-height:1.2;letter-spacing:-.02em}.mem-location{display:flex;align-items:center;gap:.3rem;margin-top:.2rem;color:var(--mem-muted);font-size:.85rem;font-weight:500}.mem-location svg{width:15px;height:15px;flex:0 0 auto;color:var(--mem-pink)}.mem-number{flex:0 0 auto;padding:.2rem .6rem;color:var(--ink-3);font-family:var(--font-mono);font-size:.8rem;white-space:nowrap}.mem-note{margin-top:.6rem;color:var(--ink-2);font-family:var(--mem-hand);font-size:.95rem;line-height:1.6;user-select:text;-webkit-user-select:text}.mem-note p{white-space:pre-line}.mem-ps{margin-top:.5rem;color:var(--mem-violet);font-size:.9em}.mem-footer{display:flex;width:min(100%,460px);align-items:center;align-self:center;gap:14px}.mem-nav{width:54px;height:54px}.mem-nav svg{width:26px;height:26px}.mem-nav-next{border-color:var(--ink);background:var(--ink);color:#fff}.mem-progress{display:flex;min-width:0;flex:1;flex-direction:column;gap:6px}.mem-progress-label{color:var(--ink-2);font-family:var(--font-mono);font-size:.85rem;text-align:center}.mem-progress-track{height:2px;overflow:hidden;border-radius:99px;background:var(--rule)}.mem-progress-track span{display:block;height:100%;border-radius:inherit;background:var(--ink);transition:width .35s ease}.mem-pill{padding:.85rem 1.4rem;border:0;border-radius:99px;font-family:var(--font-sans);font-size:1rem;font-weight:600;cursor:pointer;touch-action:manipulation;transition:transform .12s ease,box-shadow .12s ease}.mem-finish{background:var(--ink);color:#fff}.mem-finish:active{transform:scale(.97)}.mem-ghost{background:var(--paper-2);color:var(--mem-ink)}.mem-status{display:flex;margin:auto;max-width:340px;flex-direction:column;align-items:center;gap:1rem;padding:1.5rem;color:var(--ink-2);font-size:1rem;text-align:center}.mem-status .mem-pill{background:var(--ink);color:#fff}.mem-toast{align-self:center;margin-top:.6rem;padding:.5rem 1rem;border:1px solid var(--rule);border-radius:99px;background:#fff;color:var(--accent);font-size:.85rem;font-weight:700}.final-stage{position:relative;z-index:10;display:grid;height:100%;place-items:center;overflow-y:auto;padding:calc(var(--safe-top) + 100px) 16px calc(var(--safe-bottom) + 24px)}.final-letter{display:flex;width:min(100%,460px);flex-direction:column;align-items:center;gap:.8rem;padding:2rem 1.5rem 1.6rem;border:1px solid var(--rule);border-radius:6px;background:var(--mem-paper);text-align:center;box-shadow:var(--mem-shadow);transform:rotate(-1deg);animation:mem-in-next .6s cubic-bezier(.2,.85,.25,1);--tilt: -1deg}.final-kicker{color:var(--ink-3);font-family:var(--font-mono);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase}.final-heading{font-family:var(--mem-display);font-size:clamp(1.7rem,7vw,2.1rem);font-weight:700;line-height:1.1;letter-spacing:-.03em}.final-message{color:var(--ink-2);font-family:var(--mem-hand);font-size:1rem;line-height:1.6}.final-sign{color:var(--mem-violet);font-family:var(--mem-hand);font-size:1rem;font-weight:600}.final-buttons{display:flex;width:100%;flex-direction:column;gap:.75rem;margin-top:.6rem}@media(min-width:900px){.mem-heading h2{font-size:1.5rem}}@media(max-height:700px){.mem-layout{padding-top:calc(var(--safe-top) + 48px)}.mem-note{font-size:.9rem}}@media(prefers-reduced-motion:reduce){.star-garland-item,.mem-enter-next,.mem-enter-prev,.final-letter{animation:none}}.bo-page{--bo-ink: #2B0F4C;--bo-muted: #6A5A88;--bo-line: #E7DEF7;--bo-bg: #F6F1FF;--bo-accent: #B42DD8;position:relative;z-index:11;width:100%;height:100%;overflow-y:auto;overscroll-behavior:contain;background:radial-gradient(ellipse 40rem 20rem at 100% 0%,rgba(255,61,139,.12),transparent 70%),radial-gradient(ellipse 40rem 20rem at 0% 100%,rgba(46,230,214,.12),transparent 70%),var(--bo-bg);color:var(--bo-ink);font-family:Nunito,system-ui,-apple-system,Segoe UI,sans-serif}.bo-page input,.bo-page textarea{user-select:text;-webkit-user-select:text}.bo-inner{width:min(1120px,100%);margin:0 auto;padding:calc(env(safe-area-inset-top,0px) + 76px) 1rem max(2rem,env(safe-area-inset-bottom))}.bo-header{display:flex;align-items:center;gap:.8rem;margin-bottom:1.25rem}.bo-header h1{flex:1;font-family:Fredoka,Nunito,sans-serif;font-size:1.9rem;font-weight:700}.bo-back{display:grid;width:42px;height:42px;place-items:center;border:1px solid var(--bo-line);border-radius:50%;background:#fff;color:var(--bo-ink);font-size:1.25rem;cursor:pointer}.bo-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:start;gap:1.25rem}.bo-card{border:1px solid var(--bo-line);border-radius:22px;background:#fff;padding:1.25rem;box-shadow:0 12px 30px #2b0f4c12}.bo-card-heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.bo-card h2{font-family:Fredoka,Nunito,sans-serif;font-size:1.3rem;font-weight:600}.bo-form{display:flex;flex-direction:column;gap:.9rem}.bo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.bo-field{display:flex;flex-direction:column;gap:.35rem}.bo-field>span{font-size:.85rem;font-weight:800}.bo-field input,.bo-field textarea,.bo-login input{width:100%;padding:.75rem .9rem;border:2px solid var(--bo-line);border-radius:14px;background:var(--bo-bg);color:var(--bo-ink);font:inherit;font-size:16px;outline:none;resize:vertical;transition:border-color .2s ease,background-color .2s ease}.bo-field input:focus,.bo-field textarea:focus,.bo-login input:focus{border-color:var(--bo-accent);background:#fff}.bo-field input::placeholder,.bo-field textarea::placeholder{color:#9a8cb8}.bo-drop{position:relative;display:grid;min-height:180px;place-items:center;overflow:hidden;border:2px dashed #CDBDF0;border-radius:18px;background:var(--bo-bg);cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.bo-drop:hover,.bo-drop.is-over{border-color:var(--bo-accent);background:#f0e6ff}.bo-drop:focus-within{outline:3px solid var(--bo-accent);outline-offset:2px}.bo-drop input{position:absolute;width:1px;height:1px;opacity:0}.bo-drop-empty{display:flex;flex-direction:column;gap:.3rem;padding:1.5rem;text-align:center}.bo-drop-empty strong{color:var(--bo-accent);font-family:Fredoka,Nunito,sans-serif;font-size:1.1rem;font-weight:600}.bo-drop-empty small{color:var(--bo-muted);font-size:.8rem}.bo-drop-preview{width:100%;max-height:340px;object-fit:contain;background:#1c0f3d}.bo-drop-change{position:absolute;right:.6rem;bottom:.6rem;max-width:calc(100% - 1.2rem);overflow:hidden;padding:.35rem .75rem;border-radius:99px;background:#2b0f4cbf;color:#fff;font-size:.75rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.bo-hint{margin-top:-.4rem;color:#a3561a;font-size:.8rem;font-weight:700}.bo-progress{position:relative;height:28px;overflow:hidden;border-radius:99px;background:var(--bo-bg)}.bo-progress span{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#ff3d8b,#ff8a3d);transition:width .15s linear}.bo-progress small{position:relative;display:grid;height:100%;place-items:center;color:var(--bo-ink);font-size:.8rem;font-weight:800}.bo-button{padding:.85rem 1.25rem;border:0;border-radius:99px;background:linear-gradient(90deg,#e8246f,#f06a1e);color:#fff;font-family:Fredoka,Nunito,sans-serif;font-size:1.05rem;font-weight:700;cursor:pointer;box-shadow:0 5px #a91d54;transition:transform .1s ease,box-shadow .1s ease,opacity .2s ease}.bo-button:not(:disabled):active{transform:translateY(3px);box-shadow:0 2px #a91d54}.bo-button:disabled{opacity:.55;cursor:default}.bo-link{border:0;background:none;color:var(--bo-accent);font:inherit;font-size:.9rem;font-weight:800;cursor:pointer}.bo-error{color:#c8104f;font-size:.9rem;font-weight:700}.bo-notice{margin-top:.75rem;padding:.75rem 1rem;border-radius:14px;background:#ddfbf6;color:#0b6b61;font-weight:700}.bo-muted{color:var(--bo-muted)}.bo-login{display:flex;max-width:380px;margin:2rem auto;flex-direction:column;gap:.8rem;text-align:center}.bo-login p{color:var(--bo-muted)}.bo-login input{text-align:center}.bo-count{display:grid;min-width:32px;height:32px;padding:0 .6rem;place-items:center;border-radius:99px;background:#ffd23f;font-family:Fredoka,Nunito,sans-serif;font-weight:700}.bo-list{display:flex;flex-direction:column;gap:.6rem;list-style:none}.bo-list li{display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:.8rem;padding:.55rem;border:2px solid transparent;border-radius:16px;background:var(--bo-bg)}.bo-list li.is-editing{border-color:var(--bo-accent)}.bo-thumb{width:64px;height:64px;border-radius:12px;object-fit:cover;background:#e7def7}video.bo-thumb::-webkit-media-controls{display:none}.bo-media-empty{display:grid;place-items:center;color:var(--bo-muted);font-size:.65rem;text-align:center}.bo-item-info{display:flex;min-width:0;flex-direction:column;gap:.1rem}.bo-item-info strong,.bo-item-info span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bo-item-info span{color:var(--bo-muted);font-size:.85rem}.bo-item-info small{color:var(--bo-muted);font-size:.75rem}.bo-item-actions{display:flex;flex-direction:column;gap:.35rem}.bo-small{padding:.4rem .75rem;border:1px solid var(--bo-line);border-radius:99px;background:#fff;color:var(--bo-ink);font:inherit;font-size:.8rem;font-weight:800;cursor:pointer}.bo-small:hover{border-color:var(--bo-accent)}.bo-danger{color:#c8104f}.bo-danger:hover{border-color:#c8104f}@media(max-width:860px){.bo-layout{grid-template-columns:1fr}}@media(max-width:480px){.bo-grid{grid-template-columns:1fr}.bo-card{padding:1rem}}:root{--paper: #FFFFFF;--paper-warm: #FFFDF8;--paper-2: #F6F3EE;--ink: #1B1714;--ink-2: #5F5852;--ink-3: #8F8780;--rule: #E7E2DB;--emma: #D6336C;--mathis: #2F5FBF;--accent: var(--emma);--font-serif: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-hand: var(--font-sans)}.app-container{display:flex;flex-direction:column;background-color:var(--paper);color:var(--ink);font-family:var(--font-sans)}.party-sky{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;background:var(--paper);pointer-events:none}.star-field{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;pointer-events:none}.home-page{position:relative;height:100%;overflow-y:auto;overscroll-behavior:contain;font-family:var(--font-sans)}.home-stage{position:relative;z-index:10;display:flex;min-height:100%;width:min(100%,620px);margin:0 auto;flex-direction:column;justify-content:center;gap:clamp(2.25rem,7vh,4rem);padding:calc(var(--safe-top) + 96px) 1.25rem calc(2.5rem + var(--safe-bottom));pointer-events:none}.home-stage>*{pointer-events:auto}.home-hero{color:var(--ink)}.home-hand{margin-bottom:.35rem;color:var(--accent);font-size:.95rem;font-weight:600}.home-title{display:flex;flex-direction:column;font-family:var(--font-sans);font-weight:700;line-height:1;letter-spacing:-.035em}.home-title-top{font-size:clamp(1.9rem,7.5vw,2.8rem)}.home-title-name{margin-left:-.04em;font-size:clamp(4.75rem,23vw,8.5rem);letter-spacing:-.05em;color:var(--accent);animation:home-name-in 1.1s cubic-bezier(.2,.8,.2,1) both}@keyframes home-name-in{0%{opacity:0;transform:translateY(18px);letter-spacing:.08em}to{opacity:1;transform:none;letter-spacing:-.05em}}.home-contents-label{padding-bottom:.6rem;color:var(--ink-3);font-family:var(--font-mono);font-size:.75rem;letter-spacing:.12em;text-transform:uppercase}.home-contents ol{list-style:none;border-top:1px solid var(--ink)}.home-contents li{border-bottom:1px solid var(--rule)}.home-chapter{display:grid;width:100%;grid-template-columns:2.6rem 1fr auto;align-items:center;gap:.75rem;padding:1.05rem .25rem;border:0;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;touch-action:manipulation;transition:background-color .2s ease}.home-chapter-number{align-self:start;padding-top:.3rem;color:var(--ink-3);font-family:var(--font-mono);font-size:.8rem}.home-chapter-text{display:flex;min-width:0;flex-direction:column;gap:.1rem}.home-chapter-title{font-size:clamp(1.4rem,6vw,1.8rem);font-weight:600;line-height:1.15;letter-spacing:-.02em}.home-chapter-note{color:var(--ink-2);font-size:.9rem;line-height:1.4}.home-chapter-arrow{display:grid;width:36px;color:var(--ink);transition:transform .25s cubic-bezier(.2,.8,.2,1),color .2s ease}.home-chapter-arrow svg{width:32px;height:16px}.home-chapter:not(:disabled):hover .home-chapter-title{color:var(--accent)}.home-chapter:not(:disabled):hover .home-chapter-arrow{color:var(--accent);transform:translate(6px)}.home-chapter:not(:disabled):active{background:var(--paper-2)}.home-chapter:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.home-chapter:disabled{cursor:default}.home-chapter:disabled .home-chapter-title{color:var(--ink-3)}.gate-page{position:relative;display:flex;height:100%;align-items:center;justify-content:center;overflow-y:auto;padding:calc(var(--safe-top) + 96px) 1.25rem calc(1.5rem + var(--safe-bottom));font-family:var(--font-sans)}.gate-loading{position:relative;z-index:10;color:var(--ink-2);font-size:1rem}.gate-card{position:relative;z-index:10;display:flex;width:100%;max-width:360px;flex-direction:column;gap:.9rem;color:var(--ink)}.gate-hand{color:var(--accent);font-size:.95rem;font-weight:600}.gate-title{font-size:clamp(2.3rem,10vw,3rem);font-weight:700;line-height:1;letter-spacing:-.035em}.gate-subtitle{margin-bottom:1rem;color:var(--ink-2);font-size:1rem;line-height:1.5}.gate-input{width:100%;padding:.6rem .1rem;border:0;border-bottom:1.5px solid var(--ink);border-radius:0;background:transparent;color:var(--ink);font-family:var(--font-mono);font-size:18px;letter-spacing:.25em;outline:none;user-select:text;-webkit-user-select:text;transition:border-color .2s ease}.gate-input::placeholder{color:var(--ink-3);letter-spacing:.05em}.gate-input:focus{border-bottom-color:var(--accent)}.gate-button{display:inline-flex;align-self:flex-start;align-items:center;gap:.6rem;margin-top:.75rem;padding:.85rem 1.5rem;border:0;border-radius:99px;background:var(--ink);color:#fff;font-family:var(--font-sans);font-size:1rem;font-weight:600;cursor:pointer;transition:transform .1s ease,opacity .2s ease,background-color .2s ease;touch-action:manipulation}.gate-button:not(:disabled):hover{background:var(--accent)}.gate-button:not(:disabled):active{transform:scale(.97)}.gate-button:disabled{opacity:.35;cursor:default}.gate-button:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.gate-error{min-height:1.4rem;color:var(--accent);font-size:.9rem;font-weight:600}.gate-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.gate-shake{animation:gate-shake .4s ease}@keyframes gate-shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-10px)}40%,80%{transform:translate(10px)}}@media(prefers-reduced-motion:reduce){.home-title-name,.gate-shake{animation:none}}.star-garland{position:absolute;top:0;left:0;right:0;z-index:6;height:100px;pointer-events:none}.star-garland-string{position:absolute;top:0;left:0;width:100%;height:50px;overflow:visible}.star-garland-string path{fill:none;stroke:#ffffffd9;stroke-width:1.5}.star-garland-item{position:absolute;display:flex;flex-direction:column;align-items:center;margin-left:calc(var(--size) / -2);width:var(--size);transform-origin:50% 0;animation:garland-swing 3s ease-in-out infinite alternate}.star-garland-item:before{content:"";width:1.5px;height:var(--drop);background:#ffffffd9}.star-garland-item svg{width:var(--size);height:var(--size);margin-top:-2px;fill:var(--star-color);filter:drop-shadow(0 3px 4px rgba(43,15,76,.35))}@keyframes garland-swing{0%{transform:rotate(-8deg)}to{transform:rotate(8deg)}}.star-garland-light .star-garland-string path,.star-garland-light .star-garland-item:before{stroke:#1b171447;background:#1b171447}.star-garland-light .star-garland-item svg{filter:drop-shadow(0 2px 2px rgba(27,23,20,.15))}@media(prefers-reduced-motion:reduce){.star-garland-item{animation:none}}.letterboxd-page{position:relative;z-index:11;width:100%;height:100%;height:100dvh;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--paper);color:var(--ink);font-family:var(--font-sans);user-select:text;-webkit-user-select:text}.lb-inner{width:min(100%,760px);margin:0 auto;padding:calc(var(--safe-top) + 72px) 1.25rem calc(2.5rem + var(--safe-bottom))}.letterboxd-page a{color:inherit}.lb-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:2.5rem}.lb-back,.lb-year button,.lb-text-button{border:0;background:none;color:var(--ink);font:inherit;cursor:pointer;touch-action:manipulation}.lb-back{padding:.4rem 0;font-family:var(--font-mono);font-size:.85rem}.lb-year{display:flex;align-items:center;gap:.25rem;font-size:1.15rem;font-weight:700}.lb-year button{width:40px;height:40px;border-radius:50%;font-size:1.5rem;line-height:1}.lb-year button:not(:disabled):hover{background:var(--paper-2)}.lb-year button:disabled{color:var(--rule);cursor:default}.lb-back:focus-visible,.lb-year button:focus-visible,.lb-text-button:focus-visible,.lb-cell:focus-visible,.lb-admin summary:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.lb-hand{margin-bottom:.4rem;color:var(--accent);font-size:.95rem;font-weight:600}.lb-title{font-size:clamp(2.5rem,11vw,4.25rem);font-weight:700;line-height:1;letter-spacing:-.045em}.lb-title em{font-style:normal;color:var(--accent)}.lb-lede{max-width:30ch;margin-top:1.25rem;font-size:clamp(1.15rem,4.6vw,1.4rem);line-height:1.45;letter-spacing:-.01em}.lb-lede strong{font-weight:700;border-bottom:2px solid var(--accent)}.lb-split{margin-top:1.75rem}.lb-split-bar{display:flex;gap:2px;height:10px}.lb-split-bar span{min-width:4px}.lb-split-bar span:first-child{border-radius:4px 0 0 4px}.lb-split-bar span:last-child{border-radius:0 4px 4px 0}.lb-split figcaption{display:flex;justify-content:space-between;margin-top:.5rem;color:var(--ink-2);font-family:var(--font-mono);font-size:.8rem}.lb-fill-emma{background:var(--emma)}.lb-fill-mathis{background:var(--mathis)}.lb-person{display:inline-flex;align-items:center;gap:.35rem;color:var(--ink-2);font-family:var(--font-mono);font-size:.8rem;font-weight:400;white-space:nowrap}.lb-swatch{display:inline-block;width:8px;height:8px;flex:0 0 auto;border-radius:2px}.lb-swatch-emma{background:var(--emma)}.lb-swatch-mathis{background:var(--mathis)}.lb-stars{color:var(--ink);font-size:.85em;letter-spacing:.04em;white-space:nowrap}.lb-stars-none{color:var(--ink-3);font-family:var(--font-mono);font-size:.72rem;letter-spacing:0}.lb-film-title{font-weight:600;text-decoration:none}a.lb-film-title[href]:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.lb-film-title small{color:var(--ink-3);font-family:var(--font-mono);font-size:.7rem}.lb-text-button{padding:.5rem 0;font-family:var(--font-mono);font-size:.85rem;text-decoration:underline;text-underline-offset:4px}.lb-state{padding:3rem 0;color:var(--ink-2);font-size:1rem;text-align:center}.lb-state-detail{margin-top:.5rem;font-family:var(--font-mono);font-size:.8rem}.lb-warning{margin-top:1rem;color:var(--accent);font-size:.85rem}.lb-section{margin-top:4rem;padding-top:.9rem;border-top:1px solid var(--ink)}.lb-section-head{margin-bottom:1.5rem}.lb-section-number{color:var(--ink-3);font-family:var(--font-mono);font-size:.8rem}.lb-section-head h2{margin-top:.25rem;font-size:clamp(1.6rem,6.5vw,2.1rem);font-weight:700;line-height:1.1;letter-spacing:-.03em}.lb-section-head p{max-width:52ch;margin-top:.6rem;color:var(--ink-2);font-size:.95rem;line-height:1.5}.lb-sessions{list-style:none}.lb-sessions li{display:grid;grid-template-columns:5.5rem 1fr auto;align-items:baseline;gap:.75rem;padding:.75rem 0;border-bottom:1px solid var(--rule)}.lb-sessions time{color:var(--ink-3);font-family:var(--font-mono);font-size:.78rem}.lb-sessions .lb-film-title{font-size:1.02rem;line-height:1.15}.lb-session-ratings{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem}.lb-session-ratings>span{display:inline-flex;align-items:center;gap:.35rem}.lb-notes{display:grid;gap:2rem 2.5rem}.lb-note{padding-top:.75rem;border-top:1px solid var(--rule)}.lb-note-label{color:var(--ink-2);font-size:.85rem;font-weight:600}.lb-note-big{margin-top:.2rem;font-size:3rem;font-weight:700;line-height:1.05;letter-spacing:-.04em}.lb-note-film{margin-top:.3rem;font-size:1.35rem;font-weight:700;line-height:1.2;letter-spacing:-.02em}.lb-note-ratings{display:flex;flex-wrap:wrap;gap:.4rem 1.25rem;margin-top:.6rem}.lb-note-ratings>span{display:inline-flex;align-items:center;gap:.5rem}.lb-note-text{margin-top:.6rem;color:var(--ink-2);font-size:.9rem;line-height:1.5}.lb-legend{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin-bottom:1.25rem;list-style:none;color:var(--ink-2);font-family:var(--font-mono);font-size:.78rem}.lb-legend li{display:inline-flex;align-items:center;gap:.4rem}.lb-legend .lb-cell{width:12px;height:12px}.lb-calendar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem .9rem}.lb-month-name{display:flex;align-items:baseline;justify-content:space-between;gap:.25rem;margin-bottom:.4rem;font-size:.85rem;font-weight:600}.lb-month-name>span{display:inline-flex;gap:.4rem}.lb-month-count{display:inline-flex;align-items:center;gap:.2rem;color:var(--ink-2);font-family:var(--font-mono);font-size:.68rem}.lb-month-count .lb-swatch{width:6px;height:6px}.lb-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.lb-weekday{color:var(--ink-3);font-family:var(--font-mono);font-size:.55rem;text-align:center}.lb-cell{display:block;aspect-ratio:1;padding:0;border:0;border-radius:2px;background:#f1eee9}button.lb-cell{cursor:pointer;touch-action:manipulation}.lb-cell-emma{background:var(--emma)}.lb-cell-mathis{background:var(--mathis)}.lb-cell-both{background:linear-gradient(135deg,var(--emma) 0 45%,#fff 45% 55%,var(--mathis) 55% 100%)}.lb-cell-together{background:var(--ink)}.lb-cell.is-selected{outline:2px solid var(--ink);outline-offset:1px}.lb-day-detail{min-height:4.5rem;margin-top:1.5rem;padding:.9rem 1rem;border-radius:4px;background:var(--paper-2)}.lb-day-detail-date{margin-bottom:.35rem;font-size:1.05rem;font-weight:700}.lb-day-detail-row{display:flex;align-items:baseline;gap:.6rem;font-size:.95rem;line-height:1.5}.lb-day-detail-row em{font-style:normal;font-weight:600}.lb-day-detail-hint{color:var(--ink-3);font-size:.9rem}.lb-spread{display:flex;flex-direction:column;gap:4px}.lb-spread-row{display:grid;grid-template-columns:1fr 5.25rem 1fr;align-items:center;gap:.6rem}.lb-spread-head{margin-bottom:.4rem}.lb-spread-head>span:first-child{justify-self:end}.lb-spread-label{color:var(--ink-3);font-family:var(--font-mono);font-size:.72rem;text-align:center}.lb-spread-label .lb-stars{color:var(--ink-2);font-size:.8rem}.lb-spread-side{display:flex;align-items:center;gap:.4rem;height:14px}.lb-spread-left{justify-content:flex-end}.lb-spread-side i{display:block;height:10px}.lb-spread-left i{border-radius:4px 0 0 4px}.lb-spread-side:not(.lb-spread-left) i{border-radius:0 4px 4px 0}.lb-spread-side small{min-width:1.4rem;color:var(--ink-2);font-family:var(--font-mono);font-size:.7rem}.lb-spread-left small{text-align:right}.lb-habits{width:100%;border-collapse:collapse;table-layout:fixed}.lb-habits th,.lb-habits td{padding:.75rem .5rem .75rem 0;border-bottom:1px solid var(--rule);text-align:left;vertical-align:baseline}.lb-habits thead th{padding-top:0;border-bottom-color:var(--ink)}.lb-habits tbody th{width:34%;color:var(--ink-2);font-size:.85rem;font-weight:500}.lb-habits td{font-size:.98rem;font-weight:500;line-height:1.35}.lb-favorites{display:grid;gap:2rem 2.5rem}.lb-favorites-who{margin-bottom:.4rem}.lb-favorites ol{list-style:none}.lb-favorites li{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:.75rem;padding:.55rem 0;border-bottom:1px solid var(--rule)}.lb-favorites img{display:block;width:34px;height:50px;border-radius:2px;object-fit:cover}.lb-rank{color:var(--ink-3);font-size:1.1rem;font-weight:700;line-height:1;text-align:center}.lb-favorites li>span:nth-child(2){display:flex;min-width:0;flex-direction:column}.lb-favorites .lb-film-title{overflow:hidden;font-size:1rem;line-height:1.3;text-overflow:ellipsis}.lb-favorites small{color:var(--ink-3);font-family:var(--font-mono);font-size:.7rem}.lb-footer{margin-top:4.5rem;padding-top:1rem;border-top:1px solid var(--rule);color:var(--ink-3);font-size:.8rem}.lb-footer>p{margin-top:1rem}.lb-admin summary{color:var(--ink-2);font-family:var(--font-mono);font-size:.8rem;cursor:pointer}.lb-admin p{max-width:60ch;margin-top:.6rem;color:var(--ink-2);line-height:1.5}.lb-admin code{font-family:var(--font-mono)}.lb-admin-actions{display:flex;flex-wrap:wrap;gap:.25rem 1.5rem;margin-top:.5rem}.lb-admin-actions input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.lb-admin-actions label{position:relative}.lb-admin-ok{color:var(--ink)!important}.lb-admin-error{color:var(--accent)!important}@media(min-width:640px){.lb-inner{padding-left:2rem;padding-right:2rem}.lb-notes,.lb-favorites{grid-template-columns:repeat(2,minmax(0,1fr))}.lb-calendar{grid-template-columns:repeat(4,minmax(0,1fr));gap:1.75rem 1.25rem}.lb-session-ratings{flex-direction:row;gap:1rem}}@media(max-width:380px){.lb-sessions li{grid-template-columns:1fr auto}.lb-sessions time{grid-column:1 / -1}.lb-calendar{grid-template-columns:repeat(2,minmax(0,1fr))}}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}:root{--bg-main: #FFFFFF;--bg-grad-end: #FFFFFF;--text-dark: #2C3E2D;--text-muted: #6B7A6F;--brand-green: #78A97D;--brand-green-hover: #639268;--brand-pink: #FF6584;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}html,body{width:100vw;height:100vh;height:100dvh;overflow:hidden;background-color:var(--bg-main);font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text-dark);user-select:none;-webkit-user-select:none;overscroll-behavior:none}body{position:relative;background:linear-gradient(180deg,var(--bg-main) 0%,var(--bg-grad-end) 100%)}#root,.app-container{width:100%;height:100%;position:relative;overflow:hidden}.view{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;opacity:1;z-index:10;transition:opacity .35s ease}.home-content{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding-top:calc(var(--safe-top) + 1.75rem);padding-bottom:calc(var(--safe-bottom) + 1.75rem);padding-left:1.25rem;padding-right:1.25rem;text-align:center}.header-text .subtitle{font-size:.8rem;letter-spacing:2px;text-transform:uppercase;color:var(--brand-green);font-weight:600;margin-bottom:.25rem}.header-text .title{font-family:Playfair Display,serif;font-size:2.3rem;font-weight:400;line-height:1.15;margin-bottom:.25rem}.photo-container-home{position:relative;width:480px;height:480px;max-width:80vw;max-height:80vw;border-radius:40px;overflow:hidden;box-shadow:0 20px 45px #78a97d2e,0 4px 12px #00000008;pointer-events:none!important;border:4px solid rgba(255,255,255,.85)}.photo-emma{width:100%;height:100%;object-fit:cover;pointer-events:none!important}.memory-content{width:100%;height:100%;display:flex;flex-direction:column;justify-content:space-between;padding-top:calc(var(--safe-top) + .75rem);padding-bottom:calc(var(--safe-bottom) + 1rem);padding-left:1.15rem;padding-right:1.15rem}.progress-container{display:flex;gap:4px;width:100%;margin-bottom:.65rem}.progress-bar{height:4px;flex:1;background:#00000014;border-radius:99px;overflow:hidden}.progress-fill{height:100%;background:var(--brand-green);transition:width .3s ease}.memory-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.memory-badge{font-size:.75rem;font-weight:600;color:var(--brand-green);text-transform:uppercase;letter-spacing:1px}.memory-header-actions{display:flex;align-items:center;gap:.5rem}.btn-like{display:flex;align-items:center;gap:4px;padding:.35rem .75rem;background:#fffc;border:1px solid rgba(0,0,0,.05);border-radius:99px;font-size:.8rem;font-weight:600;color:var(--text-dark);cursor:pointer;box-shadow:0 2px 8px #0000000a;transition:transform .15s ease,background-color .2s ease}.btn-like:active{transform:scale(.92)}.like-counter{font-variant-numeric:tabular-nums;font-size:.75rem}.btn-icon{width:36px;height:36px;border-radius:50%;border:none;background:#0000000d;color:var(--text-dark);font-size:.95rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .1s ease}.btn-icon:active{transform:scale(.92)}.memory-card{flex:1;display:flex;flex-direction:column;background:#ffffffe0;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-radius:26px;padding:.85rem;border:1px solid rgba(255,255,255,.9);box-shadow:0 14px 32px #0000000a;overflow:hidden;margin-bottom:.65rem;min-height:0}.memory-location{display:flex;align-items:center;gap:5px;font-size:.75rem;color:var(--text-muted);font-weight:500;margin-bottom:.45rem}.icon-pin{width:14px;height:14px;stroke:var(--brand-green);flex-shrink:0}.memory-easter-egg{margin-left:auto;font-size:.68rem;font-weight:600;background:#78a97d1f;color:var(--brand-green);padding:.15rem .5rem;border-radius:99px;white-space:nowrap}.memory-photo-frame{width:100%;flex:1;min-height:0;perspective:1000px;-webkit-perspective:1000px;margin-bottom:.65rem;position:relative;cursor:pointer;touch-action:manipulation}.frame-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform .65s cubic-bezier(.2,.85,.25,1);border-radius:18px}.frame-inner.is-flipped{transform:rotateY(180deg);-webkit-transform:rotateY(180deg)}.frame-front,.frame-back{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:18px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden}.frame-front{background:#111;transform:rotateY(0);-webkit-transform:rotateY(0deg)}.memory-img,.memory-video{width:100%;height:100%;object-fit:cover;display:block}.flip-hint-pill{position:absolute;bottom:12px;right:12px;background:#141916a6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#fff;padding:.35rem .75rem;border-radius:99px;font-size:.72rem;font-weight:500;display:flex;align-items:center;gap:5px;box-shadow:0 4px 15px #0003;pointer-events:none;animation:hintFloat 3s ease-in-out infinite;border:1px solid rgba(255,255,255,.18)}@keyframes hintFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.double-tap-heart{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:86px;height:86px;color:var(--brand-pink);pointer-events:none;opacity:0;filter:drop-shadow(0 6px 18px rgba(255,101,132,.5));z-index:15}.double-tap-heart.animate{animation:heartPop .75s cubic-bezier(.175,.885,.32,1.275) forwards}@keyframes heartPop{0%{transform:translate(-50%,-50%) scale(0) rotate(-10deg);opacity:0}35%{transform:translate(-50%,-50%) scale(1.25) rotate(0);opacity:1}60%{transform:translate(-50%,-50%) scale(1.1) rotate(5deg);opacity:.95}to{transform:translate(-50%,-80%) scale(1.3) rotate(10deg);opacity:0}}.floating-hearts-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden;z-index:12}.floating-heart{position:absolute;font-size:1.15rem;animation:floatUpHeart 1.2s ease-out forwards;pointer-events:none}@keyframes floatUpHeart{0%{transform:translateY(0) scale(.6) rotate(0);opacity:1}to{transform:translateY(-90px) scale(1.2) rotate(25deg);opacity:0}}.frame-back{transform:rotateY(180deg);-webkit-transform:rotateY(180deg);background:linear-gradient(135deg,#fffdf8,#f5efe6);border:2px dashed rgba(120,169,125,.35);box-shadow:inset 0 0 40px #78a97d0f;display:flex;flex-direction:column;padding:1.1rem}.postcard-wrapper{width:100%;height:100%;display:flex;flex-direction:column;justify-content:space-between}.postcard-top{display:flex;align-items:flex-start;justify-content:space-between}.postmark{display:flex;align-items:center;gap:6px}.postmark-circle{width:48px;height:48px;border-radius:50%;border:1.5px solid rgba(107,122,111,.5);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.62rem;font-weight:700;letter-spacing:1px;color:var(--text-muted);transform:rotate(-12deg);text-transform:uppercase}.postmark-sub{font-size:.5rem;opacity:.8}.postmark-wavy{display:flex;flex-direction:column;gap:3px}.postmark-wavy span{width:32px;height:1.5px;background:#6b7a6f66;border-radius:2px}.postcard-stamp{width:52px;height:64px;border:1.5px dashed var(--brand-green);border-radius:4px;background:#ffffffd9;display:flex;align-items:center;justify-content:center;padding:3px;box-shadow:0 2px 6px #0000000a;transform:rotate(4deg)}.stamp-inner{width:100%;height:100%;background:#78a97d1a;border:1px solid rgba(120,169,125,.3);display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:4px 2px;font-size:.55rem;font-weight:700;color:var(--brand-green);text-align:center}.stamp-heart{font-size:.85rem}.stamp-val{font-size:.52rem}.postcard-divider{width:100%;height:1px;background:linear-gradient(90deg,transparent,rgba(120,169,125,.25),transparent);margin:.4rem 0}.postcard-middle{flex:1;display:flex;flex-direction:column;justify-content:center;padding:.25rem .2rem}.postcard-label{font-size:.7rem;letter-spacing:1.5px;text-transform:uppercase;color:var(--brand-green);font-weight:700;margin-bottom:.5rem}.postcard-text{font-family:Playfair Display,Georgia,serif;font-style:italic;font-size:1.02rem;line-height:1.55;color:#383129}.postcard-bottom{text-align:center;padding-top:.25rem}.flip-back-prompt{font-size:.72rem;font-weight:600;color:var(--brand-green);background:#78a97d1a;padding:.3rem .8rem;border-radius:99px;display:inline-block}.memory-text-block{text-align:left;flex-shrink:0}.memory-title{font-family:Playfair Display,serif;font-size:1.35rem;margin-bottom:.2rem;line-height:1.2}.memory-desc{font-size:.84rem;color:var(--text-muted);line-height:1.35;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.memory-nav{display:flex;gap:.65rem;width:100%;flex-shrink:0}.final-content{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding-top:calc(var(--safe-top) + 2rem);padding-bottom:calc(var(--safe-bottom) + 2rem);padding-left:1.5rem;padding-right:1.5rem;text-align:center}.final-badge{font-size:.8rem;font-weight:600;color:var(--brand-green);text-transform:uppercase;letter-spacing:1.5px}.final-title{font-family:Playfair Display,serif;font-size:2.1rem;line-height:1.2}.final-card{background:#ffffffe6;padding:1.5rem;border-radius:28px;border:1px solid rgba(255,255,255,.8);box-shadow:0 15px 35px #78a97d1f}.final-text{font-size:.95rem;color:var(--text-dark);line-height:1.6;margin-bottom:1rem}.final-signature{font-family:Playfair Display,serif;font-style:italic;color:var(--brand-green);font-size:1.1rem}.final-actions{display:flex;flex-direction:column;gap:.5rem;width:100%}.btn-primary{width:100%;padding:.95rem 1.5rem;background:var(--brand-green);color:#fff;border:none;border-radius:99px;font-size:.95rem;font-weight:600;cursor:pointer;box-shadow:0 10px 25px #78a97d4d;transition:transform .1s active,background-color .2s ease;touch-action:manipulation}.btn-primary:active{transform:scale(.97);background-color:var(--brand-green-hover)}.btn-secondary{padding:.95rem 1.25rem;background:#0000000d;color:var(--text-dark);border:none;border-radius:99px;font-size:.9rem;font-weight:600;cursor:pointer;touch-action:manipulation}.btn-secondary:active{transform:scale(.97)}.flex-1{flex:1}.balloons-container,.confetti-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.balloons-container{z-index:5}.confetti-container{z-index:30}.balloon{position:absolute;bottom:-100px;width:44px;height:54px;border-radius:50%/40% 40% 60% 60%;cursor:pointer;pointer-events:auto;box-shadow:inset -4px -6px 10px #00000024,0 10px 24px #2b0f4c40}.balloon:before{content:"";position:absolute;top:18%;left:22%;width:26%;height:22%;border-radius:50%;background:#fff9;transform:rotate(-30deg)}.balloon:after{content:"";position:absolute;width:1.5px;height:50px;background:#0000001f;left:50%;top:100%;transform:translate(-50%)}.balloon-red{background:linear-gradient(135deg,#ff6b81,#e8173f)}.balloon-blue{background:linear-gradient(135deg,#5cb8ff,#1f6feb)}.balloon-yellow{background:linear-gradient(135deg,#ffe45c,#ffb800)}.balloon-pink{background:linear-gradient(135deg,#ff8ad0,#f0359b)}.balloon-purple{background:linear-gradient(135deg,#b48cff,#7b3ff2)}.balloon-green{background:linear-gradient(135deg,#6cf5c2,#11c08a)}@keyframes float-up{0%{bottom:-100px;opacity:1}to{bottom:110vh;opacity:.85}}.confetti{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;pointer-events:none;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}@keyframes confetti-burst{0%{opacity:1;transform:translate(0) rotate(0)}to{opacity:0;transform:translate(var(--tx),var(--ty)) rotate(720deg)}}@media(max-height:720px){.memory-card{padding:.65rem}.photo-container-home{max-width:68vw;max-height:68vw}.postcard-text{font-size:.9rem;line-height:1.4}.memory-title{font-size:1.15rem}}
