@charset "UTF-8";
:root{color-scheme:light;--ink:#573138;--muted:#87666c;--pink:#f9dce1;--paper:#fffdf8;--red:#b73351;--red-dark:#962843;--line:#e9c7cc;--serif:"Songti SC","Noto Serif CJK SC","STSong",serif;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background-color:var(--pink);background-image:linear-gradient(#b55a6b0b 1px,transparent 1px),linear-gradient(90deg,#b55a6b0b 1px,transparent 1px);background-size:36px 36px;font-family:var(--sans);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}button,a,input,label,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #6c8065;outline-offset:4px}button{touch-action:manipulation}a{color:inherit}button:disabled{cursor:default}[hidden]{display:none!important}h1,h2,p{margin:0}fieldset{min-width:0;margin:0;padding:0;border:0}legend{padding:0}button{border:0}body,main{min-width:0}.masthead{position:relative;z-index:1;max-width:1232px;margin:auto;padding:29px 36px 19px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;gap:9px;align-items:center;text-decoration:none;font-size:15px;letter-spacing:.06em;font-weight:600}.brand-pig{font-size:25px;line-height:1}.masthead-note{font-size:13px;letter-spacing:.08em;color:#936c74}.page-decoration{pointer-events:none;position:absolute;inset:0;overflow:hidden;min-height:820px}.decor-heart{position:absolute;color:#ba557063;font-family:var(--serif);font-size:92px}.heart-one{top:175px;left:-22px;transform:rotate(-19deg)}.heart-two{top:480px;right:-25px;transform:rotate(20deg)}.decor-spark{position:absolute;right:13%;top:142px;color:#bf708263;font-size:27px}.invitation-view{width:min(1110px,calc(100% - 80px));margin:48px auto 16px;display:grid;grid-template-columns:1.06fr 1fr;gap:48px;align-items:center}.intro{position:relative;min-width:0}.eyebrow{display:inline-flex;align-items:center;gap:9px;font-size:12px;letter-spacing:.16em;color:var(--red);font-weight:600}.small-heart{font-size:14px}h1{font-family:var(--serif);font-size:56px;font-weight:600;line-height:1.4;letter-spacing:.03em;margin-top:17px}.city-name{position:relative;color:var(--red);white-space:nowrap}.city-underline{position:absolute;left:0;right:0;bottom:-3px;height:7px;border-radius:50%;background:#d3688060;transform:rotate(-3deg)}.intro-copy{margin-top:20px;color:#806169;line-height:1.9;font-size:16px}.art-stage{position:relative;max-width:445px;height:320px;margin-top:15px}.pig-art{display:block;width:100%;height:100%;object-fit:contain;animation:pig-bob 5s ease-in-out infinite}.art-note{position:absolute;z-index:1;right:0;top:20px;transform:rotate(7deg);font-family:var(--serif);font-size:17px;color:#87616a}.stamp{position:absolute;left:5px;bottom:50px;width:74px;height:74px;border:1px solid #b9617680;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;line-height:1.8;letter-spacing:.16em;transform:rotate(-15deg);color:#a05264}.stamp b{font-family:var(--serif);font-size:19px}.letter{position:relative;background:var(--paper);border:1px solid #e4b8c0;border-radius:5px;box-shadow:9px 10px 0 #eabac452,0 18px 38px #99566c0b;transform:rotate(1.4deg);min-width:0}.letter:before{content:"";position:absolute;width:125px;height:28px;left:calc(50% - 62px);top:-14px;background:#edbdc69e;transform:rotate(-4deg);border-left:2px dashed #e1a3b23d;border-right:2px dashed #e1a3b23d}.letter-top,.letter-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#96777e;font-size:12px;letter-spacing:.1em;padding:19px 27px}.letter-top{border-bottom:1px dashed var(--line)}.letter-content{padding:30px 32px 22px}.letter-label{display:inline-block;padding:3px 11px;border:1px solid #dbb8c1;border-radius:3px;color:var(--red);font-size:13px;letter-spacing:.17em}.letter h2{font-family:var(--serif);font-size:27px;line-height:1.65;font-weight:600;margin:17px 0 13px;letter-spacing:.025em}.letter-content>p:not(.dodge-message){font-size:15px;color:#81666a;line-height:1.9}.little-promise{display:flex;gap:13px;align-items:center;margin:24px 0 28px;border:1px dashed #e4bbc5;border-radius:8px;background:#fcf2f2;padding:14px 17px}.little-promise>span{font-size:31px}.little-promise p{font-size:14px;line-height:1.8;color:#845e68}.decision-area{display:flex;gap:11px;position:relative;align-items:center}.button{min-height:52px;padding:13px 20px;border-radius:10px;line-height:1.5;font-weight:600;font-size:15px;transition:background .18s,box-shadow .18s,transform .18s}.primary{background:var(--red);color:#fff7f7;border:1px solid var(--red);box-shadow:0 4px 0 #98273f}.primary:hover{background:var(--red-dark)}.primary:active{transform:translateY(2px);box-shadow:0 2px 0 #98273f}.primary>span{font-size:21px;line-height:1;margin-left:4px;vertical-align:-1px}.accept-button{flex:1;padding-left:12px;padding-right:12px;white-space:nowrap}.reject-slot{width:125px;flex-shrink:0;height:53px}.reject-button{border:1px solid #dabbc1;color:#8b6a73;background:var(--paper);font-weight:400;font-size:14px;padding-left:15px;padding-right:15px;width:125px;white-space:nowrap;touch-action:none;z-index:30}.reject-button.is-flying{position:fixed;margin:0;box-shadow:0 6px 20px #93435624;border-color:#dc8ca0;background:#fffdf8;transition:none}.dodge-message{text-align:center;min-height:27px;font-size:12px;line-height:1.7;color:#96777e;margin-top:17px}.letter-bottom{border-top:1px dashed var(--line);font-size:11px;padding-top:14px;padding-bottom:14px}.letter-bottom>span:last-child{font-size:16px;color:#b46b7d}footer{text-align:center;padding:28px 20px max(25px,env(safe-area-inset-bottom));font-size:12px;color:#9b737c;letter-spacing:.08em}footer>span{font-size:14px}.secondary-view{max-width:730px;padding:0 28px;margin:26px auto 0;animation:arrive .4s ease-out}.flow-heading{text-align:center;margin:0 0 30px}.flow-heading h1{font-size:37px;margin-top:12px;line-height:1.5;outline:none}.flow-heading h1 span{color:var(--red)}.flow-heading p{font-size:15px;color:var(--muted);margin-top:10px}.planning-card{background:var(--paper);border:1px solid #e3b9c2;border-radius:15px;box-shadow:0 9px 0 #eac0ca4d;padding:25px 34px}.card-caption{display:flex;align-items:center;justify-content:space-between;border-bottom:1px dashed var(--line);padding-bottom:18px;margin-bottom:25px;font-size:11px;letter-spacing:.14em;color:#9a707b}.card-caption>span:last-child{font-size:24px;line-height:1;color:#bf6e83}.form-section{margin-bottom:28px}.form-section legend{display:flex;align-items:center;gap:11px;font-size:18px;font-weight:600;margin-bottom:16px}.step-number{font-family:Georgia,serif;font-size:13px;color:var(--red);background:#f9e4e7;border-radius:50%;width:29px;height:29px;display:inline-flex;align-items:center;justify-content:center;letter-spacing:.02em}.field-label{display:block;font-size:14px;color:#81616b;margin-bottom:8px}input[type=date],input[type=number],textarea{border:1px solid #dfbbc4;border-radius:9px;background:#fff;color:var(--ink);padding:11px 13px;min-height:48px;width:100%;font-size:16px;outline-offset:2px}input[type=date]{appearance:none;-webkit-appearance:none;min-width:0;width:100%;display:block;max-width:100%}input[type=date]::-webkit-date-and-time-value{text-align:left;min-height:1.5em}input[type=date]:disabled{background:#f4eeeb;color:#9f858b}.check-label{display:flex;align-items:center;gap:9px;font-size:14px;margin-top:12px;cursor:pointer}.check-label input{width:18px;height:18px;accent-color:var(--red);margin:0;flex-shrink:0}.field-note{font-size:12px;color:#9b7a83;margin-top:8px;line-height:1.7}.day-options{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.day-option,.place-option{position:relative;cursor:pointer}.day-option input,.place-option input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.day-option>span{display:block;border:1px solid #e5c9ce;border-radius:9px;text-align:center;padding:11px 3px;background:white;font-size:13px;transition:background .15s,border-color .15s}.day-option b{font-family:Georgia,serif;font-size:24px;font-weight:400}.day-option small{display:block;font-size:11px;color:#97747d;margin-top:3px;white-space:nowrap}.day-option input:checked+span{color:var(--red);background:#fbe5ea;border-color:#c96983;box-shadow:0 0 0 1px #c9698330}.day-option input:focus-visible+span,.place-option input:focus-visible+span{outline:3px solid #6c8065;outline-offset:3px}.custom-days-wrap{display:flex;gap:10px;align-items:center;font-size:14px;margin-top:13px}.custom-days-wrap input{width:96px;text-align:center}.place-options{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.place-option>span{display:block;font-size:14px;line-height:1.5;padding:10px 13px;border:1px solid #e5c9ce;background:white;border-radius:8px;transition:background .15s}.place-option input:checked+span{border-color:#c96983;background:#fbe5ea;color:var(--red)}.place-option input:checked+span:after{content:" ✓";font-size:12px}.place-note{margin-top:-7px}.wish-label{margin-top:23px}textarea{resize:vertical;line-height:1.8;display:block}textarea::placeholder{font-size:14px;color:#ac9097}.finish-button{width:100%;margin-top:3px}.form-bottom-note{font-size:12px;text-align:center;color:#9c7b83;margin-top:15px}.form-error{color:#ac294b;font-size:14px;margin:0 0 15px;padding:10px;background:#fbe8ec;border-radius:7px}.text-button{display:block;background:none;color:#9c6877;padding:14px 10px;font-size:13px;text-decoration:underline;text-underline-offset:4px;margin:12px auto 0}.receipt-view{max-width:590px}.receipt-card{background:var(--paper);border:1px solid #e3bac3;border-radius:13px;overflow:hidden;box-shadow:0 8px 0 #eabac447}.receipt-top{display:flex;justify-content:space-between;align-items:center;padding:18px 27px;background:#b73351;color:#fff2f4;font-size:14px;letter-spacing:.1em}.receipt-top>span:last-child{font-size:18px}.receipt-route{display:flex;gap:18px;align-items:center;padding:25px 27px 16px;font-size:16px}.receipt-route b{font-family:var(--serif);font-size:30px;letter-spacing:.08em;font-weight:600}.route-line{flex:1;min-width:20px;border-top:2px dotted #c88b9b}.trip-details{margin:0;padding:0 27px 20px}.trip-details>div{display:grid;grid-template-columns:86px 1fr;gap:14px;margin:15px 0;font-size:15px}.trip-details dt{color:#9b7783;font-size:13px}.trip-details dd{margin:0;overflow-wrap:anywhere;white-space:pre-wrap;line-height:1.8}.receipt-tear{height:1px;border-top:1px dashed #ddb9c3;position:relative}.receipt-love{display:flex;gap:14px;padding:22px 27px;align-items:center;background:#fff6f4}.receipt-love>span{font-size:39px}.receipt-love p{font-family:var(--serif);font-size:16px;line-height:1.8;color:#966473}.receipt-actions{display:grid;gap:12px;margin-top:27px}.secondary{border:1px solid #d5a2b0;background:#ffedf0;color:#a34760;box-shadow:none}.receipt-tip{text-align:center;font-size:12px;color:#9b7783;margin-top:16px}.toast{position:fixed;bottom:calc(25px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:#573138ef;color:#fff;padding:11px 20px;max-width:calc(100% - 30px);border-radius:12px;font-size:14px;z-index:100;text-align:center;box-shadow:0 4px 20px #57313830}.celebration{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:40}.confetti{position:absolute;top:-45px;font-size:23px;animation:heart-fall 2.8s ease-in forwards;color:#b73351}@keyframes pig-bob{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-7px) rotate(1deg)}}@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes heart-fall{to{transform:translateY(110vh) rotate(220deg);opacity:0}}@media(min-width:1500px){.invitation-view{margin-top:7vh}}@media(max-width:1000px){.invitation-view{gap:28px;width:calc(100% - 56px);margin-top:40px}h1{font-size:44px}.letter-content{padding:25px 23px 20px}.letter h2{font-size:24px}.letter-top,.letter-bottom{padding-left:23px;padding-right:23px}.art-stage{height:290px}.little-promise{padding:13px 12px}.decision-area{gap:8px}.reject-slot,.reject-button{width:113px}.reject-button{padding-left:9px;padding-right:9px}.accept-button{font-size:14px}}@media(max-width:720px){.masthead{padding:20px 21px 12px}.brand{font-size:13px;gap:7px}.brand-pig{font-size:23px}.masthead-note{font-size:11px;letter-spacing:0}.page-decoration{min-height:850px}.heart-one{font-size:70px;top:158px}.heart-two{font-size:78px;top:512px}.decor-spark{top:110px;right:8%}.invitation-view{width:calc(100% - 40px);max-width:460px;grid-template-columns:1fr;gap:0;margin-top:22px}.intro{text-align:center}.eyebrow{font-size:10px;letter-spacing:.13em}h1{font-size:37px;line-height:1.45;margin-top:12px}.intro-copy{font-size:14px;line-height:1.8;margin-top:15px}.art-stage{height:220px;width:300px;max-width:100%;margin:7px auto 0}.art-note{font-size:14px;top:20px;right:-1px}.stamp{width:54px;height:54px;left:0;bottom:37px;font-size:9px}.stamp b{font-size:15px}.letter{transform:rotate(.8deg);margin-top:6px}.letter-top{padding:14px 23px;font-size:11px}.letter-content{padding:23px 23px 19px}.letter-label{font-size:12px}.letter h2{font-size:25px;line-height:1.55;margin-top:15px}.letter-content>p:not(.dodge-message){font-size:14px}.little-promise{margin:20px 0 23px;padding:12px 14px}.little-promise p{font-size:13px}.little-promise>span{font-size:28px}.button{min-height:50px}.accept-button{font-size:15px}.reject-slot,.reject-button{width:120px}.dodge-message{font-size:11px;margin-top:15px}.letter-bottom{padding:12px 23px;font-size:10px}footer{padding-top:26px;font-size:10px}.secondary-view{max-width:490px;padding:0 20px;margin-top:23px}.flow-heading{margin-bottom:22px}.flow-heading h1{font-size:29px;line-height:1.5}.flow-heading h1 span{display:block}.flow-heading p{font-size:13px;margin-top:8px}.planning-card{padding:21px 21px;border-radius:11px}.card-caption{font-size:9px;letter-spacing:.12em;margin-bottom:22px}.form-section legend{font-size:16px}.form-section{margin-bottom:25px}.day-options{gap:7px}.day-option>span{padding:10px 2px}.day-option small{font-size:9px}.day-option b{font-size:22px}.day-option>span{font-size:12px}.place-options{gap:8px}.place-option>span{font-size:13px;padding:10px 11px}.wish-label{font-size:13px}.finish-button{font-size:14px}.receipt-top,.receipt-route{padding-left:22px;padding-right:22px}.trip-details{padding-left:22px;padding-right:22px}.trip-details>div{grid-template-columns:76px 1fr;gap:10px;font-size:14px}.receipt-love{padding:20px 22px;gap:13px}.receipt-love p{font-size:14px}}@media(max-width:360px){.masthead-note{display:none}.invitation-view{width:calc(100% - 30px)}h1{font-size:32px}.letter-content{padding:21px 18px 18px}.letter h2{font-size:22px}.decision-area{gap:7px}.reject-slot,.reject-button{width:106px}.reject-button{font-size:12px}.accept-button{font-size:13px}.secondary-view{padding:0 15px}.planning-card{padding:20px 16px}.day-options{grid-template-columns:repeat(2,1fr)}.day-option small{font-size:11px}.day-option>span{font-size:13px}.flow-heading h1{font-size:27px}}
/* Keep the invitation controls in the first mobile screen. */
.art-note{top:auto;bottom:-5px;font-size:15px;transform:rotate(-4deg)}
.letter-content>p:not(.dodge-message){font-size:16px}
.field-note,.day-option small,.form-bottom-note,.receipt-tip,.dodge-message,footer{font-size:12px}
@media(max-width:720px){
  .masthead{padding-top:16px;padding-bottom:10px}
  .brand{font-size:14px}.masthead-note{font-size:12px}
  .invitation-view{margin-top:13px}
  .intro{display:grid;grid-template-columns:130px 1fr;gap:4px 2px;align-items:center;text-align:left}
  .intro>.eyebrow{grid-column:1/-1;justify-content:center;font-size:12px;letter-spacing:.08em;margin-bottom:3px}
  .intro>h1{grid-column:2;grid-row:2;font-size:30px;line-height:1.5;margin:0;letter-spacing:0}
  .intro-copy{display:none}
  .art-stage{grid-column:1;grid-row:2;width:142px;height:145px;margin:0 0 0 -8px}
  .art-note,.stamp{display:none}
  .letter{margin-top:15px}
  .letter-top{padding:12px 21px;font-size:12px}
  .letter-content{padding:19px 21px 17px}
  .letter-label{display:none}
  .letter h2{font-size:23px;line-height:1.5;margin:0 0 12px}
  .letter-content>p:not(.dodge-message){font-size:15px;line-height:1.8}
  .little-promise{margin:16px 0 21px;padding:10px 12px}
  .little-promise p{font-size:14px;line-height:1.6}
  .dodge-message{font-size:12px;margin-top:14px}
  .letter-bottom{font-size:12px;padding:11px 21px}
  .flow-heading .eyebrow{font-size:12px}
  .flow-heading p{font-size:14px}
  .card-caption{font-size:12px;letter-spacing:.035em}
  .day-option small{font-size:12px;white-space:normal}
  .place-option>span,.wish-label{font-size:14px}
  .form-bottom-note,.receipt-tip,footer{font-size:12px}
}
@media(max-width:420px){.masthead-note{display:none}.day-options{grid-template-columns:repeat(2,1fr)}.day-option>span{font-size:14px;padding:9px 4px}.day-option small{font-size:12px}.intro{grid-template-columns:116px 1fr}.art-stage{width:126px;height:132px}.intro>h1{font-size:29px}}
@media(max-width:360px){.intro{grid-template-columns:103px 1fr}.art-stage{width:114px;height:123px}.intro>h1{font-size:26px}.letter-content{padding:18px 17px 16px}.letter h2{font-size:21px}.letter-content>p:not(.dodge-message){font-size:14px}.reject-button{font-size:14px}.accept-button{font-size:14px}.card-caption{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}.celebration{display:none}}

#image-preview{margin-top:32px;scroll-margin-top:24px}#image-preview p{color:#936c79;line-height:1.7}#plan-image{display:block;width:100%;height:auto;border-radius:16px;margin:20px 0;-webkit-touch-callout:default;user-select:auto}#image-preview a{text-decoration:none;text-align:center}
