@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+JP:wght@400;500;600&family=Noto+Sans+KR:wght@400;500;600;700&family=Noto+Serif+JP:wght@500;600&family=Noto+Serif+KR:wght@500;600;700&display=swap');

@font-face{font-family:'Ownglyph Kobaek';src:url('assets/fonts/gobaek-couple.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}

:root{color-scheme:light;--paper:#faf7f0;--ink:#493a31;--muted:#9a8a7b;--accent:#ae6346;--accent-dark:#945038;--line:#e8dfd1;--soft:#f3ecdf;--sans:'DM Sans','Noto Sans KR',-apple-system,BlinkMacSystemFont,sans-serif;--serif:'Noto Serif KR',Georgia,serif;--ease:cubic-bezier(.2,.75,.3,1)}
*{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased;overflow-x:hidden}button,input,textarea{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{touch-action:manipulation}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #b38455;outline-offset:5px}button:disabled{opacity:.55;cursor:wait}button svg{flex:none}svg.icon{display:inline-block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}.icon-library{position:absolute;width:0;height:0;overflow:hidden}.page-shell{width:min(100% - 96px,1100px);margin:0 auto;position:relative}.site-header{min-height:112px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:16px}.brand{display:flex;align-items:center;gap:12px;user-select:none}.brand-mark{color:var(--accent);display:flex;align-items:center;justify-content:center;width:42px;height:42px;background:#f0e5d5;border-radius:50%}.brand-mark .icon{width:24px;height:24px;stroke:none;transform:rotate(-12deg)}.brand-title{display:block;font-family:var(--serif);font-weight:600;font-size:18px;letter-spacing:-.6px}.brand-caption{display:block;font-size:8px;letter-spacing:2px;font-weight:500;color:var(--muted);margin-top:5px}.share-link{border:1px solid var(--line);border-radius:99px;background:transparent;display:flex;align-items:center;gap:8px;padding:11px 16px;color:#786557;font-size:11px;font-weight:500;transition:background .2s,border-color .2s}.share-link:hover{background:var(--soft);border-color:#cfbca7}.share-link .icon{width:15px;height:15px}
#app{position:relative;isolation:isolate;min-height:652px;display:flex;align-items:center;justify-content:center;padding:47px 0 28px}.screen{text-align:center;width:100%;max-width:600px;margin:0 auto;animation:arrive .5s var(--ease) both}.eyebrow{display:flex;align-items:center;justify-content:center;gap:12px;color:#a38b6e;font-size:9px;font-weight:600;letter-spacing:2.2px;text-transform:uppercase;margin-bottom:19px;min-height:15px}.eyebrow-line{height:1px;width:32px;background:#d9c8af}.step-count{font-size:9px;letter-spacing:1.6px}h1{font-family:var(--serif);font-size:42px;line-height:1.48;font-weight:600;letter-spacing:-2.2px;margin:0 auto 15px;word-break:keep-all;overflow-wrap:anywhere}h1:focus{outline:none}.accent{color:var(--accent)}.subtitle{color:#8e7c6a;line-height:1.95;font-size:13px;font-weight:400;margin:0 auto;white-space:pre-line;word-break:keep-all;max-width:450px}.hero-art{display:block;width:410px;max-width:100%;height:236px;object-fit:contain;margin:6px auto 0;user-select:none;-webkit-user-drag:none}.art-caption{font:italic 15px Georgia,serif;letter-spacing:.3px;color:#ad977f;margin:0 0 25px}.actions{display:flex;align-items:center;justify-content:center;gap:12px;margin:25px auto 0;min-height:52px}.art-caption+.actions{margin-top:0}.button{border:1px solid transparent;border-radius:12px;padding:15px 27px;min-height:52px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:13px;font-weight:600;line-height:1.45;transition:background .2s,box-shadow .2s,transform .2s;color:var(--ink);text-decoration:none}.button .icon{width:17px;height:17px}.button.primary{color:#fffaf2;background:var(--accent);border-color:var(--accent);box-shadow:0 5px 12px #9c69451a}.button.primary:hover{background:var(--accent-dark);border-color:var(--accent-dark);box-shadow:0 7px 17px #9c694529;transform:translateY(-2px)}.button.primary:active{transform:translateY(0)}.button.secondary{background:#f4eee4;color:#9b8774;border-color:#e9dfd0;min-width:106px}.button.secondary:hover{background:#eee4d5}.button.ghost{background:transparent;color:#8e7762;border-color:var(--line)}.button.ghost:hover{background:var(--soft)}#yes-button{min-width:182px}#no-button{touch-action:none;z-index:20;transition:background .2s,box-shadow .2s;user-select:none;white-space:nowrap}#no-button[style*="fixed"]{box-shadow:0 6px 20px #795e3b19}.playful-note{font-size:10px;color:#b09c85;line-height:1.8;min-height:18px;margin:16px 0 0}.back-button{display:inline-flex;align-items:center;gap:4px;border:0;background:none;color:#a08c77;font-size:11px;padding:8px;margin:18px auto 0}.back-button:hover{color:var(--accent)}.back-button .icon{width:14px;height:14px}.screen[data-step="acceptance"] .hero-art{margin-top:22px}.screen[data-step="date"]{max-width:440px}.screen[data-step="food"]{max-width:540px}.screen[data-step="summary"]{max-width:490px}.form-fields{display:grid;grid-template-columns:1.18fr 1fr;gap:14px;margin:32px auto 0;max-width:420px;text-align:left}.field{display:flex;flex-direction:column;gap:10px;min-width:0}.field-label{display:flex;align-items:center;gap:7px;color:#79634f;font-size:12px;font-weight:500}.field-label .icon{width:16px;height:16px;color:#ad8b66}.input,.textarea{width:100%;max-width:100%;border:1px solid #dfd2c0;background:#fffcf6;color:var(--ink);border-radius:10px;padding:15px 14px;min-height:52px;line-height:1.5;transition:border-color .2s;appearance:none;-webkit-appearance:none}.input:focus,.textarea:focus{border-color:#b38455}.field-hint{font-size:10px;color:#ac9983;margin:13px 0;line-height:1.8}.error-message{font-size:12px;color:#a54e3d;min-height:18px;line-height:1.7;margin:12px 0}.error-message:empty{display:none}.food-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;margin:30px auto 21px}.food-option{position:relative;min-height:103px;background:#fffcf7;border:1px solid var(--line);border-radius:13px;color:#79634f;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;transition:transform .2s,border-color .2s,background .2s;user-select:none}.food-option:hover{transform:translateY(-3px);border-color:#ceb498;background:#f8f0e3}.food-option.is-selected{border-color:#b97c53;background:#f4e9da;box-shadow:inset 0 0 0 .5px #b97c53}.food-emoji{font-size:28px;line-height:1.1}.food-name{font-size:12px;font-weight:500}.food-check{position:absolute;top:8px;right:8px;width:16px;height:16px;opacity:0;color:var(--accent)}.food-check .icon{width:15px;height:15px}.is-selected .food-check{opacity:1}.custom-food{text-align:left}.custom-food .field-label{margin-bottom:10px}.textarea{min-height:83px;resize:vertical;font-size:12px;line-height:1.85}.textarea::placeholder{color:#b3a28f}.screen[data-step="food"] .actions{margin-top:20px}.screen[data-step="food"] .playful-note{margin-top:8px}.summary-card{position:relative;border:1px solid #dfd1bd;background:#fffaf1;border-radius:16px;padding:27px 27px 22px;margin:26px auto 20px;text-align:left;box-shadow:0 8px 30px #6a4a1e05}.summary-card::before{content:'';display:block;position:absolute;top:-8px;left:calc(50% - 24px);width:48px;height:16px;transform:rotate(-3deg);background:#dcc19b9c}.summary-heading{font-family:var(--serif);font-size:16px;text-align:center;letter-spacing:-.3px;margin:0 0 20px;padding-bottom:18px;border-bottom:1px dashed #deceb7;color:#8e5f3f}.summary-row{display:flex;align-items:flex-start;gap:13px;padding:9px 0;font-size:12px;line-height:1.9}.summary-row>.icon{width:17px;height:17px;color:#ad8d68;margin-top:3px}.summary-row>span:first-child{color:#ac9477;min-width:44px}.summary-value{font-weight:500;overflow-wrap:anywhere;white-space:pre-wrap;color:#6c5340}.summary-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.summary-actions .button{font-size:12px;padding:13px 19px;min-height:48px}.screen[data-step="summary"] .hero-art{height:150px;margin-top:10px}.screen[data-step="summary"] h1{font-size:35px}.screen[data-step="summary"] .subtitle{font-size:12px}.screen[data-step="summary"] .back-button{margin-top:12px}.site-footer{text-align:center;padding:8px 0 28px;position:relative;z-index:1}.footer-rule{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:22px;color:#bb9c72}.footer-rule span{width:58px;height:1px;background:var(--line)}.footer-rule .icon{width:15px;height:15px;stroke:none;transform:rotate(18deg)}.language-picker{display:flex;align-items:center;justify-content:center;gap:17px}.language-label{font-size:10px;color:#9f8d77}.language-options{display:flex;gap:3px;border-radius:9px;padding:3px;background:#efe8dc;border:1px solid #e7ddce}.language-options button{border:0;background:transparent;color:#a5927a;border-radius:6px;min-width:69px;min-height:32px;padding:6px 14px;font-size:11px;transition:background .2s,color .2s,box-shadow .2s}.language-options button[aria-pressed="true"]{color:#8d5c3e;background:#fffcf6;box-shadow:0 1px 4px #7c592713;font-weight:600}.language-options button:hover{color:var(--accent)}.language-note{font-size:10px;line-height:1.8;color:#ad9d88;margin:12px 0 0}.footer-caption{font:italic 12px Georgia,serif;letter-spacing:.4px;color:#b7a58f;margin:23px 0 0}.toast{position:fixed;z-index:100;left:50%;bottom:max(26px,env(safe-area-inset-bottom));transform:translate(-50%,15px);background:#594634;color:#fffaf1;max-width:calc(100% - 32px);min-width:180px;padding:13px 21px;border-radius:12px;box-shadow:0 5px 25px #3e2d1e1f;text-align:center;font-size:12px;line-height:1.8;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.toast.is-visible,.toast.visible,.toast.show{opacity:1;transform:translate(-50%,0)}.loading{color:var(--accent)}.loading .icon{width:30px;height:30px;stroke:none;animation:sway 2s infinite}.noscript{padding:30px;text-align:center;color:var(--accent)}html[lang="ja"]{--sans:'DM Sans','Noto Sans JP',-apple-system,BlinkMacSystemFont,sans-serif;--serif:'Noto Serif JP',Georgia,serif}html[lang="ja"] h1{letter-spacing:-1.7px;font-size:38px}html[lang="ja"] .subtitle{font-size:12px}html[lang="ja"] .brand-title{font-size:17px}html[lang="ja"] .button{font-size:12px}html[lang="ja"] .food-name{font-size:11px}
.full-width{width:100%}.date-form{max-width:420px;margin:0 auto}.date-form>.button{margin-top:26px}.screen>.full-width{display:flex;max-width:420px;margin:21px auto 0}.character-count{margin-left:auto;font-size:10px;font-weight:400;color:#ad9980;font-family:var(--sans)}.summary-heading{display:flex;align-items:center;justify-content:center;gap:8px}.summary-heading .icon{width:18px;height:18px;stroke:none;color:#ae8156}.summary-row>span:first-child{display:inline-flex;align-items:center;gap:8px;min-width:64px;flex-shrink:0}.summary-row>span:first-child .icon{width:15px;height:15px}.summary-foot{font:italic 12px Georgia,serif;text-align:center;letter-spacing:.2px;color:#b39b80;margin:19px 0 0;padding-top:16px;border-top:1px dashed #e6d8c3}.restart-row{display:flex;align-items:center;justify-content:center;gap:18px}.summary-actions .full-width{width:auto;flex:1}.final-note{font-size:10px;line-height:1.9;margin-top:15px}#yes-button:hover{transform:none}
@keyframes arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes sway{50%{transform:rotate(20deg)}}
@media(min-width:1500px){.page-shell{max-width:1180px}.site-header{min-height:130px}#app{min-height:690px;padding-top:52px}.hero-art{width:450px;height:260px}h1{font-size:46px}.subtitle{font-size:14px}.actions{margin-top:30px}.art-caption{margin-bottom:30px}}
@media(max-width:700px){.page-shell{width:calc(100% - 40px)}.site-header{min-height:86px}.brand{gap:9px}.brand-mark{width:35px;height:35px}.brand-mark .icon{width:21px;height:21px}.brand-title{font-size:16px}.brand-caption{font-size:7px;letter-spacing:1.5px}.share-link{padding:10px 12px;gap:6px;font-size:10px}.share-link .icon{width:14px;height:14px}#app{min-height:590px;padding:35px 0 23px}.eyebrow{font-size:8px;letter-spacing:1.6px;margin-bottom:18px}h1{font-size:34px;letter-spacing:-1.6px;line-height:1.5;margin-bottom:13px}.subtitle{font-size:12px;line-height:1.95}.hero-art{width:355px;height:213px;margin-top:5px}.art-caption{font-size:14px;margin-bottom:23px}.button{font-size:12px;min-height:49px;padding:14px 22px;border-radius:11px}#yes-button{min-width:170px}.button.secondary{min-width:93px}.actions{gap:10px;margin-top:23px}.playful-note{font-size:10px;margin-top:14px}.site-footer{padding-top:7px;padding-bottom:24px}.footer-rule{margin-bottom:20px}.language-picker{gap:13px}.language-note{font-size:9px}.footer-caption{margin-top:19px}.food-grid{gap:9px;margin-top:25px}.food-option{min-height:97px}.food-emoji{font-size:27px}.form-fields{gap:10px;margin-top:28px}.input{padding:14px 10px;font-size:13px;min-height:50px}.summary-card{padding:24px 20px 18px}.summary-actions .button{padding:13px 16px;font-size:11px}.screen[data-step="summary"] h1{font-size:31px}html[lang="ja"] h1{font-size:30px;letter-spacing:-1.5px}html[lang="ja"] .brand-title{font-size:15px}html[lang="ja"] .subtitle{font-size:11px}}
@media(max-width:370px){.page-shell{width:calc(100% - 28px)}.share-link span{display:none}.share-link{width:36px;height:36px;justify-content:center;padding:8px}h1{font-size:30px}.hero-art{height:190px}.food-option{min-height:88px}.food-name{font-size:11px}.button{padding:13px 17px}#yes-button{min-width:155px}.summary-actions{flex-direction:column}.summary-actions .button{width:100%}.language-label{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Keep the invitation focused on the question, the cats, and the reply. */
body[data-step="invitation"] .site-header{display:none}
body[data-step="invitation"] .page-shell{min-height:100svh;display:flex;flex-direction:column}
body[data-step="invitation"] #app{flex:1;min-height:0;padding:56px 0 30px}
body[data-step="invitation"] h1{font-size:clamp(28px,4vw,38px);line-height:1.5;letter-spacing:-1.5px;margin:0;color:var(--ink)}
body[data-step="invitation"] h1{font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Hiragino Sans",system-ui,sans-serif;font-weight:600;letter-spacing:-1.2px}
body[data-step="invitation"] .hero-art{width:420px;height:auto;aspect-ratio:520/300;margin:28px auto 0;overflow:visible}
body[data-step="invitation"] .actions{margin-top:24px}
body[data-step="invitation"] .site-footer{padding:14px 0 max(34px,env(safe-area-inset-bottom))}
body[data-step="invitation"] .footer-rule,
body[data-step="invitation"] .language-note{display:none}
body[data-step="invitation"] .language-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.language-picker .share-link{width:38px;height:38px;justify-content:center;padding:10px}
.language-picker .share-link span{display:none}
.interactive-art svg{user-select:none;-webkit-user-drag:none}
.interactive-art [data-pupil]{will-change:transform}
@media(max-width:700px){
  body[data-step="invitation"] #app{padding:36px 0 22px}
  body[data-step="invitation"] h1{font-size:clamp(27px,7.4vw,32px)}
  body[data-step="invitation"] .hero-art{width:355px;margin-top:25px}
  body[data-step="invitation"] .actions{margin-top:26px}
  body[data-step="invitation"] .site-footer{padding-bottom:max(28px,env(safe-area-inset-bottom))}
}

/* All steps use the same quiet layout as the invitation. */
.page-shell{min-height:100svh;display:flex;flex-direction:column}
#app{flex:1;min-height:0;padding:48px 0 30px}
.site-footer{padding:14px 0 max(34px,env(safe-area-inset-bottom))}
.language-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.kiss-art .hero-art{width:420px;height:auto;aspect-ratio:520/300;overflow:visible;margin:22px auto 0}
.kiss-lean{transform-box:view-box;transform-origin:230px 185px;animation:kiss-lean-in 850ms var(--ease) both}
.kiss-blush{animation:kiss-turn-rosy 1.3s ease-out both}
.kiss-heart{transform-box:fill-box;transform-origin:center;animation:kiss-heart-rise 1.5s ease-out both;animation-delay:var(--kiss-delay,0s)}
@keyframes kiss-lean-in{from{transform:translate(-8px,1px) rotate(-5deg)}to{transform:translate(0,0) rotate(0)}}
@keyframes kiss-turn-rosy{from{opacity:.15}to{opacity:1}}
@keyframes kiss-heart-rise{0%{opacity:0;transform:translateY(8px) scale(.65)}35%{opacity:1}100%{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:700px){
  #app{padding:36px 0 22px}
  .site-footer{padding-bottom:max(28px,env(safe-area-inset-bottom))}
  .kiss-art .hero-art{width:355px}
}
@media(prefers-reduced-motion:reduce){
  .kiss-lean,.kiss-blush,.kiss-heart{animation:none;opacity:1;transform:none}
}

.page-shell{z-index:1}
.language-picker .share-link{width:auto;min-height:38px;gap:7px;padding:9px 13px;border-radius:10px}
.language-picker .share-link span{display:inline;font-size:11px;white-space:nowrap}
.share-hint{font-size:11px;line-height:1.8;color:#99846e;margin:13px auto 0;max-width:100%;word-break:keep-all}
h1,.summary-heading,body[data-step="invitation"] h1{font-family:'Ownglyph Kobaek','Noto Sans KR',-apple-system,sans-serif;font-weight:400;font-synthesis:none;letter-spacing:-.4px}
html[lang="ko"] h1{font-size:46px}
html[lang="ko"] .screen[data-step="summary"] h1{font-size:42px}
html[lang="ko"] body[data-step="invitation"] h1{font-size:clamp(32px,9.6vw,48px)}
html[lang="ja"] h1,html[lang="ja"] .summary-heading,html[lang="ja"] body[data-step="invitation"] h1{font-family:'Ownglyph Kobaek','Noto Sans JP',-apple-system,sans-serif}
@media(max-width:700px){
  html[lang="ko"] h1{font-size:38px}
  html[lang="ko"] .screen[data-step="summary"] h1{font-size:38px}
}
@media(max-width:370px){
  .language-picker{gap:10px}
  .language-options button{min-width:61px;padding:6px 11px}
  .language-picker .share-link{padding:9px 10px}
  .language-picker .share-link span{font-size:10px}
  .share-hint{font-size:10px}
}
