:root{--bg:#f4f3f7;--panel:#fff;--ink:#2c2c2c;--muted:#9a93b3;--accent:#4c436f;--accent-hover:#3a3457;--accent-soft:#eceaf5;--user-bubble:#4c436f;--user-ink:#fff;--border:#d4d0e0;--radius:12px}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;background:var(--bg);color:var(--ink);font-family:"Source Serif 4",Georgia,serif;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-family:Playfair Display,Georgia,serif}.shell{max-width:760px;margin:0 auto;height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;padding:24px max(20px,env(safe-area-inset-right)) 0 max(20px,env(safe-area-inset-left))}.intro{text-align:center;padding:20px 8px 16px}.intro h1{font-family:Georgia,Times New Roman,serif;font-size:30px;margin:0 0 6px;letter-spacing:-.01em}.intro p{color:var(--muted);margin:0 auto;max-width:48ch;line-height:1.55;font-size:15px}.chat{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin:12px 0 24px;overflow:hidden}.chat,.messages{flex:1 1;display:flex;flex-direction:column}.messages{overflow-y:auto;padding:22px;gap:14px;min-height:320px}.empty{margin:auto;text-align:center;color:var(--muted);max-width:42ch;line-height:1.6}.empty .spark{font-size:26px;display:block;margin-bottom:10px}.bubble{max-width:80%;padding:12px 15px;border-radius:14px;line-height:1.55;white-space:pre-wrap;word-wrap:break-word;font-size:15px}.bubble.assistant{align-self:flex-start;background:var(--accent-soft);color:var(--ink);border-bottom-left-radius:4px;white-space:normal}.bubble.assistant p{margin:0 0 .55em}.bubble.assistant p:last-child{margin-bottom:0}.bubble.assistant ol,.bubble.assistant ul{margin:.4em 0;padding-left:1.4em}.bubble.assistant li{margin:.2em 0}.bubble.assistant strong{font-weight:600}.bubble.assistant em{font-style:italic}.bubble.assistant code{font-family:ui-monospace,monospace;font-size:.88em;background:rgba(76,67,111,.08);padding:1px 5px;border-radius:4px}.bubble.assistant pre{margin:.5em 0;background:rgba(76,67,111,.06);border-radius:8px;padding:10px 12px;overflow-x:auto}.bubble.assistant pre code{background:none;padding:0;font-size:.86em}.bubble.user{align-self:flex-end;background:var(--user-bubble);color:var(--user-ink);border-bottom-right-radius:4px}.cursor{display:inline-block;width:7px;height:1.05em;background:var(--accent);margin-left:2px;vertical-align:text-bottom;animation:blink 1s steps(2,start) infinite}@keyframes blink{to{opacity:0}}.composer{display:flex;gap:10px;padding:14px;border-top:1px solid var(--border);background:var(--panel)}.composer textarea{flex:1 1;resize:none;border:1px solid var(--border);border-radius:12px;padding:11px 13px;font:inherit;font-size:15px;background:#fff;color:var(--ink);max-height:160px;overflow-y:auto;outline:none}.composer textarea:focus{border-color:var(--accent)}.composer button{border:none;background:var(--accent);color:#fff;font:inherit;font-weight:600;padding:0 20px;border-radius:12px;cursor:pointer;transition:opacity .15s ease}.composer button:disabled{opacity:.45;cursor:not-allowed}.footer{text-align:center;color:var(--muted);font-size:12.5px;padding:0 8px 22px;line-height:1.5}.footer a{color:var(--accent)}.backstage-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 4px}.backstage-bar .label{font-size:13px;color:var(--muted);letter-spacing:.02em}.tabs{display:flex;gap:6px}.tabs button{border:1px solid var(--border);background:var(--panel);color:var(--ink);font:inherit;font-size:13px;padding:6px 12px;border-radius:999px;cursor:pointer}.tabs button.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.linkbtn{background:none;border:none;color:var(--accent);font:inherit;font-size:13px;cursor:pointer;padding:0}.gate{max-width:420px;margin:12vh auto;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:28px 26px;text-align:center}.gate h2{font-family:Georgia,serif;margin:0 0 6px}.gate p{color:var(--muted);font-size:14px;margin:0 0 18px;line-height:1.5}.gate form{display:flex;gap:8px}.gate input{flex:1 1;border:1px solid var(--border);border-radius:12px;padding:11px 13px;font:inherit;background:#fff}.gate .err{color:#b3261e;font-size:13px;margin-top:12px}.remember-row{justify-content:space-between;padding:10px 14px 0}.remember-left,.remember-row{display:flex;align-items:center;gap:10px}.remember-left{flex:1 1;min-width:0}.clear-row{display:flex;justify-content:center;padding:6px 14px 0}.linkbtn.muted{color:var(--muted)}.remember-row .note{color:var(--muted);font-size:12.5px}.memlist{display:flex;flex-direction:column;gap:10px;padding:18px;overflow-y:auto}.memrow{border:1px solid var(--border);border-radius:12px;padding:12px 14px;display:flex;align-items:flex-start;gap:12px}.memrow .mtext{flex:1 1;line-height:1.5;font-size:14.5px}.tag{font-size:11.5px;padding:3px 9px;border-radius:999px;cursor:pointer;border:1px solid var(--border);white-space:nowrap}.tag.public{background:var(--accent-soft);color:var(--accent)}.tag.private{background:#ecebe7;color:var(--muted)}.memrow .del{background:none;border:none;color:var(--muted);cursor:pointer;font-size:16px;line-height:1}.memempty{color:var(--muted);text-align:center;margin:auto;padding:40px 10px;line-height:1.6}@media (max-width:640px){.shell{padding:16px 14px env(safe-area-inset-bottom,0)}.intro{padding:12px 4px}.intro h1{font-size:24px}.intro p{font-size:14px;max-width:none}.chat{margin:8px 0 12px;border-radius:14px}.messages{padding:16px;gap:12px;min-height:0}.bubble{max-width:88%;font-size:15px}.composer{padding:10px;gap:8px}.composer textarea{font-size:16px;padding:10px 12px}.composer button{padding:0 16px;min-height:44px}.backstage-bar{flex-wrap:wrap}.gate{margin:8vh auto;max-width:none;padding:24px 18px}.gate input{font-size:16px}.memrow{padding:10px 12px}}