:root{--cream:#f7f1e8;--paper:#fffaf2;--ink:#2a2522;--muted:#847b74;--rose:#a95561;--deep:#1d1a1a;--line:#d8cec3}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang HK","Noto Sans TC",sans-serif;-webkit-font-smoothing:antialiased}.progress{position:fixed;z-index:20;top:0;left:0;width:100%;height:2px;background:rgba(0,0,0,.05)}.progress span{display:block;width:0;height:100%;background:var(--rose)}.panel{min-height:100svh;padding:72px 24px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.section-inner,.turn-copy{width:min(100%,620px)}.hero{text-align:center;background:radial-gradient(circle at 50% 42%,#fff 0,#f8f1e7 42%,#eee3d6 100%)}.eyebrow{position:absolute;top:34px;letter-spacing:.26em;font-size:11px;color:var(--muted)}.tiny,.chapter{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}h1,h2{font-family:Georgia,"Times New Roman","Noto Serif TC",serif;font-weight:400}h1{font-size:clamp(52px,15vw,86px);line-height:1;margin:8px 0 24px}.heart{display:block;color:var(--rose);font-size:.7em;margin-top:18px}.lead{font-size:17px;letter-spacing:.06em;color:#5d5550}.scroll-cue{position:absolute;bottom:34px;border:0;background:transparent;font-size:25px;color:var(--muted);animation:bob 1.8s infinite;cursor:pointer}@keyframes bob{50%{transform:translateY(7px)}}.chapter{margin-bottom:28px}.section-inner>h2,.turn h2{font-size:clamp(38px,10vw,62px);line-height:1.12;margin:0 0 42px}.wish-list{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:15px 0}.wish-list p{display:flex;gap:15px;align-items:center;margin:0;padding:14px 5px;border-bottom:1px dashed #ded5cc;font-size:17px}.wish-list p:last-child{border:0}.wish-list span{width:28px}.thought{margin:36px 0 0;text-align:center;line-height:1.8;color:#6e645d}.thought strong{color:var(--ink)}.reality{background:var(--deep);color:#f7efe6}.reality .chapter,.reality .caption{color:#a79c94}.noise{position:absolute;inset:0;opacity:.05;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='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.chat{text-align:center;margin:10px auto 36px}.date,.mono{font:11px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.14em;color:#9f958e}.bubble{font-size:21px;margin:18px 0 8px}.bubble.danger{color:#ffb5b5}.emoji{font-size:30px;margin:4px}.pm-card{position:relative;background:#282424;border:1px solid #403a37;border-radius:16px;padding:20px;box-shadow:0 24px 60px rgba(0,0,0,.25)}.pm-card>div{display:flex;justify-content:space-between;padding:11px 0;border-top:1px solid #3a3431}.pm-card b{color:#b8d8bc}.pm-card em{font-style:normal;color:#b7aaa0;font-size:13px}.caption{text-align:center;font-size:12px;margin-top:22px}.timeline-panel{background:#f2eadf}.day{margin-top:30px}.day-title{font:12px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.2em;color:var(--rose);margin-bottom:18px}.event{display:grid;grid-template-columns:54px 14px 1fr;gap:10px;min-height:82px;position:relative}.event time{font-size:11px;color:var(--muted);padding-top:2px}.dot{width:8px;height:8px;background:var(--rose);border-radius:50%;margin-top:4px;position:relative}.dot:after{content:"";position:absolute;top:10px;left:3px;width:1px;height:65px;background:#cfc4ba}.event:last-child .dot:after{display:none}.event p{margin:0;font-size:16px;line-height:1.45}.event small{color:var(--muted)}.muted-day{opacity:.7;margin-top:32px}.turn{text-align:center;background:#a75c66;color:#fff}.turn-copy p{font-size:15px;letter-spacing:.06em}.turn h2{margin:22px 0}.turn .soft{font-family:Georgia,"Noto Serif TC",serif;font-size:21px}.letter-panel{background:var(--cream);align-items:flex-start;padding-top:100px}.letter-panel .section-inner{text-align:center}.envelope{width:min(290px,82vw);height:180px;margin:10px auto 40px;border:1px solid #d4c4b5;background:#ead8c6;position:relative;display:block;cursor:pointer;box-shadow:0 18px 45px rgba(65,46,34,.12);transition:transform .35s}.envelope:hover{transform:translateY(-3px)}.flap{position:absolute;left:0;top:0;width:100%;height:100%;clip-path:polygon(0 0,100% 0,50% 64%);background:#dfc8b2;transform-origin:top;transition:transform .7s}.seal{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--rose);color:white;font-size:22px;z-index:2}.envelope-label{position:absolute;bottom:14px;left:0;width:100%;font:9px ui-monospace,monospace;letter-spacing:.18em;color:#79685b}.envelope.open .flap{transform:rotateX(180deg)}.letter{display:none;text-align:left;background:var(--paper);padding:34px 26px;margin:0 auto;border-radius:3px;box-shadow:0 18px 60px rgba(65,46,34,.1);font-family:Georgia,"Noto Serif TC",serif;font-size:16px;line-height:2;color:#38302c;animation:letterIn .8s both}.letter.show{display:block}@keyframes letterIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.salute{font-size:22px}.big-love{font-size:29px;color:var(--rose);text-align:center;padding:14px 0}.sign{text-align:right;color:#766b63;font-size:13px;margin-top:30px}.finale{text-align:center;background:#181616;color:#f7efe6}.ps{font:11px ui-monospace,monospace;letter-spacing:.22em;color:#9c918a}.finale h2{font-size:clamp(40px,11vw,68px);line-height:1.12}.tomorrow{margin:54px 0;display:flex;flex-direction:column;gap:14px}.tomorrow span{font-size:12px;letter-spacing:.25em;color:#9c918a}.tomorrow strong{font:13px ui-monospace,monospace;letter-spacing:.2em}.tomorrow i{font-style:normal;color:#d78994;font-size:34px}.brand{position:absolute;bottom:30px;left:0;width:100%;font-family:Georgia,serif;color:#7f7570}.brand b{color:#eee5df}.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:none}@media(min-width:700px){.panel{padding:90px 40px}.letter{padding:50px 55px}.pm-card{padding:28px}.wish-list p{font-size:18px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.scroll-cue{animation:none}.flap{transition:none}}