:root{--ink:#3d5847;--muted:#697864;--cream:#fbfaf4;--sage:#e9eee3;--rose:#b77479;--line:#c2ccb7}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#e2e8dc;color:var(--ink);font-family:"Songti SC","Noto Serif CJK SC",SimSun,serif}main{max-width:600px;margin:auto;background:var(--cream);overflow:hidden}section{text-align:center;padding:65px 30px}.eyebrow,small{font-family:Georgia,"Songti SC",serif;font-size:10px;letter-spacing:3px;color:var(--muted)}.hero{min-height:800px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:125px 30px 105px;background:radial-gradient(ellipse at 50% 35%,#fffdf6 0%,#fbfaf4 58%,#f1f3e9 100%)}.hero:before{content:"";position:absolute;inset:36px 33px;border:1px solid #b9c7ad99;border-radius:48% 48% 0 0;pointer-events:none}.hero:after{content:"";position:absolute;inset:0;background:url('botanical-frame.svg') center/100% 100% no-repeat;pointer-events:none}.hero>*{position:relative;z-index:1}.hero .eyebrow{font-size:10px;letter-spacing:4px}.monogram{font:italic 64px Georgia,serif;color:var(--rose);margin:23px auto 15px}.hero .monogram{width:120px;line-height:1.2;font-size:52px}.hero .eyebrow.invite-line{margin:20px 0 12px;color:#63775e;letter-spacing:5px}.names{font-size:36px;letter-spacing:6px;font-weight:400;line-height:1.5;margin:10px 0;color:#344f3f}.names span{display:block;font:italic 25px Georgia,serif;color:#bd8990;letter-spacing:0;margin:7px 0}.intro{font-size:13px;line-height:2.3;letter-spacing:2px;color:#6a7664;margin:23px 0 14px}.date{font:26px Georgia,serif;letter-spacing:4px;margin:15px 0 14px;color:#4e684e}.scroll{margin-top:30px;text-decoration:none;font-size:11px;letter-spacing:3px;color:#7b8973}.line{width:40px;height:1px;background:var(--line);margin:24px auto}.heading{font-weight:400;letter-spacing:3px;font-size:25px;line-height:1.6;margin:15px 0 20px}.copy{font-size:14px;line-height:2.5;letter-spacing:1.5px;color:var(--muted)}.gallery-main{padding:30px 36px 0;background:linear-gradient(#f1f3e9, var(--cream))}.photo{display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:3/4;color:#78856d;background:radial-gradient(ellipse at 80% 20%,#f6e7e3aa,transparent 65%),linear-gradient(145deg,#e6ecdf,#f3f4ec);border:1px solid #cbd3be;outline:1px solid #dfe5d6;outline-offset:7px}.gallery-main .photo{border-radius:220px 220px 4px 4px}.photo svg{width:55px;height:55px;stroke:#9aab8e;fill:none;stroke-width:1}.photo p{font-size:13px;letter-spacing:3px;margin:17px 0 12px}.photo small{font-size:9px;letter-spacing:1px;color:#78856e}#invitation{padding-top:75px;padding-bottom:62px}.botanical-divider{width:80px;height:38px;color:#94a485;margin:8px auto}.memories{padding:30px 30px 60px;background:#f4f4ed}.memories .heading{font-size:24px;letter-spacing:2px}.photo-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;margin:28px 0}.memories .photo{margin:0;min-height:0;outline-offset:4px;border-radius:100px 100px 3px 3px}.memories .photo-pair:nth-of-type(2) .photo{border-radius:3px 3px 100px 100px}.memories .photo svg{width:42px;height:42px}.memories .photo p{font-size:12px;letter-spacing:2px}.memories .photo.wide{aspect-ratio:4/3;border-radius:3px;margin:36px 0;background:linear-gradient(135deg,#e5ebdf,#f2e7e2)}.details{position:relative;background:#e8eedf;padding-top:60px;padding-bottom:45px;border-top:1px solid #d5decb;border-bottom:1px solid #d5decb}.details small{color:#68805c}.bigdate{font:48px Georgia,serif;letter-spacing:4px;color:#4c6949;margin:25px 0 12px}.weekday{font-size:14px;letter-spacing:2px}.times{display:flex;justify-content:center;gap:34px;margin:35px 0}.time b{font:30px Georgia,serif;display:block;margin-bottom:12px;color:#4a6548}.time span{font-size:13px;letter-spacing:2px;color:#6d7c62}.venue{font-size:23px;font-weight:400;letter-spacing:3px;margin-top:30px}.address{font-size:14px;line-height:2;letter-spacing:1px}.actions{display:flex;gap:12px;justify-content:center;margin-top:28px}button,a.button{font:13px "Songti SC",serif;letter-spacing:1px;border:1px solid #879d7c;padding:14px 18px;border-radius:30px;background:transparent;color:#496445;text-decoration:none;cursor:pointer;display:inline-block}.button.primary{background:#647e5a;color:#fffdf7;border-color:#647e5a}button:focus-visible,a:focus-visible{outline:2px solid #b77479;outline-offset:4px}.toast{min-height:24px;margin-top:15px;font-size:12px;color:#536b49}.closing{padding:65px 25px 55px;background:radial-gradient(ellipse at 50% 80%,#f5e7e3aa,transparent 80%)}.closing .monogram{font:italic 39px Georgia,serif;letter-spacing:0;margin-top:25px}.footer{font-size:11px;letter-spacing:3px;color:#87957c;margin-top:32px}.countdown{padding:45px 26px 60px;background:#e8eedf;border-top:1px solid #d5decb}.countdown .heading{font-size:23px;letter-spacing:2px}.count-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;max-width:460px;margin:30px auto 22px}.count-grid>div{border:1px solid #c4d0b9;background:#f8f9f1;padding:19px 3px 15px;border-radius:35px 35px 4px 4px}.count-grid b{display:block;font:clamp(25px,7vw,38px) Georgia,serif;font-variant-numeric:tabular-nums;color:#54714d}.count-grid span{display:block;font-size:12px;color:#75866a;margin-top:12px;letter-spacing:2px}.count-note,.count-wish{font-size:12px;color:#6f8065;line-height:1.9;letter-spacing:1px}.count-wish{letter-spacing:2px}@media(min-width:700px){main{margin:26px auto;box-shadow:0 18px 60px #3a52351c}}@media(max-width:400px){.hero{min-height:740px;padding-top:115px;padding-bottom:90px}.names{font-size:32px}.hero:before{inset:32px 24px}.hero .eyebrow{letter-spacing:3px}.intro{font-size:12px;letter-spacing:1px}.memories{padding-left:24px;padding-right:24px}.photo-pair{gap:16px}.memories .heading{font-size:22px}.closing .monogram{font-size:34px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.hero .monogram{width:auto;white-space:nowrap;font-size:52px}.hero:after{background-size:100% 100%}.hero .intro{max-width:310px}

/* Gentle garden motion */
.petal-layer{position:fixed;top:0;bottom:0;left:50%;width:100%;max-width:600px;transform:translateX(-50%);overflow:hidden;z-index:8;pointer-events:none;user-select:none;contain:layout paint}.petal-fall{position:absolute;top:-32px;left:var(--left);width:var(--size);height:calc(var(--size)*1.3);animation:petal-fall var(--duration) var(--delay) linear infinite;opacity:0}.petal-drift{display:block;width:100%;height:100%;animation:petal-drift var(--sway) var(--delay) ease-in-out infinite alternate}.petal-shape{display:block;width:100%;height:100%;border-radius:85% 12% 75% 28%;background:linear-gradient(135deg,#edd1d5 10%,#cb8d9a 90%);animation:petal-turn var(--turn) var(--delay) ease-in-out infinite;transform-origin:45% 65%}.petal-shape.tone-1{background:linear-gradient(135deg,#f4e4d4,#dec0bd)}.petal-shape.tone-2{background:linear-gradient(135deg,#f4dce3,#dca3b5)}.motion-toggle{position:fixed;right:max(14px,calc((100vw - 600px)/2 + 14px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:12;border:1px solid #b8c6ac;background:#fbfaf4f2;color:#58734f;padding:10px 13px;font:11px "Songti SC",serif;letter-spacing:1px;border-radius:24px;box-shadow:0 2px 12px #3f583b12;touch-action:manipulation}.motion-toggle[hidden]{display:none}.garden-reveal{transition:opacity .85s ease,transform .85s ease}.reveal-pending{opacity:0;transform:translateY(15px)}.hero .names,.hero .intro,.hero .date{animation:garden-enter 1.2s ease both}.hero .intro{animation-delay:.15s}.hero .date{animation-delay:.3s}.hero .scroll{animation:scroll-breathe 3.5s ease-in-out infinite}.motion-stopped .petal-fall,.motion-stopped .petal-drift,.motion-stopped .petal-shape,.motion-stopped .hero .scroll{animation-play-state:paused}.motion-disabled .petal-layer{visibility:hidden}.motion-disabled .hero .names,.motion-disabled .hero .intro,.motion-disabled .hero .date,.motion-disabled .hero .scroll{animation:none}.motion-disabled .garden-reveal{transition:none;opacity:1;transform:none}@keyframes petal-fall{0%{transform:translate3d(0,-20px,0);opacity:0}8%{opacity:var(--alpha)}88%{opacity:var(--alpha)}100%{transform:translate3d(0,calc(100vh + 65px),0);opacity:0}}@keyframes petal-drift{from{transform:translateX(-18px)}to{transform:translateX(22px)}}@keyframes petal-turn{0%{transform:rotate(var(--angle)) rotateY(0deg)}50%{transform:rotate(calc(var(--angle) + 95deg)) rotateY(65deg)}100%{transform:rotate(calc(var(--angle) + 190deg)) rotateY(0deg)}}@keyframes garden-enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scroll-breathe{0%,100%{opacity:.55;transform:translateY(0)}50%{opacity:1;transform:translateY(4px)}}@media(prefers-reduced-motion:reduce){.petal-layer,.motion-toggle{display:none}.hero .names,.hero .intro,.hero .date,.hero .scroll{animation:none}.garden-reveal,.reveal-pending{transition:none;opacity:1;transform:none}}

.music-player{position:fixed;z-index:15;left:max(12px,calc((100vw - 600px)/2 + 12px));bottom:calc(14px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:9px;padding:7px 12px 7px 7px;max-width:calc(100vw - 118px);border:1px solid #b8c6ac;border-radius:32px;background:#fbfaf4f5;box-shadow:0 2px 12px #3f583b12}.music-player button{white-space:nowrap;flex-shrink:0;border:0;border-radius:24px;background:#647e5a;color:#fffdf7;font-size:12px;padding:11px 13px;letter-spacing:0;min-height:40px}.music-info{min-width:0;max-width:190px;text-align:left}.music-info>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:#48613e;line-height:1.6}.music-info small{display:block;font-size:9px;letter-spacing:0;color:#7c886f;line-height:1.6}.music-player audio{display:none}.closing{padding-bottom:75px}.countdown{padding-bottom:100px}@media(max-width:360px){.music-player{gap:6px;padding-right:9px}.music-player button{padding:10px}.music-info>span{font-size:10px}}
.wedding-calendar{padding:64px 24px 48px;text-align:center;background:#f6f4eb}
.wedding-calendar>small{font-size:10px;letter-spacing:4px;color:#7c8b76}
.calendar-month{font-size:29px;letter-spacing:4px;color:#52644f;margin:28px 0 24px}.calendar-month span{font-size:13px}
.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;max-width:490px;margin:auto}
.calendar-week{color:#7e8a77;font-size:12px;padding-bottom:12px;border-bottom:1px solid #d8ddce}
.calendar-grid{padding-top:10px}.calendar-day{min-height:68px;padding:9px 0;border-radius:30px;display:flex;flex-direction:column;align-items:center;gap:4px}
.calendar-day b{font-size:20px;font-weight:400;color:#4e604c}.calendar-day small{font-size:9px;color:#889080;white-space:nowrap}
.calendar-day.wedding-day{background:#a96f79;box-shadow:0 3px 15px #a96f7922}.wedding-day b,.calendar-day.wedding-day small{color:#fffaf5}.wedding-day em{font-size:9px;font-style:normal;color:#fff5e6;white-space:nowrap}
.calendar-note{font-size:12px;color:#a96f79;letter-spacing:1px;margin-top:23px}
.scroll-toggle{position:fixed;right:max(12px,calc((100vw - 600px)/2 + 12px));bottom:calc(70px + env(safe-area-inset-bottom));z-index:90;padding:10px 14px;border:1px solid #b5bfaa;border-radius:30px;background:#fafaf4ed;color:#5c6d52;font:12px Georgia,serif;cursor:pointer}
@media(max-width:370px){.wedding-calendar{padding-left:12px;padding-right:12px}.calendar-day small{font-size:8px}.calendar-day{min-height:65px}.calendar-grid{gap:2px}}
