:root{--ink:#4c2637;--muted:#986f80;--pink:#d96e95;--pink-dark:#a7476c;--rose:#f8dfe8;--paper:#fff9fb;--line:#f0dce4;--serif:'Playfair Display',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:76px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.65;overflow-x:hidden}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}.hidden{display:none!important}.ambient{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:0;opacity:.26}.ambient span{position:absolute;color:#e6a3bb;animation:drift 13s ease-in-out infinite}.ambient span:nth-child(1){top:15%;left:4%;font-size:25px}.ambient span:nth-child(2){top:35%;right:5%;font-size:17px;animation-delay:-4s}.ambient span:nth-child(3){top:68%;left:7%;font-size:19px;animation-delay:-7s}.ambient span:nth-child(4){top:84%;right:8%;font-size:23px;animation-delay:-2s}.ambient span:nth-child(5){top:52%;left:88%;font-size:15px;animation-delay:-9s}@keyframes drift{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-20px) rotate(15deg)}}.topbar{height:64px;position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100% - 1080px)/2));background:#fff9fbeF;backdrop-filter:blur(14px);border-bottom:1px solid #f3e2e8}.brand{font-family:var(--serif);font-size:16px;color:var(--pink-dark);display:flex;gap:8px;align-items:center}.text-button{border:0;background:transparent;color:var(--pink-dark);font-size:12px;font-weight:700;padding:10px 8px}.hero{min-height:calc(100svh - 64px);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:65px 24px 35px;position:relative;z-index:1;background:radial-gradient(ellipse at 50% 42%,#fff 0%,#fff7fa 48%,#fae8ef 100%)}.eyebrow{font-size:10px;letter-spacing:.22em;font-weight:700;color:var(--pink-dark)}.hero-heart{font-family:var(--serif);font-size:54px;color:var(--pink);line-height:1.2;margin:24px 0 12px;animation:heartbeat 2.1s ease-in-out infinite}@keyframes heartbeat{0%,100%{transform:scale(1)}12%{transform:scale(1.12)}24%{transform:scale(1)}}h1,h2{font-family:var(--serif);font-weight:500;line-height:1.15;letter-spacing:-.035em;margin:0}h1{font-size:clamp(39px,10vw,70px)}h2{font-size:clamp(32px,8vw,48px)}h1 em,h2 em{font-weight:500;color:var(--pink-dark)}.hero p{max-width:410px;color:var(--muted);font-size:14px;margin:24px auto 28px}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:14px;border:0;border-radius:999px;background:var(--pink-dark);color:white;padding:14px 22px;min-height:48px;font-size:12px;font-weight:700;box-shadow:0 8px 22px #c85d8428;transition:transform .2s,box-shadow .2s}.primary-button:active{transform:scale(.98)}.primary-button span{font-size:18px}.hero-foot{position:absolute;bottom:22px;color:#b48a9a;font-family:var(--serif);font-style:italic;font-size:13px}.hero-foot span{color:var(--pink);margin-left:8px}.section{max-width:1080px;margin:auto;padding:85px 22px;position:relative;z-index:1}.section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:30px}.section-head h2{margin-top:9px}.section-head>p{font-size:12px;color:var(--muted);margin:0 0 5px}.centered{display:block;text-align:center}.centered>p{margin-top:14px}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.photo-card{border:1px solid #f0dfe6;background:#fff;padding:8px 8px 13px;border-radius:5px;box-shadow:0 8px 26px #8f4e6410;transform:rotate(var(--tilt,0deg));transition:transform .2s;cursor:pointer;min-width:0}.photo-card:nth-child(4n+1){--tilt:-1deg}.photo-card:nth-child(4n+2){--tilt:1.3deg}.photo-card:nth-child(4n+3){--tilt:.7deg}.photo-card img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;background:#f8e4eb;border-radius:2px}.photo-card .caption{font-family:var(--serif);font-style:italic;font-size:13px;text-align:center;padding:10px 2px 0;color:#87576a;overflow-wrap:anywhere}.empty-note{text-align:center;color:#b18b9a;font-family:var(--serif);font-style:italic;padding:20px}.letters-section{max-width:none;background:#fff0f5;padding-left:max(22px,calc((100% - 1036px)/2));padding-right:max(22px,calc((100% - 1036px)/2))}.letter-grid{display:grid;grid-template-columns:1fr;gap:14px}.letter-card{position:relative;background:#fffafc;border:1px solid #f1dce5;border-radius:12px;padding:24px 20px;box-shadow:0 8px 24px #a04f6b0b;cursor:pointer;transition:transform .2s}.letter-card:before{content:'♡';position:absolute;right:16px;top:10px;color:#edbfd0;font-size:23px}.letter-card .letter-type{font-size:9px;letter-spacing:.18em;color:var(--pink-dark);font-weight:700}.letter-card h3{font-family:var(--serif);font-size:23px;font-weight:500;margin:8px 30px 8px 0}.letter-card p{font-family:var(--serif);font-style:italic;font-size:13px;color:var(--muted);margin:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.read-more{display:inline-block;color:var(--pink-dark);font-size:11px;font-weight:700;margin-top:14px}.timeline-list{max-width:660px;margin:38px auto 0;position:relative}.timeline-list:before{content:'';position:absolute;top:7px;bottom:8px;left:10px;width:1px;background:#e9bdcd}.timeline-item{position:relative;padding:0 0 32px 38px}.timeline-item:before{content:'♡';position:absolute;left:0;top:0;width:21px;height:21px;border-radius:50%;background:#fff0f5;color:var(--pink-dark);font-size:13px;display:grid;place-items:center}.timeline-item .date{font-size:10px;letter-spacing:.12em;color:var(--pink-dark);font-weight:700}.timeline-item h3{font-family:var(--serif);font-size:23px;font-weight:500;margin:5px 0}.timeline-item p{font-size:13px;color:var(--muted);margin:0;white-space:pre-wrap}.surprise-section{position:relative;text-align:center;padding:76px 22px 72px;background:linear-gradient(150deg,#f8dfe8,#fff3f7 55%,#fce8ef);overflow:hidden;z-index:1}.surprise-section h2{margin-top:12px}.surprise-section>p{color:var(--muted);font-size:13px;margin:15px 0 23px}.surprise-orbit{font-size:46px;color:#d76b91;margin-bottom:12px;animation:heartbeat 2s infinite}.surprise-message{max-width:440px;margin:22px auto 0;font-family:var(--serif);font-size:22px;font-style:italic;color:var(--pink-dark);min-height:0}.surprise-message:not(:empty){background:#ffffffa8;border:1px solid #f3d4e0;border-radius:14px;padding:20px;animation:pop .35s ease}.surprise-buttons{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:22px}.surprise-buttons button{border:1px solid #e9bfd0;background:#ffffffa8;color:#96516b;border-radius:99px;padding:9px 13px;font-size:11px}.closing{text-align:center;padding:78px 20px 68px;position:relative;z-index:1}.closing-heart{font-size:32px;color:var(--pink);margin-bottom:18px}.closing h2{font-size:clamp(34px,8vw,48px)}.closing p{color:var(--muted);font-family:var(--serif);font-style:italic;margin:18px 0 28px}.signature{font-family:var(--serif);font-style:italic;color:var(--pink-dark);font-size:18px}footer{text-align:center;border-top:1px solid var(--line);padding:18px;color:#b28c9b;font-size:10px;letter-spacing:.06em}footer span{color:var(--pink)}.modal{position:fixed;inset:0;background:#321522d9;z-index:30;display:flex;align-items:center;justify-content:center;padding:22px;backdrop-filter:blur(7px)}.modal-content{background:#fff9fb;border-radius:15px;padding:27px 23px;max-width:560px;width:100%;max-height:82svh;overflow:auto;box-shadow:0 20px 80px #0002}.modal-content h2{font-size:30px;margin:10px 0 17px}.modal-content p{font-family:var(--serif);font-size:17px;white-space:pre-wrap;line-height:1.8;color:#795063}.modal-content img{width:100%;max-height:70svh;object-fit:contain;border-radius:8px}.modal-close{position:absolute;top:15px;right:17px;border:0;background:#ffffff22;color:white;font-size:32px;width:44px;height:44px;border-radius:50%}.admin-view{min-height:100svh;background:#fff4f7;position:relative;z-index:2;padding:0 16px 55px}.admin-top{max-width:700px;margin:auto;height:60px;display:flex;align-items:center;justify-content:space-between}.admin-label{font-size:9px;letter-spacing:.15em;color:var(--muted);font-weight:700}.login-card{max-width:440px;margin:8vh auto;background:#fff;border:1px solid var(--line);padding:27px 22px;border-radius:18px;box-shadow:0 12px 35px #9d496612}.login-card h1,.editor-heading h1{font-size:38px;margin:12px 0}.login-card>p,.editor-heading p{font-size:13px;color:var(--muted)}label{display:block;font-size:12px;font-weight:700;color:#87566a;margin:15px 0}input,textarea{display:block;width:100%;margin-top:7px;padding:12px 13px;border:1px solid #ecd5df;border-radius:9px;background:#fffafd;color:var(--ink);outline:none;font-size:14px}input:focus,textarea:focus{border-color:#d9789b;box-shadow:0 0 0 3px #f9e3ec}textarea{resize:vertical;line-height:1.6}.full{width:100%;margin-top:8px}.tiny,.muted{font-size:11px!important;color:#a17d8d!important}.editor-panel{max-width:700px;margin:auto}.editor-heading{padding:26px 4px 18px}.editor-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:20px;margin:14px 0;box-shadow:0 6px 20px #9d49660a}.editor-card h3{font-family:var(--serif);font-size:22px;font-weight:500;margin:0 0 15px}.secondary-button{background:#fff0f5;color:var(--pink-dark);border:1px solid #f0d4df;border-radius:99px;padding:12px 16px;font-size:12px;font-weight:700;margin:8px 5px 0 0}.button-row{display:flex;gap:8px;flex-wrap:wrap}.admin-items{margin-top:15px}.admin-item{border-top:1px solid #f2e1e8;padding:12px 0;display:flex;gap:10px;align-items:center;justify-content:space-between}.admin-item strong{font-family:var(--serif);font-size:15px;font-weight:500}.admin-item small{display:block;color:var(--muted);font-size:10px}.admin-item .item-actions{display:flex;gap:5px;flex-shrink:0}.item-actions button{border:1px solid #efd6e0;background:#fff8fb;color:#9c4d6c;border-radius:8px;padding:7px 9px;font-size:10px}.status{font-size:12px;color:var(--pink-dark);margin-top:12px;min-height:18px}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#4c2637;color:white;border-radius:99px;padding:11px 17px;font-size:12px;z-index:50;transition:.25s;max-width:90%;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:650px){.hero{padding-top:80px}.section{padding-top:105px;padding-bottom:105px}.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.letter-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.photo-card{padding:10px 10px 15px}.photo-card img{aspect-ratio:4/4.5}.section-head{margin-bottom:40px}.section-head.centered{margin-bottom:40px}.hero p{font-size:15px}.letters-section{padding-top:95px;padding-bottom:95px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition:none!important}}
/* Romantic photo overlays and chapter galleries */
.overlay-photo-wrap{position:relative;width:min(100%,520px);height:clamp(190px,58vw,340px);margin:28px auto 6px;overflow:hidden;border-radius:24px;border:8px solid #ffffffb8;box-shadow:0 18px 45px #a7476c24;background:#f8dfe8;isolation:isolate}.overlay-photo-wrap img{width:100%;height:100%;display:block;object-fit:cover;opacity:.88;filter:saturate(.88)}.overlay-photo-wrap:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#fff9fb18 0%,#f9e5ed18 48%,#f4cbd944 100%);pointer-events:none}.photo-shimmer{position:absolute;inset:0;background:linear-gradient(110deg,transparent 25%,#ffffff2c 48%,transparent 68%);pointer-events:none}.closing-photo-wrap{margin-top:30px;width:min(100%,460px);height:clamp(180px,52vw,290px)}.hero{padding-bottom:45px}.hero .hero-foot{position:relative;bottom:auto;margin-top:18px}.chapter-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:15px}.chapter-photo{display:block;padding:4px;border:1px solid #efd8e2;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 6px 18px #a04f6b12}.chapter-photo img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:6px;background:#f8e4eb}.timeline-item .chapter-gallery{max-width:500px}@media(min-width:600px){.chapter-gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.overlay-photo-wrap{margin-top:34px}}
