:root{--green:#ffdc20;--dark:#18130e;--orange:#ff7a3d;--paper:#f7f5ed;--ink:#2b241e}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--dark)}
body{margin:0;font-family:"PingFang SC","Microsoft YaHei",Arial,sans-serif;color:var(--ink)}
.music-button{position:fixed;z-index:20;top:max(18px,env(safe-area-inset-top));right:max(18px,calc((100vw - 560px)/2 + 18px));height:38px;padding:0 13px 0 9px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(24,19,14,.78);color:#fff;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;gap:7px;font:11px/1 "PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:.1em;cursor:pointer;box-shadow:0 6px 24px rgba(0,0,0,.15)}
.music-icon{display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:var(--green);color:var(--dark);font:bold 14px/1 Arial}
.music-button.is-playing .music-icon{animation:musicPulse 1.8s ease-in-out infinite}
.music-button:focus-visible{outline:2px solid var(--green);outline-offset:3px}
.invitation{max-width:560px;margin:auto;background:var(--paper);overflow:hidden}
.cover{min-height:100svh;background:radial-gradient(circle at 90% 20%,#4d3d19 0,transparent 30%),linear-gradient(160deg,#17120e,#292014);color:white;position:relative;padding:28px 28px 42px;display:flex;flex-direction:column;align-items:center;text-align:center;overflow:hidden}
.cover:after{content:"";position:absolute;width:360px;height:360px;border:1px solid rgba(102,232,117,.12);border-radius:50%;right:-220px;bottom:-100px}
.glow{position:absolute;width:220px;height:220px;background:var(--green);filter:blur(90px);opacity:.12;left:-120px;top:45%}
.topbar{width:100%;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2}
.logo{font-size:17px;font-weight:800;letter-spacing:.08em;display:flex;align-items:center;gap:10px}
.logo img{display:block;width:38px;height:38px;object-fit:cover;border-radius:10px}
.logo strong{font-size:17px}
.logo-tip{font:9px Arial;color:#a59676;letter-spacing:.18em}
.anniversary{margin-top:9vh;width:152px;height:152px;border:1px solid rgba(102,232,117,.25);border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative}
.anniversary:after{content:"";position:absolute;inset:9px;border:1px dashed rgba(255,255,255,.12);border-radius:50%}
.anniversary b{font:bold 90px/1 Arial;color:var(--green);letter-spacing:-.08em}
.anniversary span{writing-mode:vertical-rl;font-size:12px;letter-spacing:.2em;margin-left:7px;color:#a6bdb2}
.en,.caption{font:700 9px/1 Arial;letter-spacing:.24em}
.en{color:#789487;margin:23px 0 16px}
.cover h1{font-size:31px;line-height:1.45;letter-spacing:.06em;margin:0}
.cover h1 span{color:var(--green);font-size:47px}
.line{width:28px;height:3px;border-radius:3px;background:var(--orange);margin:24px}
.cover h2{font-size:15px;line-height:1.8;letter-spacing:.1em;margin:0;color:#d6e2dc}
.brief{margin-top:30px;width:100%;max-width:320px;border-top:1px solid rgba(255,255,255,.14);border-bottom:1px solid rgba(255,255,255,.14);padding:15px;display:flex;align-items:center;justify-content:center;gap:19px}
.brief strong{font-size:13px;letter-spacing:.1em}
.brief i{height:22px;width:1px;background:rgba(255,255,255,.16)}
.down{margin-top:auto;padding-top:35px;color:#718d80;font-size:10px;letter-spacing:.14em}
.down span{color:var(--green);margin-left:8px}
.letter-page{background:#ebe9df;padding:28px 18px}
.paper{background:var(--paper);padding:48px 27px;box-shadow:0 12px 40px rgba(19,39,30,.08);border-radius:2px;position:relative}
.paper:before{content:"";position:absolute;inset:10px;border:1px solid #e4e1d6;pointer-events:none}
.caption{color:var(--orange);margin:0 0 25px;position:relative}
.paper h3{font-size:21px;margin:0 0 24px;letter-spacing:.04em;position:relative}
.paper>p:not(.caption){font-size:14px;line-height:2.05;color:#53645c;text-align:justify;margin:0 0 20px;position:relative}
.paper>p:not(.caption):first-letter{font-size:18px;color:var(--ink)}
blockquote{margin:28px -9px;padding:22px 15px;background:var(--dark);color:white;border-radius:2px 16px 2px 16px;font-size:17px;line-height:1.7;font-weight:800;text-align:center;position:relative}
blockquote:before{content:"“";color:var(--green);font:50px/1 Georgia;position:absolute;left:9px;top:0;opacity:.3}
.details-page{background:#f7f5ed;padding:76px 28px}
.section-title{font-size:32px;line-height:1.25;margin:12px 0 32px;letter-spacing:.02em}
.detail-card{display:grid;grid-template-columns:46px 1fr;gap:14px;align-items:center;padding:18px 0;border-bottom:1px solid #ddd9cd}
.detail-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:13px 13px 13px 3px;background:var(--dark);color:var(--green);font-size:14px;font-weight:800}
.detail-card>div:last-child{display:flex;flex-direction:column;gap:5px}
.detail-card small,.address-box small{font-size:10px;color:#8b8178;letter-spacing:.14em}
.detail-card strong{font-size:16px;line-height:1.5}.detail-card p{font-size:12px;color:#766c63;margin:0}
.address-box{margin-top:18px;padding:20px;background:#ebe7dc;border-radius:3px 18px 3px 18px;display:flex;flex-direction:column;gap:7px}
.address-box strong{font-size:16px}.address-box p{font-size:12px;color:#766c63;margin:0}
.subheading{font-size:19px;margin:42px 0 13px}
.transport-list{border-top:1px solid #ddd9cd}
.transport-list article{display:grid;grid-template-columns:35px 1fr;gap:12px;padding:18px 0;border-bottom:1px solid #ddd9cd}
.transport-list article>span{font:700 10px/1 Arial;color:var(--orange);padding-top:4px}
.transport-list strong{font-size:15px}.transport-list p{font-size:12px;line-height:1.8;color:#6e655d;margin:6px 0 0}.transport-list b{color:var(--ink)}
.agenda-page{background:#ebe9df;padding:76px 28px}
.agenda-date{height:92px;background:var(--dark);color:#fff;border-radius:3px 22px 3px 22px;display:flex;align-items:center;padding:18px 22px;margin-bottom:24px}
.agenda-date span{align-self:flex-start;font:700 9px Arial;letter-spacing:.2em;color:var(--green)}
.agenda-date strong{font:bold 52px/1 Arial;margin-left:-18px;margin-top:12px}
.agenda-date small{margin-left:auto;color:#a79a88;font-size:11px;letter-spacing:.1em}
.timeline{position:relative;padding-left:15px}.timeline:before{content:"";position:absolute;top:8px;bottom:8px;left:20px;width:1px;background:#d3cec1}
.timeline article{position:relative;display:grid;grid-template-columns:105px 1fr;gap:15px;padding:0 0 26px 24px}
.timeline article:before{content:"";position:absolute;left:0;top:4px;width:11px;height:11px;border:3px solid #ebe9df;border-radius:50%;background:var(--orange);box-shadow:0 0 0 1px var(--orange)}
.timeline time{font:bold 11px/1.5 Arial;color:#776c62}.timeline div{display:flex;flex-direction:column;gap:7px}.timeline strong{font-size:15px}.timeline small{font-size:10px;color:#8d8379}
.ending{background:linear-gradient(160deg,#18130e,#2c2215);color:white;padding:76px 28px max(50px,env(safe-area-inset-bottom));text-align:center;position:relative}
.ending:before{content:"02";position:absolute;top:30px;left:-18px;font:bold 130px/1 Arial;color:transparent;-webkit-text-stroke:1px rgba(102,232,117,.08)}
.ending .caption{color:#789487}
.ending h3{font-size:36px;line-height:1.35;margin:25px 0 35px}
.ending h3 span{color:var(--green);font-size:52px}
.event-card{border:1px solid rgba(255,255,255,.14);border-radius:3px 20px 3px 20px;background:rgba(255,255,255,.04);display:grid;grid-template-columns:1fr 1fr;text-align:left;padding:22px}
.event-card>div{display:flex;flex-direction:column;gap:8px}
.event-card>div+div{border-left:1px solid rgba(255,255,255,.13);padding-left:19px}
.event-card small{font:9px Arial;color:var(--green);letter-spacing:.2em}
.event-card strong{font-size:13px;line-height:1.45}
.event-card p{grid-column:1/3;margin:22px 0 0;padding-top:17px;border-top:1px solid rgba(255,255,255,.1);font-size:10px;color:#7e9a8d;letter-spacing:.1em;text-align:center}
.sign{margin:50px 0 0;display:flex;flex-direction:column;gap:7px}
.sign span{font-size:26px;color:var(--green);font-weight:900;letter-spacing:.12em}
.sign strong{font-size:12px;letter-spacing:.12em}
.footer{font-size:10px;color:#668276;letter-spacing:.18em;margin:45px 0 0}
@media(min-width:700px){.invitation{box-shadow:0 0 60px rgba(0,0,0,.2)}.paper{padding:60px 45px}.cover{padding-left:44px;padding-right:44px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@keyframes musicPulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(255,220,32,.35)}50%{transform:scale(1.08);box-shadow:0 0 0 7px rgba(255,220,32,0)}}
