:root{--bg:#fff7fb;--bg-soft:#fffdf8;--text:#725c68;--text-strong:#3c2731;--accent:#ff6f9f;--accent-strong:#d94a7d;--mint:#9dd8cf;--sun:#ffd36e;--display:Georgia, "Times New Roman", serif;--sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;color:var(--text);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(90deg,#ff8fb714 1px,#0000 1px) 0 0/34px 34px,linear-gradient(#ff8fb714 1px,#0000 1px) 0 0/34px 34px,radial-gradient(circle at 15% 8%,#9dd8cf73,#0000 26%),linear-gradient(#fff7fb 0%,#fffdf8 42%,#f7fffc 100%);font-size:16px;line-height:1.6}*{box-sizing:border-box}body{min-width:320px;min-height:100svh;margin:0}#root{min-height:100svh}.gallery-page .page-heading{max-width:720px;margin-bottom:34px}.gallery-page h1{font-size:clamp(42px,8vw,86px)}.gallery-page .page-heading p:last-child{margin-top:14px;font-size:18px}.upload-panel{justify-content:flex-start;margin-bottom:28px;display:flex}.upload-panel label{background:var(--accent);color:#fff;cursor:pointer;border-radius:999px;align-items:center;min-height:48px;padding:12px 18px;font-weight:800;transition:transform .18s,box-shadow .18s,background .18s;display:inline-flex}.upload-panel label:hover{background:var(--accent-strong);transform:translateY(-2px);box-shadow:0 14px 28px #bc577e38}.upload-panel input{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.polaroid-card{transform:rotate(var(--tilt));background:#fffdf9;border:1px solid #bc577e24;border-radius:8px;margin:0;padding:12px 12px 20px;transition:transform .18s,box-shadow .18s;box-shadow:0 18px 50px #83486124}.polaroid-card:first-child{--tilt:-2deg}.polaroid-card:nth-child(2){--tilt:1.4deg}.polaroid-card:nth-child(3){--tilt:-.8deg}.polaroid-card:hover{transform:translateY(-6px)rotate(0);box-shadow:0 24px 62px #83486133}.gallery-art{aspect-ratio:1/.9;background:var(--gallery-bg);border-radius:8px;place-items:center;margin-bottom:14px;display:grid;overflow:hidden}.uploaded-image{aspect-ratio:1/.9;object-fit:cover;border-radius:8px;width:100%;margin-bottom:14px;display:block}.gallery-art span{width:54px;height:54px;color:var(--accent-strong);font-family:var(--display);background:#ffffffa3;border-radius:999px;place-items:center;font-size:32px;display:grid}.gallery-peach{--gallery-bg:radial-gradient(circle at 70% 24%, #fff5a8 0 12%, transparent 13%), linear-gradient(145deg, #ffb3c7, #ffd39b)}.gallery-mint{--gallery-bg:radial-gradient(circle at 35% 66%, #fff 0 11%, transparent 12%), linear-gradient(145deg, #9dd8cf, #b8e4f0 55%, #f8c4d8)}.gallery-lilac{--gallery-bg:radial-gradient(circle at 62% 40%, #fff 0 10%, transparent 11%), linear-gradient(145deg, #d7b7ff, #ffbdd0 52%, #ffe48a)}.polaroid-card figcaption{color:var(--text-strong);text-align:center;font-weight:800}.photo-actions{grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:12px;display:grid}.photo-actions input{min-width:0;color:var(--text-strong);font:inherit;background:#fff8fb;border:1px solid #bc577e38;border-radius:999px;padding:9px 12px;font-size:14px;font-weight:700}.photo-actions button{color:var(--accent-strong);background:#fff0f6;padding:9px 13px;font-size:14px}@media (width<=820px){.gallery-grid,.photo-actions{grid-template-columns:1fr}}.home-page{min-height:calc(100svh - 92px)}.home-hero{grid-template-columns:minmax(0,1fr) 340px;align-items:center;gap:40px;min-height:78svh;display:grid;position:relative}.home-hero:before{content:"";aspect-ratio:1;opacity:.28;filter:blur(2px);pointer-events:none;background:radial-gradient(circle at 35% 35%,#fff 0 12%,#0000 13%),linear-gradient(145deg,#ff8fb7,#ffd36e);border-radius:999px;width:260px;position:absolute;inset:36px 0 auto auto}.home-copy{z-index:1;max-width:620px;position:relative}.home-copy p:last-child{max-width:560px;margin-top:24px;font-size:20px}.love-counter{z-index:1;text-align:center;background:linear-gradient(135deg,#ffffffdb,#fff5f9c7),radial-gradient(circle at 0 0,#9dd8cf6b,#0000 52%);border:1px solid #ff8fb75c;border-radius:8px;place-items:center;min-height:300px;padding:28px;display:grid;position:relative;box-shadow:0 24px 70px #bc577e2e}.love-counter strong{color:var(--accent-strong);font-family:var(--display);font-size:94px;line-height:1}.love-counter span{color:var(--text);font-weight:700}.date-editor{background:#ffffffb3;border:1px solid #bc577e24;border-radius:8px;grid-template-columns:minmax(0,1fr) 360px;align-items:end;gap:28px;padding:28px;display:grid;box-shadow:0 18px 44px #8348611a}.date-editor h2{margin-bottom:10px}.date-editor form{gap:10px;display:grid}.date-editor label{color:var(--text-strong);font-weight:800}.date-controls{gap:10px;display:flex}.date-controls input{min-width:0;color:var(--text-strong);font:inherit;background:#fffdf9;border:1px solid #bc577e3d;border-radius:999px;flex:1;padding:11px 14px;font-weight:700}@media (width<=820px){.home-hero{grid-template-columns:1fr;min-height:auto;padding-bottom:32px}.love-counter{min-height:240px}.date-editor{grid-template-columns:1fr;padding:20px}.date-controls{flex-direction:column}}.message-page{place-items:center;min-height:calc(100svh - 120px);display:grid}.final-message{text-align:center;background:linear-gradient(135deg,#ffffffdb,#fff1f7e6),radial-gradient(circle at 20% 10%,#ffd36e57,#0000 34%);border:1px solid #bc577e29;border-radius:8px;justify-items:center;gap:18px;width:min(760px,100%);padding:56px 24px;display:grid;box-shadow:0 22px 64px #8348611f}.final-message h1{font-size:clamp(52px,10vw,104px)}.final-message p:not(.eyebrow){max-width:680px}.surprise-backdrop{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#3e233052;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.surprise-card{text-align:center;background:#fffafc;border-radius:8px;width:min(460px,100%);padding:36px;position:relative;box-shadow:0 28px 80px #3e233047}.surprise-card h2{margin-bottom:12px;font-size:34px}.close-button{width:34px;height:34px;color:var(--accent-strong);background:#fff0f6;place-items:center;padding:0;display:grid;position:absolute;top:12px;right:12px}.timeline-page .page-heading{max-width:760px;margin-bottom:34px}.timeline-page h1{font-size:clamp(42px,8vw,86px)}.timeline-page .page-heading p:last-child{margin-top:14px;font-size:18px}.timeline-form{background:#ffffffb8;border:1px solid #bc577e24;border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:16px;margin-bottom:34px;padding:22px;display:grid;box-shadow:0 18px 44px #8348611a}.field-group{gap:8px;display:grid}.field-group label{color:var(--text-strong);font-weight:800}.field-group input,.field-group textarea{width:100%;color:var(--text-strong);font:inherit;background:#fffdf9;border:1px solid #bc577e3d;border-radius:8px;padding:11px 14px;font-weight:700}.field-group input[type=file]{cursor:pointer}.field-group textarea{resize:vertical}.wide-field{grid-column:1/-1}.timeline-preview{background:#fff8fb;border:1px dashed #bc577e47;border-radius:8px;grid-template-columns:96px auto;align-items:center;gap:12px;padding:10px;display:grid}.timeline-preview img{aspect-ratio:1;object-fit:cover;border-radius:8px;width:96px}.timeline-preview button{width:fit-content;color:var(--accent-strong);background:#fff0f6;padding:9px 13px;font-size:14px}.timeline{gap:22px;padding-left:26px;display:grid;position:relative}.timeline:before{content:"";background:linear-gradient(#ff8fb7,#9dd8cf,#ffd36e);width:2px;position:absolute;top:16px;bottom:16px;left:8px}.timeline-item{background:#ffffffb8;border:1px solid #bc577e26;border-radius:8px;grid-template-columns:148px minmax(0,1fr);align-items:stretch;gap:20px;padding:16px;display:grid;position:relative;box-shadow:0 18px 44px #bc577e1c}.timeline-dot{background:var(--accent);border:3px solid #fff;border-radius:999px;width:16px;height:16px;position:absolute;top:30px;left:-24px;box-shadow:0 0 0 4px #ff8fb738}.memory-art{background:var(--art-bg);border-radius:8px;min-height:140px;overflow:hidden}.memory-photo{aspect-ratio:1/.95;object-fit:cover;border-radius:8px;width:100%;min-height:140px;display:block}.memory-sunrise{--art-bg:radial-gradient(circle at 64% 34%, #fff6bd 0 12%, transparent 13%), linear-gradient(160deg, #ff9eb8 0 30%, #ffc7a3 31% 56%, #9dd8cf 57%)}.memory-latte{--art-bg:radial-gradient(circle at 50% 44%, #fff 0 15%, transparent 16%), radial-gradient(circle at 50% 44%, transparent 0 26%, #d88a7a 27% 36%, transparent 37%), linear-gradient(135deg, #ffd8a8, #f4a7b9)}.memory-clouds{--art-bg:radial-gradient(circle at 30% 45%, #fff 0 12%, transparent 13%), radial-gradient(circle at 48% 39%, #fff 0 16%, transparent 17%), radial-gradient(circle at 64% 47%, #fff 0 13%, transparent 14%), linear-gradient(145deg, #a6dcef, #d8c7ff 58%, #ffb9c7)}.memory-custom{--art-bg:radial-gradient(circle at 70% 28%, #fff 0 10%, transparent 11%), radial-gradient(circle at 32% 70%, #ffffffd1 0 13%, transparent 14%), linear-gradient(145deg, #ff8fb7, #ffd36e 48%, #9dd8cf)}.timeline-content{align-content:center;gap:8px;display:grid}.timeline-content time{color:var(--accent-strong);font-size:14px;font-weight:800}.timeline-content h2{font-size:24px}.timeline-content span{width:fit-content;color:var(--accent-strong);background:#fff0f6;border-radius:999px;padding:5px 10px;font-size:13px;font-weight:800}.delete-memory{width:fit-content;color:var(--accent-strong);background:#fff0f6;margin-top:4px;padding:8px 12px;font-size:14px}@media (width<=700px){.timeline-form,.timeline-item,.timeline-preview{grid-template-columns:1fr}}.app-frame{width:min(1120px,100% - 32px);min-height:100svh;margin:0 auto;padding:24px 0 48px}.site-header{z-index:5;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffdf9d1;border:1px solid #bc577e24;border-radius:999px;justify-content:space-between;align-items:center;gap:18px;padding:12px;display:flex;position:sticky;top:16px;box-shadow:0 18px 44px #8348611a}.site-logo{color:var(--text-strong);font-family:var(--display);white-space:nowrap;font-size:24px;font-weight:800;line-height:1;text-decoration:none}.site-nav{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.site-nav a{min-height:38px;color:var(--text);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:800;text-decoration:none;transition:background .18s,color .18s,transform .18s}.site-nav a:hover{color:var(--accent-strong);background:#fff0f6;transform:translateY(-1px)}.page{padding:72px 0 0}.eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-size:13px;font-weight:800}h1,h2,h3,p{margin:0}h1,h2,h3{color:var(--text-strong)}h1{font-family:var(--display);text-wrap:balance;font-size:clamp(58px,13vw,132px);line-height:.88}h2{font-size:clamp(30px,5vw,54px);line-height:1}button{background:var(--accent);color:#fff;cursor:pointer;font:inherit;border:0;border-radius:999px;padding:12px 22px;font-weight:800;transition:transform .18s,box-shadow .18s,background .18s}button:hover{background:var(--accent-strong);transform:translateY(-2px);box-shadow:0 14px 28px #bc577e38}button:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #ff8fb773}@media (width<=700px){.app-frame{width:min(100% - 24px,620px);padding-top:14px}.site-header{border-radius:8px;flex-direction:column;align-items:flex-start}.site-nav{justify-content:flex-start}.page{padding-top:48px}}
