@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Noto+Serif+TC:wght@500;600;700;900&family=Noto+Sans+TC:wght@400;500;600;700&display=swap";:root{--wine:#7d302d;--ink:#322a28;--muted:#887c76;--cream:#f8f4ee;--paper:#fffdf9;--line:#e9dfd6;--blush:#f2e6df}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--cream);font-family:Noto Sans TC,sans-serif;font-size:14px}button{font:inherit}.topbar{height:74px;padding:0 max(5vw,32px);display:flex;align-items:center;gap:40px;background:rgba(255,253,249,.88);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5;backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-family:"Noto Serif TC",serif;font-weight:700;line-height:1.05;letter-spacing:.04em}.brand-mark{width:31px;height:31px;display:grid;place-items:center;color:#fff;font-size:17px;border-radius:50%;background:var(--wine)}.brand small{font-family:DM Mono,monospace;color:var(--muted);font-size:7px;letter-spacing:.14em}.topbar nav{display:flex;gap:27px;margin:auto}.topbar nav a{color:#635853;text-decoration:none;font-size:12px}.updated{font:11px DM Mono,monospace;color:#9b8e88}.hero{min-height:480px;text-align:center;position:relative;overflow:hidden;padding:80px 20px 56px;background:radial-gradient(ellipse at 50% 50%,#f2e5db 0%,#f8f4ee 60%,#f5efe7 100%)}.hero h1,.section-heading h2{margin:8px 0;font-family:"Noto Serif TC",serif;font-weight:900;letter-spacing:.06em}.hero h1{font-size:clamp(41px,5vw,70px);line-height:1.34}.hero h1 em{font-style:normal;color:var(--wine)}.eyebrow{margin:0;color:var(--wine);font:500 10px DM Mono,monospace;letter-spacing:.2em}.hero-copy{margin:17px auto 27px;color:var(--muted)}.date-row{display:inline-flex;align-items:center;gap:25px;text-align:left}.date-row>div{display:grid;grid-template-columns:auto auto;align-items:baseline;column-gap:11px}.date-row span{grid-column:1/-1;color:var(--wine);font:600 12px "Noto Serif TC",serif;letter-spacing:.16em}.date-row strong{font:600 29px DM Mono,monospace;letter-spacing:-.08em}.date-row small{color:#92857f;font:9px DM Mono,monospace}.date-row>i{color:#b98565;font-style:normal}.petal{position:absolute;width:310px;height:110px;border-radius:100% 0;opacity:.32;background:#e9c8bd;transform:rotate(-28deg)}.petal-one{left:-95px;top:45px}.petal-two{right:-135px;bottom:42px;transform:rotate(135deg)}.petal-three{width:130px;right:14%;top:75px;transform:rotate(45deg);opacity:.18}.content{width:min(1120px,90vw);margin:0 auto;padding:88px 0}.section-heading h2{font-size:30px}.event-grid{margin-top:28px;display:grid;grid-template-columns:1fr 1fr 1.38fr;gap:15px}.event-card,.priority-card,.cookie-card,.team-list,.car-preview{background:var(--paper);border:1px solid var(--line)}.event-card{min-height:272px;padding:24px;position:relative}.event-card.wedding{background:#f0e0d7}.card-number{position:absolute;right:19px;top:16px;color:#cbb9af;font:12px DM Mono,monospace}.card-kicker{color:var(--wine);font:10px DM Mono,monospace;letter-spacing:.16em}.event-card h3{margin:7px 0 4px;font:700 28px "Noto Serif TC",serif}.event-card time{font:13px DM Mono,monospace}.event-card time span{font-family:Noto Sans TC,sans-serif;color:var(--muted);margin-left:3px}.divider{margin:23px 0 15px;border-top:1px solid #e2d6ce}.event-card>p:not(.card-kicker){margin:0;font-size:15px}.event-card footer{position:absolute;bottom:20px;left:24px;right:24px;display:flex;align-items:center;gap:8px;color:#776a64;font-size:11px}.event-card footer span+span:before{content:"\b7";margin-right:8px}.event-card footer b{margin-left:auto;color:#fff;background:#9a554a;font-size:10px;font-weight:500;padding:4px 7px}.priority-card{padding:24px}.priority-title{display:flex;gap:12px;align-items:center;border-bottom:1px solid var(--line);padding-bottom:14px}.priority-title>span{color:var(--wine);font-size:19px}.priority-title p{margin:0;color:var(--wine);font:9px DM Mono,monospace;letter-spacing:.16em}.priority-title h3{margin:3px 0 0;font:700 18px "Noto Serif TC",serif}.priority-card ol{margin:3px 0 0;padding:0;list-style:none}.priority-card li{display:flex;gap:10px;border-bottom:1px solid #f0e8e2;padding:10px 0;line-height:1.55;font-size:11px}.priority-card li:last-child{border:0}.priority-card li span{color:#b49f95;font:9px DM Mono,monospace;padding-top:2px}.split-section{display:grid;grid-template-columns:1fr 1.12fr;gap:70px;border-top:1px solid var(--line)}.cookie-card{margin-top:27px;padding:3px 22px}.cookie-group{padding:17px 0}.cookie-group+.cookie-group{border-top:1px solid var(--line)}.cookie-group h3{margin:0 0 8px;color:var(--wine);font:600 14px "Noto Serif TC",serif}.cookie-row{display:flex;align-items:center;padding:8px 0;gap:11px}.cookie-icon{color:#b98565}.cookie-row div{flex:1}.cookie-row b{font-size:13px}.cookie-row b small{color:var(--muted);font-weight:400}.cookie-row p{margin:1px 0 0;color:#9c8f88;font-size:10px}.cookie-row strong{font:500 12px DM Mono,monospace;color:var(--wine)}.muted-intro{color:var(--muted);margin:17px 0}.gift-list{border-top:1px solid var(--line)}.gift-row{display:flex;gap:15px;padding:12px 0;border-bottom:1px solid var(--line)}.gift-row>span{color:#bca99f;font:10px DM Mono,monospace;padding-top:2px}.gift-row>div{flex:1}.gift-row b{font:600 13px "Noto Serif TC",serif}.gift-row p,.gift-row small{margin:2px 0;color:var(--muted);font-size:10px}.gift-row small{color:#aa9d96}.gift-row i{color:var(--wine);font-size:10px;font-style:normal;white-space:nowrap}.box-note{margin-top:16px;padding:13px 14px;display:flex;gap:11px;color:#655955;background:#efe4db;font-size:11px;line-height:1.7}.box-note span{color:var(--wine)}.box-note p{margin:0}.team-section{border-top:1px solid var(--line)}.segmented{display:flex;width:206px;margin:25px 0 14px;padding:3px;background:#ebe3db}.segmented button{flex:1;cursor:pointer;border:0;background:transparent;padding:7px 10px;color:#766a65;font-size:12px}.segmented button.selected{color:var(--wine);background:#fffdf9;box-shadow:0 1px 4px #a69b9130}.team-list{display:grid;grid-template-columns:repeat(3,1fr)}.team-list article{padding:17px;display:flex;align-items:center;gap:11px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:93px}.team-list article:nth-child(3n){border-right:0}.role-icon{color:#9c4d43;font-size:17px}.team-list article div{flex:1}.team-list p{margin:0;color:#a1928c;font-size:10px}.team-list h3{margin:2px 0 0;font:600 14px "Noto Serif TC",serif}.team-list small{max-width:104px;color:#8a7c76;font-size:10px;line-height:1.5}.car-section{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:50px;border-top:1px solid var(--line)}.car-copy>p:not(.eyebrow){max-width:400px;color:var(--muted);line-height:1.8}.outline-button{cursor:pointer;margin-top:12px;padding:10px 13px;color:var(--wine);border:1px solid #b88379;background:transparent;font-size:12px}.outline-button span{margin-left:20px;font-size:18px}.car-preview{min-height:220px;padding:36px;text-align:center;background:#ece0d7;position:relative;overflow:hidden}.route{color:#c39c8c;font:11px DM Mono,monospace;letter-spacing:.2em}.car-line{margin:51px auto 18px;display:flex;align-items:center;justify-content:center;gap:28px;color:var(--wine)}.car-line:before,.car-line:after{content:"";width:80px;border-top:1px solid #b9877a}.car-line i{font-style:normal;font-size:9px}.car-line b{font-size:29px}.car-preview p{color:#897870;font:12px "Noto Serif TC",serif}.car-map{grid-column:1/-1;padding:26px;background:#fffdf9;border:1px solid var(--line)}.car-map-heading{display:flex;justify-content:space-between;align-items:end;padding-bottom:17px;border-bottom:1px solid var(--line)}.car-map-heading h3{margin:4px 0 0;font:700 20px "Noto Serif TC",serif}.car-map-heading>span{color:#9e8d85;font:10px DM Mono,monospace}.car-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:17px}.car-card{border:1px solid var(--line)}.car-card header{display:flex;justify-content:space-between;align-items:baseline;padding:12px 14px;background:#f4ece6}.car-card h4{margin:0;font:700 14px "Noto Serif TC",serif}.car-card header span{color:var(--wine);font:10px DM Mono,monospace}.trip-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}.trip-grid.return-only{grid-template-columns:1fr}.seat-group{padding:11px;background:#fffdf9}.seat-group h5{margin:0 0 8px;color:var(--wine);font:600 11px "Noto Serif TC",serif}.seat-group>div{display:grid;grid-template-columns:1fr 1fr;gap:7px 12px}.seat-group p{min-width:0;margin:0;display:flex;flex-direction:column;gap:1px}.seat-group small{color:#a79890;font-size:9px}.seat-group p span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#514642;font-size:11px}.seat-group p span.pending{color:#a79b95}.check-section{display:grid;grid-template-columns:.8fr 1.5fr;gap:58px;border-top:1px solid var(--line)}.check-intro p:last-child{color:var(--muted)}.check-intro strong{color:var(--wine);font:24px DM Mono,monospace}.check-list{border-top:1px solid var(--line)}.check-list button{width:100%;display:flex;align-items:flex-start;text-align:left;cursor:pointer;gap:12px;padding:13px 0;border:0;border-bottom:1px solid var(--line);background:transparent;color:#5e514c;font-size:12px;line-height:1.6}.check-list button span{flex:0 0 17px;height:17px;border:1px solid #b49d92;color:#fff;display:grid;place-items:center;font-size:11px}.check-list button.done{color:#a69b95;text-decoration:line-through}.check-list button.done span{background:var(--wine);border-color:var(--wine)}.site-footer{display:flex;justify-content:center;gap:20px;padding:27px;color:#a7978f;background:#eee5dc;font-size:11px}.site-footer i{color:var(--wine);font-style:normal}@media (max-width:800px){.topbar{height:62px;padding:0 20px}.topbar nav,.updated{display:none}.topbar .brand{margin:auto}.hero{min-height:425px;padding-top:70px}.content{padding:58px 0}.event-grid,.split-section,.car-section,.check-section{grid-template-columns:1fr;gap:26px}.section-heading h2{font-size:25px}.event-card{min-height:220px}.team-list{grid-template-columns:1fr 1fr}.team-list article:nth-child(3n){border-right:1px solid var(--line)}.team-list article:nth-child(2n){border-right:0}.car-preview{order:-1}.cookie-card{margin-top:17px}.split-section{gap:52px}.car-grid{grid-template-columns:1fr}.check-section{gap:15px}}@media (max-width:480px){.hero h1{font-size:39px}.date-row{gap:14px}.date-row strong{font-size:25px}.team-list{grid-template-columns:1fr}.team-list article,.team-list article:nth-child(3n){border-right:0}.event-grid{gap:11px}.content{width:88vw}.priority-card{padding:19px}}.car-plan{margin-top:25px}.car-plan-title{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:9px;border-bottom:1px solid var(--line)}.car-plan-title h4{margin:0;color:var(--wine);font:700 16px "Noto Serif TC",serif}.car-plan-title span{color:#9e8d85;font:10px DM Mono,monospace}.car-plan .car-grid{margin-top:14px}.venue-details{display:grid;grid-template-columns:220px 1fr;gap:25px;margin-top:15px;padding:22px 24px;border:1px solid var(--line);background:#fffdf9}.venue-title{display:flex;gap:11px;align-items:flex-start}.venue-title>span{color:var(--wine)}.venue-title h3{margin:3px 0 0;font:700 18px "Noto Serif TC",serif}.venue-timeline{display:grid;grid-template-columns:repeat(5,1fr);gap:13px}.venue-timeline p{margin:0;padding-left:12px;border-left:1px solid #e3d6ce;display:flex;flex-direction:column;gap:5px}.venue-timeline b{color:var(--wine);font:500 10px DM Mono,monospace}.venue-timeline span{color:#72655f;font-size:11px;line-height:1.55}@media (max-width:800px){.venue-details{grid-template-columns:1fr;gap:18px}.venue-timeline{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.venue-timeline{grid-template-columns:1fr}}.team-list article{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:start}.team-list .role-icon{grid-row:1 / span 2}.team-list article small{grid-column:2;max-width:none;margin-top:5px}
