:root{color:#3f312b;font-synthesis:none;--background:#f4eadf;--paper:#fffaf3;--berry:#8f3452;--berry-dark:#6e223e;--berry-soft:#f2dfe4;--rose:#d9909f;--thread:#b45c75;--ink:#3f312b;--muted:#786961;--line:#d7c0af;--success:#708c6a;--font-serif:"Songti SC", "STSong", "Noto Serif CJK SC", serif;--font-sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;--app-height:100dvh;background:#f4eadf;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{background:var(--background);min-height:100%}body{min-width:320px;min-height:var(--app-height);color:var(--ink);font-family:var(--font-sans);margin:0}button,input,textarea{font:inherit;-webkit-tap-highlight-color:transparent}button{cursor:pointer;min-width:44px;min-height:44px}button:disabled{cursor:not-allowed;opacity:.46}button:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline-offset:3px;outline:3px solid #8f345247}body:before{content:"";z-index:-2;background:repeating-linear-gradient(0deg, transparent 0 4px, #7e5f4909 4px 5px), repeating-linear-gradient(90deg, transparent 0 4px, #7e5f4908 4px 5px), radial-gradient(circle at 8% 12%, #d9909f2e, transparent 30%), radial-gradient(circle at 90% 78%, #708c6a21, transparent 28%), var(--background);position:fixed;inset:0}.app-shell{width:min(1240px,100%);min-height:var(--app-height);padding:max(18px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(20px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));flex-direction:column;margin:0 auto;display:flex}.masthead{justify-content:space-between;align-items:center;gap:24px;margin-bottom:28px;display:flex}.brand{color:var(--ink);text-align:left;background:0 0;border:0;align-items:center;gap:12px;padding:0;display:flex}.brand__mark{width:42px;height:42px;color:var(--berry);border:1px dashed var(--thread);background:#fffaf3c7;border-radius:50%;place-items:center;font-size:24px;display:grid}.brand strong,.brand small{display:block}.brand strong{font-family:var(--font-serif);letter-spacing:.15em;font-size:19px}.brand small{color:var(--muted);letter-spacing:.06em;margin-top:3px;font-size:11px}.masthead nav{background:#fffaf3bd;border:1px solid #8f345224;border-radius:999px;gap:5px;padding:4px;display:flex;box-shadow:0 8px 24px #59382b0f}.masthead nav button{color:var(--muted);background:0 0;border:0;border-radius:999px;padding:0 19px;font-size:14px;font-weight:650;transition:color .18s,background .18s,box-shadow .18s}.masthead nav button.is-active{color:#fff;background:var(--berry);box-shadow:0 5px 16px #6e223e33}main{flex:1;align-items:center;display:grid}h1,h2,p{margin-top:0}h1,h2{font-family:var(--font-serif)}h1:focus,h2:focus{outline:none}h1{letter-spacing:.025em;margin:13px 0 12px;font-size:clamp(38px,4.8vw,62px);font-weight:600;line-height:1.18}h2{font-size:clamp(29px,3.2vw,42px);font-weight:600;line-height:1.25}.eyebrow{color:var(--berry);letter-spacing:.18em;text-transform:uppercase;margin-bottom:0;font-size:10px;font-weight:750;line-height:1.4}.lede{max-width:520px;color:var(--muted);margin-bottom:25px;font-size:15px;line-height:1.8}.product-workspace{grid-template-columns:minmax(360px,.94fr) minmax(400px,1.06fr);align-items:center;gap:clamp(32px,5vw,74px);width:100%;padding:12px 1% 26px;display:grid}.workspace-copy{min-width:0}.workspace-card{padding:clamp(30px,4vw,46px)}.paper{background:repeating-linear-gradient(0deg, transparent 0 5px, #694b3705 5px 6px), var(--paper);border:1px solid #dbc6b5;border-radius:22px;position:relative;box-shadow:0 22px 58px #59382b1c,inset 0 0 0 6px #ebd7c73d}.paper:after{content:"";pointer-events:none;border:1px dashed #b45c7547;border-radius:15px;position:absolute;inset:9px}.workspace-card>*{z-index:1;position:relative}.name-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.field{margin:0 0 16px;display:block}.field__label{color:var(--ink);letter-spacing:.05em;margin-bottom:7px;font-size:13px;font-weight:700;line-height:1.3;display:block}.field input,.field textarea{width:100%;min-height:48px;color:var(--ink);border:1px solid var(--line);background:#ffffffc7;border-radius:11px;outline:none;padding:12px 14px;transition:border-color .18s,box-shadow .18s,background .18s}.field textarea{resize:vertical;min-height:108px;line-height:1.7}.field input:hover,.field textarea:hover{background:#fff}.field input:focus,.field textarea:focus{border-color:var(--thread);box-shadow:0 0 0 3px #b45c751c}.field--error input,.field--error textarea{border-color:#b74b50}.field__hint{min-height:16px;color:var(--muted);margin-top:5px;font-size:11px;line-height:1.45;display:block}.field--error .field__hint{color:#a3313c}.primary,.secondary{letter-spacing:.04em;border-radius:12px;min-height:50px;padding:0 22px;font-size:14px;font-weight:750;transition:transform .18s,box-shadow .18s,background .18s}.primary{color:#fff;border:1px solid var(--berry-dark);background:linear-gradient(145deg, #a64a69, var(--berry-dark));box-shadow:0 9px 22px #6e223e33}.secondary{color:var(--berry-dark);background:#fffaf3f0;border:1px solid #8f345257}.primary:hover:not(:disabled),.secondary:hover:not(:disabled){transform:translateY(-1px)}.primary:hover:not(:disabled){box-shadow:0 11px 26px #6e223e40}.generate-submit{width:100%;margin-top:3px}.privacy-note{color:var(--muted);text-align:center;margin:13px 0 0;font-size:11px;line-height:1.55}.status-notice{border-radius:10px;margin:0 0 13px;padding:11px 13px;font-size:12px;line-height:1.55}.status-notice--success{color:#52694f;background:#edf0e8}.status-notice--error{color:#8c2935;background:#f9e2df}.result-panel{background:#fffaf38f;border:1px solid #8f34522b;border-radius:22px;place-items:center;min-width:0;min-height:590px;padding:clamp(24px,4vw,42px);display:grid;box-shadow:inset 0 0 0 6px #ffffff2e}.result-empty{color:var(--muted);text-align:center;place-items:center;gap:9px;padding:30px;display:grid}.result-empty strong{color:var(--ink);font-family:var(--font-serif);font-size:18px}.result-empty small{font-size:12px;line-height:1.6}.placeholder-flower,.result-empty>span{color:var(--rose);font-size:52px;line-height:1}.generated-result{width:min(100%,440px)}.result-image{aspect-ratio:31/40;background:#d6baa4;border-radius:20px;width:min(100%,380px);margin:0 auto 16px;padding:12px;position:relative;overflow:hidden;box-shadow:0 24px 50px #4d31262e}.result-image:before{content:"";z-index:1;pointer-events:none;border:1px dashed #fffaf3c7;border-radius:16px;position:absolute;inset:6px}.result-image img{object-fit:contain;background:#f7f0e5;border-radius:11px;width:100%;height:100%;transition:opacity .18s;display:block}.result-image--stale img{opacity:.28}.stale-overlay{z-index:2;color:var(--berry-dark);text-align:center;background:#fffaf3c2;border-radius:11px;place-items:center;padding:28px;display:grid;position:absolute;inset:12px}.result-actions{grid-template-columns:.8fr 1.2fr;gap:10px;display:grid}footer{color:#3f312b85;letter-spacing:.08em;justify-content:space-between;gap:20px;margin-top:22px;font-size:10px;line-height:1.4;display:flex}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=860px){.product-workspace{grid-template-columns:1fr;gap:28px;padding-inline:0}.workspace-copy{width:100%;max-width:680px;margin:0 auto}.result-panel{width:min(100%,620px);min-height:480px;margin:0 auto}.result-image{width:min(100%,360px)}}@media (width<=520px){.app-shell{padding-top:max(12px, env(safe-area-inset-top));padding-inline:max(16px, env(safe-area-inset-left)) max(16px, env(safe-area-inset-right))}.masthead{align-items:flex-start;gap:12px;margin-bottom:18px}.brand small{display:none}.brand__mark{width:38px;height:38px}.brand strong{font-size:16px}.masthead nav button{min-height:44px;padding:0 11px;font-size:12px}h1{font-size:36px}.lede{font-size:14px}.workspace-card{padding:32px 24px 29px}.name-row{grid-template-columns:1fr 1fr;gap:9px}.result-panel{min-height:390px;padding:20px}.result-actions{grid-template-columns:1fr}footer{text-align:center;flex-direction:column;gap:3px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:0s!important;animation-duration:0s!important}}.decode-controls{gap:12px;display:grid}.decode-view .dropzone{text-align:center;cursor:pointer;background:linear-gradient(#fffaf3db,#fffaf3db),repeating-linear-gradient(45deg,#0000 0 10px,#8f34520d 10px 11px);border:1px dashed #bba38f;border-radius:13px;align-content:center;place-items:center;min-height:210px;padding:22px;transition:border-color .18s,background .18s;display:grid;position:relative;overflow:hidden}.decode-view .dropzone:hover{border-color:var(--berry);background-color:#fff}.decode-view .dropzone:focus-within{outline-offset:3px;border-color:var(--berry);outline:3px solid #8f34523d}.decode-view .file-input-overlay{z-index:3;opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.decode-view .dropzone>:not(.file-input-overlay){pointer-events:none}.decode-view .upload-flower{width:52px;height:52px;color:var(--berry);border:1px dashed #8f34527a;border-radius:50%;place-items:center;margin-bottom:10px;font-size:25px;display:grid}.decode-view .upload-copy strong,.decode-view .upload-copy span{display:block}.decode-view .upload-copy strong{color:var(--ink);font-size:14px}.decode-view .upload-copy span{color:var(--muted);margin-top:7px;font-size:11px}.decode-view .dropzone--ready{text-align:left;grid-template-columns:minmax(90px,130px) 1fr;gap:16px;min-height:170px}.decode-view .dropzone img{object-fit:contain;border-radius:9px;width:100%;max-height:150px;box-shadow:0 7px 18px #48332821}.decode-view .file-meta{min-width:0}.decode-view .file-meta strong,.decode-view .file-meta span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.decode-view .file-meta strong{font-size:13px}.decode-view .file-meta span{color:var(--muted);margin-top:7px;font-size:11px}.decode-view .inline-error{color:#8c2935;background:#f9e2df;border-radius:10px;gap:4px;margin:0;padding:10px 12px;font-size:12px;line-height:1.5;display:grid}.decode-view .decode-start,.decode-view .decode-cancel{width:100%}.decode-view .decode-cancel{min-height:44px}.decode-result-panel{align-content:center}.selected-preview{place-items:center;gap:14px;width:100%;display:grid}.selected-preview img{object-fit:contain;border-radius:16px;width:min(100%,390px);max-height:470px;transition:opacity .18s;display:block;box-shadow:0 22px 48px #4d312629}.selected-preview p{color:var(--muted);text-align:center;margin:0;font-size:12px}.selected-preview--busy img{opacity:.35}.selected-preview--busy p{color:var(--berry-dark);font-weight:700}.decode-result,.decode-error{width:min(100%,470px)}.decode-result h2,.decode-error h2{margin:14px 0 17px}.letter-meta{border:1px solid var(--line);background:var(--line);grid-template-columns:1fr 1fr;gap:1px;margin:0 0 20px;display:grid}.letter-meta div{background:var(--paper);padding:12px 14px}.letter-meta div:last-child{grid-column:1/-1}.letter-meta dt{color:var(--muted);letter-spacing:.08em;font-size:10px}.letter-meta dd{margin:6px 0 0;font-size:14px;font-weight:700}.decoded-message{border-left:3px solid var(--berry);background:#f2e8d9;border-radius:3px 12px 12px 3px;gap:10px;min-height:130px;padding:21px;display:flex}.decoded-message span{color:var(--thread);font-family:var(--font-serif);font-size:27px}.decoded-message p{white-space:pre-wrap;overflow-wrap:anywhere;font-family:var(--font-serif);flex:1;margin:8px 0;font-size:17px;line-height:1.9}.decode-error>p:not(.eyebrow){color:var(--muted);line-height:1.75}.button-row{gap:10px;margin-top:22px;display:flex}.button-row>*{flex:1}@media (width<=860px){.decode-view .selected-preview img{max-height:440px}}@media (width<=520px){.decode-view .dropzone{min-height:190px}.decode-view .dropzone--ready{grid-template-columns:90px 1fr;min-height:145px}.letter-meta{grid-template-columns:1fr}.letter-meta div:last-child{grid-column:auto}.button-row{flex-direction:column}}
