:root{--bg:#000;--surface:#121212;--surface-2:#1c1c1e;--surface-3:#2c2c2e;--text:#fff;--muted:#9a9a9f;--accent:#0a84ff;--accent-text:#fff;--red:#ff3b30;--border:#2c2c2e;--user-bubble:#2a2a2c;--warn:var(--red);--err:#ff453a;--code-bg:#161618;--add:#0a84ff33;--del:#ff3b3033;--radius:16px;--app-h:100dvh;--dw:min(84vw, 360px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--text);overscroll-behavior:none;-webkit-font-smoothing:antialiased;margin:0;font:16px/1.5 -apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,sans-serif}#app{height:var(--app-h);overflow:hidden}.app,.screen{flex-direction:column;height:100%;display:flex}.splash{background:var(--bg);height:100%}::selection{background:#0a84ff73}.app{position:relative;overflow:hidden}.stage{z-index:2;background:var(--bg);flex-direction:column;transition:transform .3s cubic-bezier(.2,.8,.2,1),border-radius .3s;display:flex;position:absolute;inset:0}.drawer-on .stage{transform:translateX(var(--dw));box-shadow:-1px 0 0 var(--border);border-radius:28px 0 0 28px;overflow:hidden}.stage-shade{top:0;bottom:0;left:var(--dw);z-index:3;background:#00000059;border:none;border-radius:0;min-height:0;padding:0;position:absolute;right:0}.drawer{width:var(--dw);z-index:1;background:var(--bg);opacity:0;flex-direction:column;transition:opacity .3s,transform .3s cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;top:0;bottom:0;left:0;transform:translate(-24px)}.drawer.open{opacity:1;transform:none}.top{background:var(--bg);padding:calc(env(safe-area-inset-top) + 8px) max(16px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left));align-items:center;gap:10px;display:flex}.round{background:var(--surface);border:1px solid var(--border);width:44px;min-width:44px;height:44px;min-height:44px;color:var(--text);border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.round:active{background:var(--surface-3)}.round-spacer{flex:none;width:44px}.top-title{background:0 0;border:none;border-radius:12px;flex-direction:column;flex:1;justify-content:center;align-items:center;min-width:0;min-height:44px;padding:0 4px;line-height:1.2;display:flex}.top-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:17px;font-weight:600;overflow:hidden}.top-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:2px;max-width:100%;font-size:13px;display:inline-flex;overflow:hidden}.home-empty{flex:1}.bar{background:var(--bg);border-bottom:1px solid var(--border);padding:calc(env(safe-area-inset-top) + 6px) max(12px, env(safe-area-inset-right)) 6px max(12px, env(safe-area-inset-left));align-items:center;gap:8px;display:flex}.bar h1{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;margin:0;font-size:17px;font-weight:600;overflow:hidden}.scroll{-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.pad{padding:12px 16px calc(env(safe-area-inset-bottom) + 24px)}button{font:inherit;color:inherit;background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:12px;min-height:44px;padding:10px 14px}button:disabled{opacity:.45}button.primary{background:var(--accent);color:var(--accent-text);border-color:#0000;font-weight:600}button.danger{color:var(--err)}button.small{min-height:36px;padding:6px 12px;font-size:15px}button.wide{width:100%;margin-top:12px}button.icon{background:0 0;border:none;min-width:44px;padding:6px;font-size:22px;line-height:1}button.link{color:var(--accent);background:0 0;border:none;min-height:0;padding:8px 0}input,textarea,select{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:12px;width:100%;padding:10px 12px;font-size:16px}input:focus,select:focus{border-color:var(--accent);outline:none}textarea{resize:none}select.chip{background:var(--surface-2);border-radius:999px;width:auto;padding:6px 10px;font-size:14px}.field-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:16px 0 6px;font-size:13px;display:block}.muted{color:var(--muted)}.small{font-size:13px}.error{color:var(--err)}.empty{color:var(--muted);text-align:center;padding:48px 24px}.group{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:20px 0 6px;font-size:13px;font-weight:600}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px}.about{text-align:center;margin-top:24px}.badge{background:var(--red);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:22px;height:22px;padding:0 6px;font-size:13px;display:inline-flex}.d-head{padding:calc(env(safe-area-inset-top) + 8px) 12px 8px 20px;justify-content:space-between;align-items:center;gap:8px;display:flex}.d-head h1{letter-spacing:-.01em;margin:0;font-size:28px;font-weight:700}.d-search{background:var(--surface-2);color:var(--muted);border-radius:22px;flex:1;align-items:center;gap:8px;padding:0 4px 0 12px;display:flex}.d-search input{background:0 0;border:none;flex:1;min-width:0;padding:10px 0}.d-body{-webkit-overflow-scrolling:touch;padding:4px 8px calc(env(safe-area-inset-bottom) + 110px);flex:1;overflow-y:auto}.d-nav{text-align:left;background:0 0;border:none;border-radius:12px;align-items:center;gap:14px;width:100%;padding:12px;font-size:18px;display:flex}.d-nav span{flex:1}.d-nav:active,.d-row:active,.d-project:active{background:var(--surface-2)}.d-archive{color:var(--muted);margin-top:10px;font-size:16px}.d-group{margin:22px 12px 4px;font-size:17px;font-weight:700}.d-empty{margin:0;padding:4px 12px}.d-row{text-align:left;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:0 0;border:none;border-radius:12px;align-items:center;gap:10px;width:100%;padding:11px 12px;font-size:17px;display:flex}.d-row.active{background:var(--surface-2)}.d-row-title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.d-tag{color:var(--muted);background:var(--surface-2);border-radius:6px;flex:none;padding:1px 6px;font-size:12px}.d-row .badge{flex:none}.d-filter{margin:2px 0 6px;padding:8px 12px}.dot{border-radius:50%;flex:none;width:9px;height:9px}.dot.working{background:var(--accent);animation:1.2s ease-in-out infinite pulse}.dot.waiting{background:var(--red);box-shadow:0 0 0 3px #ff3b3040}.d-projects{flex-direction:column;gap:2px;padding:0 4px 6px 46px;display:flex}.d-project{text-align:left;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:10px;padding:9px 12px;font-size:16px;overflow:hidden}.d-project.active{color:var(--accent);font-weight:600}.d-projects .link{text-align:left;padding:9px 12px}.d-foot{padding:24px 16px calc(env(safe-area-inset-bottom) + 12px);background:linear-gradient(to bottom, transparent, var(--bg) 45%);justify-content:space-between;align-items:center;display:flex;position:absolute;bottom:0;left:0;right:0}.chat-pill{background:var(--accent);color:#fff;border:none;border-radius:999px;align-items:center;gap:10px;min-height:52px;padding:0 26px;font-size:18px;font-weight:600;display:inline-flex;box-shadow:0 6px 20px #0a84ff59}.d-foot .round{width:52px;height:52px}.sheet-backdrop{z-index:20;background:#0000008c;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface-2);width:100%;padding:12px 12px calc(env(safe-area-inset-bottom) + 12px);border-radius:20px 20px 0 0;flex-direction:column;gap:8px;max-height:85vh;display:flex;overflow-y:auto}.sheet button{background:var(--surface-3);border-color:#0000}.sheet button.primary{background:var(--accent)}.sheet select,.sheet input{background:var(--surface-3)}.sheet-title{text-align:center;color:var(--muted);padding:4px 0 8px;font-size:14px}.sheet-note{text-align:center;margin:-6px 0 0}.sheet-row{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;display:flex}.sheet .cancel{margin-top:6px;font-weight:600}.field-label+select{margin-bottom:4px}.project.selected,.q-opt.selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.new-project{gap:8px;margin-top:8px;display:flex}.messages{flex-direction:column;gap:12px;padding:12px 16px 16px;display:flex}.msg.user{flex-direction:column;align-self:flex-end;align-items:flex-end;gap:4px;max-width:85%;display:flex}.bubble{background:var(--user-bubble);white-space:pre-wrap;word-break:break-word;border-radius:22px;padding:10px 16px}.msg.user.sending .bubble{opacity:.6}.msg.assistant{word-break:break-word;max-width:100%;font-size:17px;line-height:1.55}.md p{margin:0 0 .7em}.md>:last-child{margin-bottom:0}.md ul,.md ol{margin:0 0 .7em;padding-left:1.3em}.md pre,.tool-in,.tool-out,.diff-body{background:var(--code-bg);border:1px solid var(--border);white-space:pre;border-radius:12px;margin:6px 0;padding:10px;font:13px/1.45 ui-monospace,SF Mono,Menlo,monospace;overflow-x:auto}.md code{background:var(--surface-2);border-radius:6px;padding:1px 5px;font:14px ui-monospace,SF Mono,Menlo,monospace}.md pre code{background:0 0;padding:0}.md a{color:var(--accent)}.md table{border-collapse:collapse;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--border);padding:4px 8px}.thinking summary{color:var(--muted);font-size:14px}.tool{border:1px solid var(--border);background:var(--surface);border-radius:14px;overflow:hidden}.tool.err{border-color:var(--err)}.tool-head{text-align:left;background:0 0;border:none;border-radius:0;align-items:center;gap:8px;width:100%;min-height:40px;padding:8px 12px;font-size:14px;display:flex}.tool-status{width:16px}.tool-name{font-weight:600}.chev{color:var(--muted)}.tool-sum{min-width:0;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;font:13px ui-monospace,SF Mono,Menlo,monospace;overflow:hidden}.tool-body{padding:0 12px 10px}.tool-out{max-height:40vh;overflow:auto}.tool-children{border-left:2px solid var(--border);flex-direction:column;gap:8px;margin:6px 0;padding-left:10px;display:flex}.todos{margin:4px 0;padding:0;font-size:14px;list-style:none}.todos .completed{color:var(--muted);text-decoration:line-through}.diff-file{color:var(--muted);word-break:break-all;margin-top:4px;font-size:12px}.diff-body .add{background:var(--add)}.diff-body .del{background:var(--del)}.diff-body .trunc{color:var(--muted);font-style:italic}.tool-badges{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}.thumb{border-radius:16px;max-width:200px;max-height:200px}.file-chip{background:var(--surface-2);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:14px;display:inline-flex}.file-chip button{background:0 0;border:none;min-height:0;padding:0 2px;font-size:16px}.notice{background:var(--surface-2);border-radius:12px;padding:8px 12px;font-size:14px}.notice.warn{color:var(--red)}.notice.error{color:var(--err)}.banner{padding:8px 16px;font-size:14px}.banner.error{background:var(--del);color:var(--err)}.banner.warn,.banner.info{background:var(--surface-2);color:var(--red)}.typing{gap:5px;padding:6px 0;display:flex}.typing span{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:1s infinite pulse}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}@keyframes pulse{0%,to{opacity:.3}50%{opacity:1}}.perm{border-radius:var(--radius);background:var(--surface);border:1px solid var(--red);max-height:55vh;margin:0 12px 8px;padding:12px;overflow-y:auto;box-shadow:0 -2px 16px #0009}.perm-title{margin-bottom:6px;font-size:15px}.perm-decision{margin:4px 0;font-size:14px}.perm-decision-msg{white-space:pre-wrap;word-break:break-word;margin:4px 0;font-size:14px}.perm-answers{margin:4px 0}.perm-answers dt{margin-top:6px}.perm-answers dd{white-space:pre-wrap;word-break:break-word;margin:0;font-size:14px}.perm-body{max-height:30vh;overflow:auto}.perm-body .tool-in{white-space:pre-wrap;word-break:break-all}.pending-more{text-align:center;margin:0 12px 8px}.perm-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.perm-actions button{flex:1;min-width:30%}.perm input,.perm textarea{margin-top:8px}.q+.q{margin-top:12px}.q-head{margin-bottom:6px;font-weight:600}.chip-label{background:var(--surface-2);border-radius:6px;margin-right:6px;padding:2px 6px;font-size:12px}.q-opts{flex-direction:column;gap:6px;display:flex}.q-opt{text-align:left;flex-direction:column;display:flex}.composer{padding:6px 12px calc(env(safe-area-inset-bottom) + 8px);background:var(--bg)}.composer-pill{background:var(--surface);border:1px solid #303032;border-radius:28px;align-items:flex-end;gap:2px;padding:5px;display:flex}.composer textarea{min-width:0;max-height:160px;caret-color:var(--accent);background:0 0;border:none;border-radius:0;flex:1;padding:9px 6px;font-size:17px;line-height:1.35}.composer textarea:focus{outline:none}.composer textarea::placeholder{color:#8e8e93}.c-btn{width:42px;min-width:42px;height:42px;min-height:42px;color:var(--text);background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.c-btn:active{background:var(--surface-3)}.c-btn.mic.rec{color:#fff;background:var(--red);animation:1.2s ease-in-out infinite rec}.c-btn.mic.stt{opacity:.5}@keyframes rec{0%,to{box-shadow:0 0 #ff3b308c}50%{box-shadow:0 0 0 6px #ff3b3000}}.c-round{background:var(--accent);color:#fff;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:42px;min-width:42px;height:42px;min-height:42px;padding:0;display:inline-flex}.c-round.send:disabled{background:var(--surface-3);color:var(--muted);opacity:1}.c-round.stop{background:var(--red)}.spin{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.att-row{flex-wrap:wrap;gap:10px;margin:2px 6px 10px;display:flex}.att{position:relative}.att-img img{object-fit:cover;border:1px solid var(--border);border-radius:14px;width:64px;height:64px;display:block}.att>button{background:var(--surface-3);border:2px solid var(--bg);color:#fff;border-radius:50%;width:24px;min-width:24px;height:24px;min-height:24px;padding:0;font-size:14px;line-height:1;position:absolute;top:-7px;right:-7px}.att.file-chip{padding-right:22px}.att-img .att-wait{background:#00000080;border-radius:14px;justify-content:center;align-items:center;font-weight:700;display:flex;position:absolute;inset:0}.readonly{padding:12px 16px calc(env(safe-area-inset-bottom) + 12px);color:var(--muted);text-align:center;border-top:1px solid var(--border);font-size:14px}.readonly p{margin:0 0 4px}.conn-bar{top:env(safe-area-inset-top);z-index:25;background:var(--red);color:#fff;text-align:center;padding:2px 8px;font-size:13px;position:fixed;left:0;right:0}.toast{left:16px;right:16px;bottom:calc(env(safe-area-inset-bottom) + 90px);z-index:30;background:var(--surface-3);color:var(--text);text-align:center;border-radius:14px;padding:12px 16px;position:fixed;box-shadow:0 8px 30px #0009}.update{top:calc(env(safe-area-inset-top) + 8px);z-index:30;position:fixed;left:50%;transform:translate(-50%)}.login{background:var(--bg);justify-content:center;align-items:center;height:100%;padding:24px;display:flex}.login-card{text-align:center;width:100%;max-width:360px}.login-logo{border-radius:20px;width:84px;height:84px}.login-card h1{margin:14px 0;font-size:28px}.login .code{text-align:center;letter-spacing:.15em;text-transform:uppercase;margin-top:12px;font-size:20px}.voice{padding:16px 16px calc(env(safe-area-inset-bottom) + 12px);border-top:1px solid var(--border);background:var(--bg);flex-direction:column;align-items:center;gap:8px;display:flex}.voice-orb{--lvl:0;background:radial-gradient(circle at 35% 30%, #5ab0ff, var(--accent) 60%, #0050c8);opacity:.95;width:96px;height:96px;transform:scale(calc(1 + var(--lvl) * .35));border-radius:50%;transition:transform 80ms linear}.voice.state-transcribing .voice-orb,.voice.state-waiting .voice-orb{animation:1.2s ease-in-out infinite voice-pulse}.voice.state-speaking .voice-orb{animation:1.6s ease-in-out infinite breathe}.voice.state-awaitingApproval .voice-orb,.voice.state-paused .voice-orb,.voice.state-error .voice-orb{background:var(--surface-3)}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}@keyframes voice-pulse{0%,to{opacity:.9}50%{opacity:.45}}.voice-caption{text-align:center;margin:0;font-weight:600}.voice.state-error .voice-caption{color:var(--err);font-weight:400}.voice-heard{text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;margin:0;overflow:hidden}.voice-actions{gap:8px;width:100%;display:flex}.voice-actions button{flex:1}@media (prefers-reduced-motion:reduce){.voice-orb{transition:none;animation:none!important}.stage,.drawer{transition:none}}.home-empty{position:relative;overflow:hidden}.hearts{pointer-events:none;transition:opacity .4s;position:absolute;inset:0}.hearts--leaving{opacity:0}.heart{fill:var(--red);opacity:.85;transform-origin:50%;animation:heartbeat var(--beat,2.4s) ease-in-out infinite;position:absolute}.heart-1{--beat:2.2s;width:34px;top:12%;left:14%}.heart-2{--beat:2.9s;width:22px;animation-delay:.4s;top:8%;left:72%}.heart-3{--beat:3.4s;width:56px;animation-delay:.9s;top:38%;left:42%}.heart-4{--beat:2.6s;width:18px;animation-delay:1.3s;top:76%;left:16%}.heart-5{--beat:3.1s;width:40px;animation-delay:.2s;top:60%;left:70%}@keyframes heartbeat{0%,48%,to{transform:scale(1)}12%{transform:scale(1.18)}24%{transform:scale(1)}36%{transform:scale(1.1)}}@media (prefers-reduced-motion:reduce){.heart{animation:none}}
