:root{--bg:#efe4d1;--card:#fffdf8;--ink:#3b1f11;--muted:#a87854;--line:#d8ba8c;--red:#982c20;--red-dark:#7f2219;--font-body:"LXGW WenKai", "HongLei BanShu";--font-hand:"HongLei BanShu", "LXGW WenKai";--font-calligraphy:"HongLei BanShu", "LXGW WenKai"}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:var(--ink);background:radial-gradient(circle at 50% 6%, #ffffff7a, transparent 280px), linear-gradient(90deg, #e7dcc7, var(--bg) 22%, var(--bg) 78%, #e7dcc7);font-family:var(--font-body);letter-spacing:0}button,input,select,textarea{font:inherit}.page{justify-content:center;align-items:flex-start;width:100%;min-height:100vh;display:flex}.card{background:#fffdf8f5;border-radius:4px;width:min(548px,100%);padding:48px 36px;box-shadow:0 24px 70px #583a1c2e}.header{text-align:center;margin-bottom:34px}.subtitle{color:var(--muted);margin:0 0 12px;font-size:14px}h1{letter-spacing:0;margin:0;font-size:28px;font-weight:500;line-height:1.35}.byline{color:#8d5d3d;margin:12px 0 0;font-size:14px}.byline span,.support{color:var(--red)}.divider{color:var(--red);justify-content:center;align-items:center;gap:18px;margin-top:24px;display:flex}.divider span{background:var(--line);width:50px;height:1px}.divider b{font-size:12px}.form{gap:24px;display:grid}label{gap:9px;display:grid}label>span{color:#5c3a25;font-size:15px}.nameRow{grid-template-columns:110px 1fr;gap:10px;display:grid}input,select,textarea{border:1px solid var(--line);color:#3a2113;background:#fff8e9;border-radius:2px;outline:none;width:100%;min-height:52px;padding:12px 16px}textarea{resize:vertical;min-height:150px}input:focus,select:focus,textarea:focus{border-color:#a05a34;box-shadow:0 0 0 3px #a05a341f}.chips{flex-wrap:wrap;gap:10px;display:flex}.chip{border:1px solid var(--line);color:#6a4327;cursor:pointer;background:#fff8e9;border-radius:999px;align-items:center;gap:8px;min-height:40px;padding:0 16px;display:inline-flex}.chip[aria-pressed=true]{color:#84291f;background:#f4dcc8;border-color:#9b3a2d;box-shadow:inset 0 0 0 1px #9b3a2d2e}.giftInput{margin-top:2px}.primaryButton,.secondaryButton,.outlineButton{cursor:pointer;border-radius:3px;min-height:66px}.primaryButton{color:#fff;background:var(--red);border:0;width:100%;font-size:18px;font-weight:600;box-shadow:0 9px 18px #7f221938}.primaryButton:disabled{opacity:.55;cursor:not-allowed}.primaryButton span{color:#ffffffa3;margin-top:3px;font-size:12px;font-weight:400;display:block}.hint,.disclaimer,.support{text-align:center}.hint{color:var(--muted);margin:28px 0 0;font-size:15px}.disclaimer{color:#c3a77c;max-width:420px;margin:22px auto 0;font-size:13px;line-height:1.7}.loadingCard{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:445px;display:flex}.boat{margin-bottom:26px;font-size:52px}.loadingCard p{color:#936849;margin:10px 0 0;line-height:1.6}.resultCard{width:min(480px,100%);padding:36px 28px 88px}.preview{background:#ead7aa;border-radius:4px;width:100%;overflow:hidden;box-shadow:inset 0 0 0 1px #703c2429}.preview.framed{background:#b34537;padding:18px}.preview img{width:100%;height:auto;display:block}.resultCard .primaryButton{margin:10px 0 24px}.resultActions,.floatingActions{grid-template-columns:1fr 1fr;gap:12px;margin-top:4px;display:grid}.floatingActions{z-index:20;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#efe4d1fa;width:min(480px,100% - 28px);margin:0;padding:12px;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.secondaryButton,.outlineButton{color:#9b3a2d;background:0 0;border:1px solid #b75b49}.outlineButton{width:126px;min-height:48px;margin:18px auto 0;display:block}.outlineButton.compact{white-space:nowrap;width:auto;min-height:38px;margin:0;padding:0 14px}.error{color:var(--red);margin:-8px 0 0}.warning{color:#9b6b42;margin:12px 0 0;font-size:13px;line-height:1.6}.letterText{background:#fff8e9b8;border:1px solid #b75b4947;border-radius:4px;margin:2px 0 30px;padding:18px}.letterTextHeader{justify-content:space-between;align-items:center;gap:14px;margin-bottom:12px;display:flex}.letterText h2{color:#5c3a25;margin:0;font-size:18px;font-weight:500}.letterText pre{white-space:pre-wrap;word-break:break-word;color:#432514;font-family:var(--font-body);margin:0;font-size:16px;line-height:1.9}@media (max-width:560px){.card{padding:34px 20px}h1{font-size:25px}.nameRow{grid-template-columns:100px 1fr}.resultActions{grid-template-columns:1fr}.floatingActions{grid-template-columns:1fr 1fr}.letterText{padding:16px 14px}.letterText h2{font-size:16px}}
