@font-face{font-family:Floraison;src:url(/fonts/Floraison%20des%20Amours.ttf)format("truetype")}@font-face{font-family:Stars;src:url(/fonts/WhenTheStarsAlign_PERSONAL_USE_ONLY.otf)format("opentype")}:root{color:#4d2430;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at top,#ffdde1f2,#0000 35%),linear-gradient(#ffb5be 0%,#ffd9df 100%);font-family:Georgia,serif}*{box-sizing:border-box}body{min-width:320px;margin:0}img{max-width:100%;display:block}#app{min-height:100vh}.invitation-shell{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.card{text-align:center;background:#fff8f9d1;border:1px solid #a5607129;border-radius:32px;width:min(100%,620px);padding:40px 24px 32px;box-shadow:0 24px 60px #7b36452e}.stars{color:#9a4f63;margin-bottom:20px;font-family:Stars,cursive;font-size:clamp(1.4rem,3vw,2rem)}.eyebrow,.lead,.message,.custom-message,.status,.code-box span{font-family:Times New Roman,serif}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:#8f6170;margin:0;font-size:.95rem}.guest-name{color:#5d2132;margin:10px 0 14px;font-size:clamp(1.8rem,4vw,2.5rem)}.lead,.message,.custom-message,.status{color:#6e4451;max-width:32ch;margin:0 auto;line-height:1.7}.couple{justify-content:center;align-items:center;gap:16px;margin:18px 0 8px;display:flex}.groom,.bride{flex-direction:column;align-items:center;display:flex}.groom .name,.bride .name{color:#9a3651;font-family:Floraison,cursive;font-size:clamp(3rem,12vw,5.4rem);font-weight:400;line-height:.95}.groom .parents,.bride .parents{color:#6e4451;margin-top:8px;font-size:.9rem;line-height:1.5}.ampersand{color:#9a3651;font-family:Floraison,cursive;font-size:clamp(2rem,8vw,4rem);font-weight:400}.icons{justify-content:center;gap:14px;margin-bottom:20px;font-size:1.75rem;display:flex}.photo-frame{background:#fff9;border-radius:28px;width:min(100%,480px);margin:0 auto 24px;padding:10px;box-shadow:0 16px 40px #7d4d5a24}.photo-frame img{aspect-ratio:4/5;object-fit:cover;border-radius:22px}.message{margin-top:8px}.custom-message{background:#ffffff80;border-radius:18px;margin-top:18px;padding:14px 16px}.details-card{text-align:left;background:#ffffff85;border-radius:24px;margin-top:22px;padding:18px}.details-card h3{color:#7d3047;text-align:center;margin:0 0 14px;font-size:1.1rem}.detail-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.detail-grid div,.transport{background:#fff8f9bf;border-radius:18px;padding:12px 14px}.detail-label{letter-spacing:.1em;text-transform:uppercase;color:#9a6a78;margin-bottom:6px;font-size:.82rem;display:block}.venue-card{text-align:center}.venue-name{color:#5d2132;margin:0 0 12px;font-size:1.15rem}.map-link{color:#9a3651;margin-bottom:16px;font-weight:600;text-decoration:none;display:inline-block}.map-frame{background:#ffffffa6;border-radius:22px;margin-bottom:16px;padding:10px}.map-frame img{border-radius:16px}.transport{text-align:left}.transport ul{color:#6e4451;margin:0;padding-left:18px;line-height:1.7}.gift-card{text-align:center}.gift-text{color:#6e4451;max-width:36ch;margin:0 auto 16px;line-height:1.7}.gift-account{background:#fff8f9bf;border-radius:18px;flex-direction:column;align-items:center;gap:6px;padding:14px 16px;display:flex}.account-number-row{align-items:center;gap:10px;display:flex}.account-number{color:#5d2132;font-family:Courier New,monospace;font-size:1.1rem}.account-name{color:#8f6170;font-size:.9rem}.copy-btn{color:#9a3651;cursor:pointer;background:#9a365114;border:1px solid #9a36514d;border-radius:999px;padding:4px 14px;font-size:.82rem;transition:background .2s}.copy-btn:hover{background:#9a36512e}.code-box{color:#76263c;background:#9a36511a;border-radius:20px;width:fit-content;min-width:200px;margin:24px auto 0;padding:14px 16px}.code-box span{letter-spacing:.12em;text-transform:uppercase;margin-bottom:6px;font-size:.82rem;display:block}.code-box strong{font-family:Courier New,monospace;font-size:1.05rem}.comment-section{margin-top:24px}.comment-note,.comment-empty,.comment-feedback,.comment-item p{color:#6e4451;line-height:1.7}.comment-form{gap:12px;display:grid}.comment-field{gap:8px;display:grid}.comment-field span{letter-spacing:.08em;text-transform:uppercase;color:#9a6a78;font-size:.88rem}.comment-field textarea{color:#5d2132;resize:vertical;background:#ffffffc7;border:1px solid #9a6a7833;border-radius:16px;outline:none;width:100%;min-height:110px;padding:14px 16px}.comment-field textarea:focus{border-color:#9a3651;box-shadow:0 0 0 4px #9a36511a}.comment-button{color:#fff6f8;cursor:pointer;background:#9a3651;border:0;border-radius:999px;padding:12px 18px}.comment-button:disabled{opacity:.6;cursor:wait}.comment-list{gap:14px;margin-top:18px;display:grid}.comment-item{background:#fff8f9bf;border-radius:18px;padding:14px 16px}.comment-head{color:#7d3047;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.comment-head span{color:#9a6a78;font-size:.82rem}.comment-item p,.comment-note,.comment-empty,.comment-feedback{margin:0}.comment-feedback{margin-top:12px}.error{color:#972a46}.music-btn{z-index:100;color:#fff;cursor:pointer;background:#c06080;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:18px;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 2px 8px #0003}.music-btn:hover{background:#a04060}@media (width<=640px){.card{border-radius:24px;padding:28px 18px 24px}.detail-grid{grid-template-columns:1fr}}
