*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;height:100dvh;-webkit-text-size-adjust:100%}:root{--bg: #090815;--surface: #111024;--card: #17162B;--card2: #1D1C33;--border: rgba(255,255,255,.07);--borderhi: rgba(255,255,255,.13);--t1: #EFECFF;--t2: #8B89A8;--t3: #4E4C68;--heal: #F59E0B;--revenge: #7C6AFF;--release: #8FA987;--r: 16px}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Noto Sans SC,sans-serif;background:var(--bg);color:var(--t1);display:flex;justify-content:center;overflow:hidden;height:100vh;height:100dvh}#root{width:100%;height:100%;display:flex;justify-content:center}.viewport{width:100%;max-width:430px;height:100vh;height:100dvh;position:relative;overflow:hidden}.screen{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}@keyframes screenEnter{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.screen-enter{animation:screenEnter .38s cubic-bezier(.4,0,.2,1) both}.s-input{overflow-y:auto;-webkit-overflow-scrolling:touch;background:var(--bg)}.input-inner{padding:52px 24px calc(48px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;min-height:100%}.logo-row{display:flex;align-items:center;gap:10px;margin-bottom:28px}.logo-badge{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#f59e0b,#ec4899);display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}.logo-name{font-size:17px;font-weight:700;letter-spacing:.02em}.page-h1{font-size:26px;font-weight:700;line-height:1.25;letter-spacing:-.3px;margin-bottom:8px}.page-sub{font-size:14px;color:var(--t2);line-height:1.55;margin-bottom:32px}.sec{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--t3);margin-bottom:10px}.emo-wrap{background:var(--card);border:1.5px solid var(--border);border-radius:var(--r);padding:14px 16px 8px;margin-bottom:8px;transition:border-color .2s}.emo-wrap:focus-within{border-color:#f59e0b80}.emo-textarea{display:block;width:100%;background:none;border:none;outline:none;color:var(--t1);font-size:15px;line-height:1.65;resize:none;height:76px;font-family:inherit}.emo-textarea::placeholder{color:var(--t3)}.emo-footer{display:flex;justify-content:flex-end;padding-bottom:4px}.char-count{font-size:11px;color:var(--t3)}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:28px}.qtag{padding:5px 13px;background:var(--card);border:1px solid var(--border);border-radius:100px;font-size:12px;color:var(--t2);cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.qtag.active{background:#f59e0b21;border-color:#f59e0b80;color:var(--heal)}.style-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:28px}.scard{background:var(--card);border:1.5px solid var(--border);border-radius:14px;padding:14px 8px;text-align:center;cursor:pointer;transition:all .18s;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.scard:active{transform:scale(.96)}.scard.sel-heal{background:#f59e0b1a;border-color:#f59e0b8c}.scard.sel-revenge{background:#7c6aff1a;border-color:#7c6aff99}.scard.sel-release{background:#8fa9871a;border-color:#8fa9878c}.scard-icon{font-size:22px;margin-bottom:7px;line-height:1}.scard-name{font-size:13px;font-weight:600;color:var(--t1)}.scard-sub{font-size:10px;color:var(--t3);margin-top:3px;line-height:1.35}.range-row{display:flex;align-items:center;gap:10px;margin-bottom:32px}.range-lbl{font-size:11px;color:var(--t3);white-space:nowrap}.range-slider{flex:1;-webkit-appearance:none;height:3px;background:var(--card2);border-radius:2px;outline:none}.range-slider::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--accent, #F59E0B);cursor:pointer}.range-val{font-size:15px;font-weight:700;width:18px;text-align:center}.btn-cta{width:100%;padding:17px;border:none;border-radius:var(--r);font-size:15px;font-weight:700;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:opacity .15s,transform .1s;-webkit-tap-highlight-color:transparent;margin-top:auto}.btn-cta:active{transform:scale(.98);opacity:.85}.s-loading{background:var(--bg);align-items:center;justify-content:center;gap:28px}.orb{position:relative;width:72px;height:72px}.orb-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2.5px solid transparent;animation:spin 1.2s linear infinite}.orb-ring:nth-child(2){top:9px;right:9px;bottom:9px;left:9px;animation:spin 2s linear infinite reverse}.orb-center{position:absolute;top:22px;right:22px;bottom:22px;left:22px;border-radius:50%;background:var(--card)}@keyframes spin{to{transform:rotate(360deg)}}.load-msg{font-size:14px;color:var(--t2);text-align:center;line-height:1.7}.dots{display:inline-flex;gap:4px;margin-top:8px}.dot{width:4px;height:4px;border-radius:50%;background:var(--t3);animation:blink 1.2s ease-in-out infinite}.dot:nth-child(2){animation-delay:.2s}.dot:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{transform:scale(.8);opacity:.35}40%{transform:scale(1.2);opacity:1}}.s-result{overflow-y:auto;-webkit-overflow-scrolling:touch}.illus{width:100%;height:240px;flex-shrink:0;position:relative;overflow:hidden;transition:background .5s}.illus-heal{background:radial-gradient(ellipse 65% 55% at 55% 72%,#643200bf,#140a00f5 60%),linear-gradient(180deg,#060410,#0d0800)}.illus-revenge{background:radial-gradient(ellipse 80% 60% at 50% 110%,#190f46e6,#03030efa 55%),linear-gradient(180deg,#020208,#050414)}.illus-release{background:radial-gradient(ellipse 75% 70% at 28% 32%,#283e32a6,#050807f5 62%),linear-gradient(180deg,#050708,#08100a)}.illus svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.illus:after{content:"";position:absolute;bottom:0;left:0;right:0;height:90px;background:linear-gradient(transparent,var(--card));pointer-events:none}.result-card-body{background:var(--card);padding:22px 20px 24px;display:flex;flex-direction:column}.result-actions{background:var(--card);padding:4px 20px calc(44px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column}.result-header{display:flex;align-items:center;gap:9px;margin-bottom:18px}.s-pill{padding:3px 11px;border-radius:100px;font-size:11px;font-weight:700;letter-spacing:.06em}.pill-heal{background:#f59e0b26;color:var(--heal)}.pill-revenge{background:#7c6aff26;color:#a99cff}.pill-release{background:#8fa98726;color:#a8c5a0}.emo-echo{font-size:12px;color:var(--t3)}.story{font-size:15px;line-height:1.95;color:#d6d4f0;letter-spacing:.025em;margin-bottom:26px}.story p+p{margin-top:14px}.sep{width:28px;height:2px;background:var(--borderhi);border-radius:1px;margin-bottom:20px}.act-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.btn{padding:13px 10px;border-radius:12px;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;border:none;display:flex;align-items:center;justify-content:center;gap:5px;transition:transform .1s,opacity .15s;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.96);opacity:.82}.btn-filled{transition:background .3s,color .3s}.btn-ghost{background:var(--card2);color:var(--t1);border:1px solid var(--borderhi)}.btn-line{width:100%;padding:12px;border-radius:12px;background:transparent;border:1px solid var(--border);color:var(--t2);font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;margin-top:8px;transition:transform .1s,opacity .15s;-webkit-tap-highlight-color:transparent}.btn-line:active{transform:scale(.97);opacity:.65}.btn-line-dim{color:var(--t3)}.toast{position:fixed;bottom:36px;left:50%;transform:translate(-50%) translateY(10px);background:#1c1a32e0;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);color:var(--t1);padding:9px 20px;border-radius:100px;font-size:13px;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;white-space:nowrap;z-index:999}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}
