:root{--paper:#f6efe3;--paper2:#efe5d3;--card:#fffaf1;--ink:#2b2a33;--ink2:#5d5a63;--muted:#8e8779;--line:#e2d6c1;--seal:#a8423a;--seal2:#c8665c;--sage:#5f7a62;--gold:#b8913f;--serif:"Fraunces",Georgia,serif;--sans:"Inter",system-ui,sans-serif;--r:16px;--shadow:0 1px 2px rgba(60,40,20,.06),0 6px 20px rgba(60,40,20,.07)}*{box-sizing:border-box}body,html{margin:0;height:100%}body{background:var(--paper2);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;background-image:radial-gradient(rgba(120,90,50,.05) 1px,transparent 0);background-size:4px 4px}.app{max-width:460px;margin:0 auto;min-height:100%;background:var(--paper);position:relative;display:flex;flex-direction:column;box-shadow:0 0 40px rgba(60,40,20,.08)}button{cursor:pointer;border:none;background:none}button,input,select,textarea{font:inherit;color:inherit}.serif{font-family:var(--serif)}.muted{color:var(--muted)}.small{font-size:13px}.xs{font-size:12px}.pad{padding:20px}.scroll{flex:1 1;overflow-y:auto;padding:20px 20px 96px}h1,h2,h3{font-family:var(--serif);font-weight:600;margin:0;letter-spacing:-.01em}h1{font-size:30px;line-height:1.15}h2{font-size:22px;line-height:1.25}h3{font-size:17px}p{margin:0}.stack>*+*{margin-top:12px}.stack-lg>*+*{margin-top:20px}.row{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 20px;border-radius:999px;background:var(--ink);color:var(--paper);font-weight:500;transition:transform .1s,opacity .2s}.btn:active{transform:scale(.98)}.btn[disabled]{opacity:.35;cursor:not-allowed}.btn.full{width:100%}.btn.seal{background:var(--seal)}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}.btn.sm{padding:8px 14px;font-size:13px}.link{color:var(--seal);font-weight:500;text-decoration:underline;text-underline-offset:3px}.card{border:1px solid var(--line);border-radius:var(--r);padding:18px}.card,.letter{background:var(--card);box-shadow:var(--shadow)}.letter{border:1px solid var(--line);border-radius:6px;padding:22px 20px;position:relative;font-family:var(--serif);font-size:16px;line-height:28px;overflow-wrap:anywhere}.letter .sig{font-style:italic;text-align:right;margin-top:8px}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--paper2);font-size:12px;color:var(--ink2);border:1px solid var(--line)}.pill.verified{background:#e8efe6;border-color:#c9d8c6;color:var(--sage)}.pill.seal{background:#f6e3df;border-color:#ebc8c1;color:var(--seal)}.opt{display:block;width:100%;text-align:left;padding:15px 16px;border:1px solid var(--line);border-radius:14px;background:var(--card);margin-top:10px;transition:all .15s}.opt.on{border-color:var(--seal);background:#fbeeea;box-shadow:0 0 0 1px var(--seal) inset}.field{width:100%;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:12px 14px;outline:none}.field:focus{border-color:var(--seal)}textarea.field{resize:vertical;min-height:110px;line-height:1.55}.progress{height:3px;background:var(--line);border-radius:3px;overflow:hidden}.progress>i{display:block;height:100%;background:var(--seal);transition:width .3s}.top{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 8px;position:-webkit-sticky;position:sticky;top:0;background:var(--paper);z-index:5}.back{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);background:var(--card)}.brand{font-family:var(--serif);font-size:22px;font-weight:600;letter-spacing:-.02em}.brand i{color:var(--seal);font-style:italic}.tabs{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:460px;display:flex;background:rgba(246,239,227,.96);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:8px 6px calc(8px + env(safe-area-inset-bottom));z-index:10}.tabs button{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--muted);padding:6px 0;position:relative}.tabs button.on{color:var(--seal)}.tabs svg{width:22px;height:22px}.dot{position:absolute;top:4px;right:calc(50% - 16px);width:8px;height:8px;background:var(--seal)}.av,.dot{border-radius:50%}.av{overflow:hidden;flex-shrink:0;position:relative;background:var(--paper2)}.av svg{display:block;width:100%;height:100%;transition:filter .8s ease}.av.lg{width:96px;height:96px}.av.md{width:56px;height:56px}.av.sm{width:38px;height:38px}.match{font-size:13px;color:var(--seal)}.match,.why{font-family:var(--serif)}.why{border-left:2px solid var(--seal2);padding:2px 0 2px 12px;font-style:italic;color:var(--ink2)}.qa{padding:14px 0;border-bottom:1px dashed var(--line)}.qa:last-child{border-bottom:none}.qa .q{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.qa .a{font-family:var(--serif);font-size:16px;margin-top:4px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:7px 12px;border-radius:999px;border:1px dashed var(--seal2);color:var(--seal);font-size:13px;background:transparent}.counter{font-size:12px;color:var(--muted);text-align:right}.counter.ok{color:var(--sage)}.bubbles{display:flex;flex-direction:column;gap:8px}.bub{max-width:80%;padding:10px 14px;border-radius:18px;font-size:15px;line-height:1.45;white-space:pre-wrap;word-wrap:break-word}.bub.me{align-self:flex-end;background:var(--ink);color:var(--paper);border-bottom-right-radius:6px}.bub.them{align-self:flex-start;background:var(--card);border:1px solid var(--line);border-bottom-left-radius:6px}.bub.sys{align-self:center;background:transparent;color:var(--muted);font-size:12px;text-align:center;max-width:90%}.voice{display:flex;align-items:center;gap:10px;min-width:180px}.voice .play{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:currentColor}.voice .play svg{width:12px;height:12px}.wave{display:flex;align-items:center;gap:2px;height:22px;flex:1 1}.wave i{display:block;width:3px;border-radius:2px;background:currentColor;opacity:.6}.composer{position:-webkit-sticky;position:sticky;bottom:0;background:var(--paper);border-top:1px solid var(--line);padding:10px 12px calc(10px + env(safe-area-inset-bottom));display:flex;gap:8px;align-items:flex-end}.composer textarea{flex:1 1;min-height:42px;max-height:120px;border-radius:21px;padding:10px 16px;resize:none}.iconbtn{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;background:var(--ink);color:var(--paper)}.iconbtn.light{background:var(--card);color:var(--ink);border:1px solid var(--line)}.iconbtn[disabled]{opacity:.35}.iconbtn svg{width:18px;height:18px}.meter{display:flex;gap:4px}.meter i{flex:1 1;height:6px;border-radius:3px;background:var(--line);transition:background .4s}.meter i.on{background:var(--seal)}.modal-bg{position:fixed;inset:0;background:rgba(30,25,20,.45);display:flex;align-items:flex-end;justify-content:center;z-index:50;animation:fade .2s}.modal{background:var(--paper);width:100%;max-width:460px;border-radius:22px 22px 0 0;padding:24px 20px calc(24px + env(safe-area-inset-bottom));max-height:88vh;overflow-y:auto;animation:up .25s ease}@keyframes fade{0%{opacity:0}}@keyframes up{0%{transform:translateY(40px);opacity:0}}@keyframes pop{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.pop{animation:pop .4s ease}.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:10px 18px;border-radius:999px;font-size:14px;z-index:60;animation:pop .25s;max-width:90%;text-align:center}.share-card{background:linear-gradient(160deg,#fffaf1,#f3e4cf);border:1px solid var(--line);border-radius:18px;padding:28px 22px;text-align:center}.seal-mark,.share-card{font-family:var(--serif)}.seal-mark{width:54px;height:54px;border-radius:50%;background:radial-gradient(circle at 35% 35%,var(--seal2),var(--seal));color:#fbe9e4;display:grid;place-items:center;margin:0 auto;font-size:24px;font-style:italic;box-shadow:0 3px 8px rgba(168,66,58,.35)}.hero{padding:40px 24px 30px;text-align:center}.feed-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow)}.feed-card .txt{font-family:var(--serif);font-size:16px;line-height:1.55}.lock{filter:blur(5px);-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.toggle{width:46px;height:28px;border-radius:14px;background:var(--line);position:relative;transition:background .2s;flex-shrink:0}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}.toggle.on{background:var(--seal)}.toggle.on:after{left:21px}.spinner{width:44px;height:44px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--seal);animation:spin 1s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(1turn)}}.typing{display:inline-flex;gap:4px}.typing i{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:bl 1.2s infinite}.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}@keyframes bl{0%,60%,to{opacity:.3}30%{opacity:1}}.divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.divider:after,.divider:before{content:"";flex:1 1;height:1px;background:var(--line)}.list-item{display:flex;gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line);width:100%;text-align:left}.app img.photo{width:100%;height:100%;object-fit:cover;display:block;transition:filter .8s ease}.err{color:var(--seal);font-size:13px}.center{min-height:60vh;display:grid;place-items:center;text-align:center}a{color:inherit;text-decoration:none}.upload{display:flex;flex-direction:column;align-items:center;gap:10px;padding:18px;border:1.5px dashed var(--line);border-radius:16px;background:var(--card);text-align:center;cursor:pointer}.upload img{width:120px;height:120px;object-fit:cover;border-radius:12px}.admin-img{width:100%;max-height:260px;object-fit:contain;border-radius:10px;background:#eee}audio{height:32px;max-width:220px}select.field{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:38px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235d5a63' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:12px}