:root{--ink:#49677a;--muted:#56717e;--line:#d5e5e9;--paper:#fffcf9;--wash:#f0f8fa;--gold:#e5b45a;--focus:#95651d;--error:#a7352c;font-family:"Kaiti SC","STKaiti","KaiTi","Songti SC",serif;color:var(--ink);background:#fcfefe;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;font-size:18px;line-height:1.65;background:radial-gradient(ellipse 230px 260px at 0 320px,#e8f5f7 98%,transparent 100%),radial-gradient(ellipse 180px 240px at 100% 1100px,#f6eae0 98%,transparent 100%);min-height:100vh}button,input,textarea{font:inherit;color:inherit}button,label{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}::selection{background:#f4d894;color:#344f60}input,textarea{caret-color:var(--focus)}:focus-visible{outline:3px solid var(--focus);outline-offset:4px}h1,h2,p{margin:0}h1,h2{text-wrap:balance}h1{font-size:32px;line-height:1.3;letter-spacing:.02em}h2{font-size:31px;line-height:1.4;letter-spacing:.04em}.page{width:min(100% - 48px,1000px);margin:auto;padding:52px 0 32px}.welcome{text-align:center}.logo{display:block;width:300px;height:auto;margin:0 auto 28px}.welcome p{font-size:19px;margin-top:10px;color:var(--muted)}.steps{--step-size:46px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));list-style:none;padding:0;margin:45px 10px 32px}.steps li{position:relative;display:flex;align-items:center;flex-direction:column;gap:8px;font-size:15px;color:var(--muted)}.steps li:not(:last-child)::after{content:"";position:absolute;top:calc(var(--step-size)/2 - 1px);left:calc(50% + var(--step-size)/2);width:calc(100% - var(--step-size));height:2px;background:var(--line)}.steps span{position:relative;display:grid;place-items:center;width:var(--step-size);height:var(--step-size);border:2px solid var(--line);border-radius:50%;background:#fff}.steps li.done span,.steps li[aria-current] span{background:var(--gold);border-color:var(--gold);color:#fff}.steps li[aria-current]{font-weight:700;color:var(--ink)}.sheet{background:var(--paper);border-radius:38px;padding:36px;box-shadow:0 20px 48px rgb(58 94 110 / .06)}[hidden]{display:none!important}.step-caption{color:#95651d;font-size:16px;letter-spacing:.08em;font-weight:700;margin-bottom:7px}.intro{color:var(--muted);margin:10px 0 30px}.field,fieldset{margin:0 0 22px;padding:0;border:0;min-width:0}label:not(.choices label):not(.upload),legend{display:flex;width:100%;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px;font-weight:700;font-size:18px}small{font-size:14px;font-weight:400;color:var(--muted)}input:not([type=radio]):not([type=checkbox]):not([type=file]),textarea{width:100%;background:#fff;border:1.5px solid var(--line);border-radius:17px;padding:15px 18px;min-height:58px;outline-offset:3px}input::placeholder,textarea::placeholder{color:#667174;opacity:1}textarea{resize:vertical;display:block;min-height:142px}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.two-columns .field{min-width:0}.choices label{position:relative;cursor:pointer;display:block}.choices input{position:absolute;opacity:0;width:1px;height:1px}.choices span{display:flex;align-items:center;justify-content:center;min-height:58px;padding:13px;border:1.5px solid var(--line);background:#fff;border-radius:17px;transition:border-color .15s,background .15s}.choices input:checked+span{border-color:#bf8d34;background:#fff8e7;box-shadow:inset 0 0 0 1px #bf8d34}.choices input:focus-visible+span{outline:3px solid var(--focus);outline-offset:3px}.choices label:hover span{border-color:#9ab5c1}.choices input:disabled+span{opacity:.5;cursor:not-allowed}.covers{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.covers span{padding:0;overflow:hidden;display:block;text-align:center}.covers img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;display:block}.covers b{display:block;padding:10px;font-size:17px}.note{border-radius:16px;background:var(--wash);padding:16px 20px;font-size:15px;color:var(--muted);margin:0 0 24px}.note p+p{margin-top:4px}.note strong{color:var(--ink)}.actions{display:flex;gap:16px;margin-top:30px}.actions button{border:0;border-radius:20px;padding:16px 26px;font-weight:700;font-size:20px;min-height:64px}.primary{flex:1;color:#49371b;background:linear-gradient(105deg,#dfa949,#edc974);box-shadow:0 10px 20px rgb(191 136 40 / .2)}.primary:hover{filter:brightness(.97)}.secondary{background:#ecf5f7;white-space:nowrap}.secondary:hover{background:#dfedf0}button:disabled{opacity:.65;cursor:wait}footer{text-align:center;font-size:13px;color:var(--muted);margin:27px auto 0}.upload{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:38px 20px;background:#f4fbfc;border:1.5px dashed #99becd;border-radius:25px;margin:30px 0 28px;cursor:pointer}.upload strong{font-size:23px}.upload span{font-size:17px;color:var(--muted)}.upload input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}.upload:focus-within{outline:3px solid var(--focus);outline-offset:4px}.upload img{width:150px;height:150px;object-fit:cover;border-radius:12px}.counter{display:block;text-align:right;font-size:16px;margin-top:8px;color:var(--muted)}.traits-caption{font-size:15px}.traits-caption output{font-weight:400;color:var(--muted)}.traits{display:grid;grid-template-columns:1fr 1fr;gap:28px 16px;margin:24px 0}.traits span{justify-content:flex-start;gap:16px;padding:16px 18px;min-height:76px;font-weight:700}.traits svg{background:#ecf5f7;box-sizing:content-box;padding:9px;border-radius:50%;flex-shrink:0}.traits input:checked+span svg{background:#f7e8c7;color:#95651d}#form-error{border:1px solid #dfb4ae;border-radius:14px;padding:14px 20px;margin-top:16px;background:#fff3f0;color:var(--error);font-family:system-ui,sans-serif;font-size:15px}.success{text-align:center;padding:72px 30px 84px}.success-icon{width:108px;height:108px;display:grid;place-items:center;margin:0 auto 28px;background:#e5f3f3;border-radius:50%}.success h2{font-size:34px;margin:12px 0 26px}.success>p:not(.step-caption){font-size:20px;line-height:2;color:var(--muted)}#receipt{display:block;margin-top:24px;font-family:system-ui,sans-serif;font-size:12px;overflow-wrap:anywhere}
@media(max-width:600px){body{font-size:16px;background:radial-gradient(ellipse 90px 160px at 0 220px,#e8f5f7 98%,transparent 100%),radial-gradient(ellipse 90px 200px at 100% 900px,#f6eae0 98%,transparent 100%)}.page{width:calc(100% - 28px);padding-top:26px}.logo{width:215px;margin-bottom:19px}h1{font-size:25px}.welcome p{font-size:15px}h2{font-size:26px}.steps{--step-size:35px;margin:28px 0 24px}.steps li{font-size:12px;gap:6px}.sheet{padding:23px 18px;border-radius:27px}.intro{font-size:15px;margin-bottom:24px}.step-caption{font-size:14px}label:not(.choices label):not(.upload),legend{font-size:16px}small{font-size:12px}.two-columns{gap:10px}.covers{gap:7px}.covers b{font-size:14px;padding:8px 4px}.covers span{border-radius:13px}.choices span{font-size:14px;padding:12px 6px}.covers span{padding:0}.note{font-size:13px;padding:13px}.actions{gap:10px;margin-top:24px}.actions button{font-size:17px;padding:14px 20px;min-height:56px;border-radius:17px}input:not([type=radio]):not([type=checkbox]):not([type=file]),textarea{font-size:16px;padding:13px 12px;min-height:52px}.upload{padding:26px 12px;margin-top:24px}.upload span{font-size:14px}.traits{gap:16px 10px}.traits span{padding:12px 9px;gap:8px;font-size:15px;min-height:65px}.traits svg{width:19px;height:19px;padding:7px}.success{padding:50px 18px 60px}.success h2{font-size:28px}.success>p:not(.step-caption){font-size:16px}footer{font-size:12px;max-width:29em}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

#birthday{-webkit-appearance:none;appearance:none;display:block;min-width:0;max-width:100%;height:58px;line-height:normal;font-variant-numeric:tabular-nums;text-align:left}#birthday::-webkit-date-and-time-value{text-align:left;min-height:1.5em}#birthday::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.65}
@media(max-width:600px){#birthday{height:52px}}

.covers[data-count="1"]{grid-template-columns:minmax(0,1fr);max-width:300px}
.covers[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.covers[data-count="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}
/* Voice message controls follow the compact review prototype. */
.voice{margin:20px 0 18px;border:1px solid var(--line);border-radius:18px;padding:16px;text-align:center;background:linear-gradient(160deg,#f1f8f8,#fffefa);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}
.voice h3{font-size:15px;font-weight:600;margin:0}
.voice h3 small{font-size:10px;margin-left:7px}
.voice-sub{font-size:11px;color:var(--muted);margin:4px 0 6px}
#voice-time{display:block;font-size:25px;font-variant-numeric:tabular-nums;letter-spacing:.04em;font-weight:500;margin:8px 0 4px}
#voice-status{font-size:11px;color:var(--muted);margin:4px 0 8px;min-height:18px}
.voice-actions{display:flex;gap:10px;margin-top:10px}
.voice-actions button{flex:1;padding:10px 8px;font-size:13px;min-height:44px;border:0;border-radius:12px;font-weight:600}
.voice-progress{height:4px;border-radius:9px;background:#dce9ec;margin:13px 0 5px;overflow:hidden}
.voice-progress span{display:block;height:100%;width:0;background:var(--gold);transition:width .12s}
.voice-hint{font-size:10px;color:var(--muted);margin:6px 0 0}
#voice-delete-dialog{width:min(100% - 52px,360px);padding:26px 22px;border:0;border-radius:20px;background:var(--paper);color:var(--ink);box-shadow:0 20px 50px #203b4a26;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}
#voice-delete-dialog::backdrop{background:#2d465563}
#voice-delete-dialog h3{font-size:18px;margin:0 0 8px}
#voice-delete-dialog p{font-size:13px;color:var(--muted);margin:0 0 18px}
.voice-dialog-actions{display:flex;justify-content:flex-end;gap:8px}
.voice-dialog-actions button{padding:10px 16px;min-height:44px;border:0;border-radius:12px;background:#eaf4f6;font-size:13px;font-weight:600}
#voice-delete-confirm{color:#994a42;background:#f9ebe8}
@media(max-width:600px){
 .page[data-form-step="2"] .logo{width:120px;margin-bottom:6px}
 .page[data-form-step="2"] .welcome h1{font-size:16px}
 .page[data-form-step="2"] .welcome p{font-size:10px;margin-top:2px}
 .page[data-form-step="2"] .steps{--step-size:24px;margin:12px 0 16px}
 .page[data-form-step="2"] .steps li{font-size:10px}
 [data-step="2"].sheet{padding:18px 16px}
 [data-step="2"] h2{font-size:22px}
 [data-step="2"] .intro{font-size:12px;margin-bottom:12px}
 [data-step="2"] .field{margin-bottom:12px;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}
 [data-step="2"] label{font-size:13px!important;margin-bottom:8px!important}
 [data-step="2"] textarea{height:auto;min-height:142px;font-size:16px}
 [data-step="2"] .counter{font-size:10px;margin:3px 0 10px}
 [data-step="2"] .voice{margin:12px 0}
 [data-step="2"] .actions{margin-top:12px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

.photo-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:18px;margin:0}.photo-heading small{flex-shrink:0}.photo-help{font-size:15px;color:var(--muted);margin:8px 0 16px}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.photo-slot,.watercolor-example{height:220px;overflow:hidden;border:1.5px dashed #99becd;border-radius:17px;background:var(--wash)}.photo-slot button{border:0;color:var(--ink)}.photo-add{width:100%;height:100%;background:transparent;font-size:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.photo-add span{font-size:16px}.photo-visual{display:block;width:100%;height:174px;padding:0;background:transparent}.photo-visual img{display:block;width:100%;height:100%;object-fit:cover}.photo-visual span{display:block;padding:16px;font-size:14px}.photo-tools{display:flex;height:44px;background:white}.photo-tools button{width:50%;background:white;font-size:15px;min-height:44px}.photo-slot button:hover{background:#dfedf0}.watercolor-example img{display:block;width:100%;height:100%;object-fit:contain}.watercolor-block{border-top:1px solid var(--line);padding-top:24px;margin-top:26px}.watercolor-example{border-style:solid;display:flex;align-items:center;justify-content:center;text-align:center;background:var(--paper);color:var(--muted);font-size:17px}#photo-dialog{width:min(90vw,720px);max-height:90vh;border:1px solid var(--line);border-radius:20px;padding:20px;color:var(--ink);background:var(--paper)}#photo-dialog::backdrop{background:rgb(30 48 58 / .5)}#photo-preview-name{overflow-wrap:anywhere;margin-bottom:12px}#photo-preview-image{display:block;width:100%;max-height:65vh;object-fit:contain}#photo-dialog button{display:block;margin:16px auto 0;min-height:44px;padding:8px 24px;border:0;border-radius:12px;background:var(--secondary,#ecf5f7)}
@media(max-width:600px){.photo-heading{font-size:16px;gap:8px}.photo-help{font-size:13px}.photo-grid{gap:10px}.photo-slot,.watercolor-example{height:180px;border-radius:12px}.photo-visual{height:134px}.photo-add span,.watercolor-example{font-size:14px}.watercolor-block{padding-top:20px;margin-top:22px}}

.field-error{margin:10px 0 0;color:var(--error);font-family:system-ui,sans-serif;font-size:14px;line-height:1.6}
#voice-start{display:inline-flex;align-items:center;justify-content:center;gap:7px}#voice-start svg{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#voice-success{max-width:440px;margin:28px auto 0;padding-top:24px;border-top:1px solid var(--line)}#voice-success h3{font-size:20px;margin:0 0 12px}#voice-success p{font-size:15px;color:var(--muted);margin:0 0 18px}#voice-success a,#voice-success button{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:12px 16px;border:0;border-radius:17px;font-size:16px;text-decoration:none}#voice-success input{font-family:system-ui,sans-serif;font-size:13px;margin:16px 0}#voice-copy-status{margin:12px 0 0!important}
