:root{--navy:#10192b;--navy-soft:#17233a;--navy-line:#24314c;--cream:#f4f0e8;--cream-dim:#a8b0c0;--accent:#e8621a;--accent-soft:#f2b78d;--radius:14px;--serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Helvetica,Arial,sans-serif;color-scheme:dark}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;background:var(--navy);color:var(--cream);font-family:var(--sans);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}body{padding-bottom:env(safe-area-inset-bottom)}button{color:inherit;cursor:pointer}button,input,textarea{font:inherit}.shell{flex-direction:column;height:100dvh;max-width:720px;margin:0 auto}.shell,.top{display:flex}.top{align-items:baseline;gap:10px;padding:calc(env(safe-area-inset-top) + 14px) 20px 12px;border-bottom:1px solid var(--navy-line)}.mark{font-family:var(--serif);font-style:italic;font-size:25px;letter-spacing:.01em}.sub{font-size:12px;color:var(--cream-dim);letter-spacing:.09em;text-transform:uppercase}.top .spacer{flex:1 1}.ghost{background:none;border:1px solid var(--navy-line);border-radius:999px;padding:5px 12px;font-size:12px;color:var(--cream-dim)}.ghost[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.thread{flex:1 1;overflow-y:auto;padding:22px 20px 8px;-webkit-overflow-scrolling:touch}.turn{margin-bottom:22px;max-width:92%}.turn.me{margin-left:auto}.who{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--cream-dim);margin-bottom:5px}.turn.me .who{text-align:right;color:var(--accent-soft)}.bubble{white-space:pre-wrap;word-wrap:break-word}.turn.me .bubble{background:var(--navy-soft);border:1px solid var(--navy-line);border-radius:var(--radius);padding:11px 14px;text-align:left}.turn.her .bubble{border-left:2px solid var(--accent);padding-left:14px}.turn.error .bubble{border-left-color:#c2452f;color:var(--accent-soft)}.thinking{display:inline-flex;gap:5px;align-items:center;color:var(--cream-dim);font-size:14px}.dot{width:5px;height:5px;border-radius:50%;background:var(--accent);opacity:.35;animation:pulse 1.3s infinite}.dot:nth-child(2){animation-delay:.2s}.dot:nth-child(3){animation-delay:.4s}@keyframes pulse{0%,to{opacity:.25}50%{opacity:1}}.empty{color:var(--cream-dim);font-family:var(--serif);font-style:italic;font-size:19px;margin-top:12vh;text-align:center}.composer{display:flex;gap:10px;align-items:flex-end;padding:12px 16px calc(env(safe-area-inset-bottom) + 14px);border-top:1px solid var(--navy-line);background:var(--navy)}.field{flex:1 1;resize:none;max-height:140px;background:var(--navy-soft);color:var(--cream);border:1px solid var(--navy-line);border-radius:var(--radius);padding:11px 14px;outline:none}.field:focus{border-color:var(--accent)}.round{flex:0 0 auto;width:46px;height:46px;border-radius:50%;border:1px solid var(--navy-line);background:var(--navy-soft);display:grid;place-items:center}.round.live{animation:breathe 1.6s infinite}.round.live,.round.send{background:var(--accent);border-color:var(--accent);color:#fff}.round:disabled{opacity:.4;cursor:default;animation:none}@keyframes breathe{0%,to{box-shadow:0 0 0 0 rgba(232,98,26,.55)}50%{box-shadow:0 0 0 9px rgba(232,98,26,0)}}.hint{padding:0 20px 8px;font-size:12px;color:var(--cream-dim);min-height:18px}.gate{display:grid;place-items:center;height:100dvh;padding:24px}.gate form{width:100%;max-width:320px;text-align:center}.gate .mark{font-size:40px;display:block;margin-bottom:6px}.gate p{color:var(--cream-dim);font-size:14px;margin:0 0 26px}.gate input{width:100%;background:var(--navy-soft);color:var(--cream);border:1px solid var(--navy-line);border-radius:var(--radius);padding:13px 15px;outline:none;margin-bottom:12px;text-align:center}.gate input:focus{border-color:var(--accent)}.gate button{width:100%;background:var(--accent);border:none;color:#fff;border-radius:var(--radius);padding:13px;font-weight:500}.gate .err{color:var(--accent-soft);font-size:13px;min-height:20px;margin-top:10px}.voicebar{display:flex;flex-direction:column;align-items:center;gap:14px;padding:20px 20px calc(env(safe-area-inset-bottom) + 26px);border-top:1px solid var(--navy-line)}.orb{position:relative;width:132px;height:132px;border-radius:50%;border:1px solid var(--navy-line);background:var(--navy-soft);display:grid;place-items:center;transition:background .25s,border-color .25s}.orb .ring{position:absolute;inset:-6px;border-radius:50%;border:2px solid transparent;transition:border-color .25s}.orb-label{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--cream-dim);transition:color .25s}.orb.listening{background:rgba(232,98,26,.1);border-color:var(--accent)}.orb.listening .ring{border-color:rgba(232,98,26,.45);animation:listen 1.9s ease-out infinite}.orb.listening .orb-label{color:var(--accent)}@keyframes listen{0%{transform:scale(1);opacity:.9}to{transform:scale(1.22);opacity:0}}.orb.thinking{background:var(--navy-soft);border-color:var(--accent-soft)}.orb.thinking .orb-label{color:var(--accent-soft)}.orb.thinking .ring{border-color:rgba(242,183,141,.35);animation:think 1.4s ease-in-out infinite}@keyframes think{0%,to{transform:scale(1);opacity:.25}50%{transform:scale(1.06);opacity:.8}}.orb.speaking{background:var(--accent);border-color:var(--accent)}.orb.speaking .orb-label{color:#fff}.ghost.end{border-color:var(--navy-line)}.turn.partial .bubble{opacity:.55;font-style:italic}.tray{display:flex;gap:8px;padding:8px 20px 0;flex-wrap:wrap}.thumb{position:relative;width:56px;height:56px;border-radius:10px;overflow:hidden;border:1px solid var(--navy-line)}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.thumb button{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;border:none;background:rgba(0,0,0,.65);color:#fff;font-size:13px;line-height:1;padding:0}.voicerow{display:flex;gap:10px;align-items:center}.ghost.go{color:var(--accent);border-color:var(--accent)}a.action{display:inline-block;margin:8px 0;padding:10px 16px;border-radius:var(--radius);background:var(--accent);color:#fff;text-decoration:none;font-weight:500}a.link{color:var(--accent-soft)}