:root{--ground: #e6ebeb;--panel: #f1f4f4;--panel-2: #e2e9e9;--ink: #101819;--ink-2: #33454a;--muted: #5f7278;--hair: #c2cdce;--accent: #14707e;--accent-soft: #dcebed;--danger: #b4472f;--think: #5b5590;--think-soft: #e6e3f2;--serif: "Iowan Old Style", Charter, Palatino, Georgia, serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}@media(prefers-color-scheme:dark){:root{--ground: #0e1518;--panel: #162126;--panel-2: #1b282e;--ink: #dfe8e9;--ink-2: #b4c4c7;--muted: #8298a0;--hair: #2b3b41;--accent: #4fc3d2;--accent-soft: #14282e;--danger: #e08163;--think: #9c93d8;--think-soft: #1c1a2a}}*{box-sizing:border-box}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--serif);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}.auth-loading,.auth-page{min-height:100dvh;display:grid;place-items:center;padding:1.25rem}.auth-loading{font-family:var(--mono);font-size:.75rem;letter-spacing:.08em;color:var(--muted)}.auth-card{width:min(100%,28rem);background:var(--panel);border:1px solid var(--hair);border-radius:10px;padding:clamp(1.4rem,4vw,2.4rem);box-shadow:0 1.2rem 4rem color-mix(in srgb,var(--ink) 10%,transparent)}.auth-mark{font-family:var(--mono);font-size:.6875rem;font-weight:650;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}.auth-card h1{font-size:clamp(1.8rem,6vw,2.45rem);font-weight:500;line-height:1.1;margin:.6rem 0 .7rem}.auth-card>p{color:var(--muted);margin:0 0 1.25rem}.auth-form{display:flex;flex-direction:column;align-items:stretch;gap:.85rem;padding:0;border:0}.auth-form label{display:grid;gap:.35rem;font-family:var(--mono);font-size:.6875rem;letter-spacing:.05em;color:var(--ink-2)}.auth-form input{width:100%;min-height:2.8rem;padding:.65rem .75rem;border:1px solid var(--hair);border-radius:5px;background:var(--ground);color:var(--ink);font:1rem/1.3 var(--serif)}.auth-form input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}.auth-form button{width:100%;height:2.8rem;margin-top:.25rem}.auth-error{padding:.65rem .75rem;border-left:2px solid var(--danger);background:color-mix(in srgb,var(--danger) 8%,transparent);color:var(--danger);font-family:var(--mono);font-size:.6875rem}.auth-card .auth-foot{margin:1.15rem 0 0;font-family:var(--mono);font-size:.625rem;line-height:1.5}.shell{height:100dvh;display:grid;grid-template-columns:1fr}.shell.split{grid-template-columns:minmax(20rem,30rem) 1fr}@media(max-width:62rem){.shell.split{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto}.shell.split .conversation,.shell.split .canvas{grid-row:1;grid-column:1;min-height:0}.shell.split[data-pane=chat] .canvas,.shell.split[data-pane=canvas] .conversation{display:none}.shell.split .panes{grid-row:2;grid-column:1}}.conversation{min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;padding:0 1.25rem;max-width:46rem;width:100%;margin:0 auto}.shell.split .conversation{border-right:1px solid var(--hair);margin:0}@media(max-width:62rem){.shell.split .conversation{border-right:none}}header{display:flex;align-items:center;gap:.6rem;padding:.9rem 0;border-bottom:1px solid var(--hair)}.access-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:1rem;background:color-mix(in srgb,var(--ground) 82%,transparent);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.access-card{width:min(100%,38rem);max-height:calc(100dvh - 2rem);overflow:auto;background:var(--panel);border:1px solid var(--hair);border-radius:8px;padding:1.25rem;box-shadow:0 1.5rem 5rem color-mix(in srgb,var(--ink) 18%,transparent)}.access-head{display:flex;align-items:flex-start;gap:1rem;justify-content:space-between}.access-head h2{font-size:1.25rem;font-weight:500;margin:.3rem 0 0;overflow-wrap:anywhere}.access-card>p{color:var(--muted)}.token-state,.access-message,.access-endpoint{font-family:var(--mono);font-size:.6875rem}.token-box{display:flex;align-items:center;gap:.6rem;padding:.7rem;border:1px solid var(--accent);border-radius:5px;background:var(--accent-soft)}.token-box code{min-width:0;flex:1;font:.6875rem/1.5 var(--mono);overflow-wrap:anywhere}.access-actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:1rem}.access-actions button{min-height:2.35rem;padding:0 .8rem;border:1px solid var(--accent);border-radius:4px;background:var(--accent);color:var(--ground);font:600 .6875rem var(--mono);cursor:pointer}.access-actions .danger-button{border-color:var(--danger);background:transparent;color:var(--danger)}.access-endpoint code{color:var(--accent)}.mark{font-family:var(--mono);font-size:.8125rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-weight:600}.status{font-family:var(--mono);font-size:.6875rem;letter-spacing:.1em;color:var(--muted);margin-right:auto;display:inline-flex;align-items:center;gap:.45rem}.status:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--muted)}.status[data-state=present]:before{background:var(--accent)}.status[data-state=thinking]:before{background:var(--think);animation:pulse 1.1s ease-in-out infinite}.status[data-state=recovering]:before{background:var(--danger);animation:pulse 1.1s ease-in-out infinite}.status[data-state=disconnected]:before{background:var(--danger)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.25}}@media(prefers-reduced-motion:reduce){.status:before{animation:none!important}}.ghost{font-family:var(--mono);font-size:.6563rem;letter-spacing:.06em;background:none;border:1px solid var(--hair);color:var(--muted);padding:.3rem .55rem;border-radius:3px;cursor:pointer;white-space:nowrap}.ghost:hover{color:var(--ink);border-color:var(--muted)}.ghost[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}main{overflow-y:auto;padding:1.5rem 0;display:flex;flex-direction:column;gap:1.4rem}.empty{color:var(--muted);font-size:.9375rem;margin:auto 0;text-align:center;max-width:30ch;margin-inline:auto}.empty code{font-family:var(--mono);font-size:.85em;color:var(--accent)}.turn,.error{display:grid;grid-template-columns:3.25rem 1fr;gap:.9rem;align-items:start}.who{font-family:var(--mono);font-size:.6563rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:.5em}.turn.assistant .who{color:var(--accent)}.error .who{color:var(--danger)}.body{min-width:0}.body p{margin:0 0 .65rem;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink-2)}.turn.user .body p{color:var(--ink)}.body p:last-child{margin-bottom:0}.error .body p{color:var(--danger);font-family:var(--mono);font-size:.8125rem}.thinking{border-left:2px solid var(--think);background:var(--think-soft);border-radius:0 3px 3px 0;padding:.6rem .8rem;margin:0 0 .7rem}.thinking-label{display:block;font-family:var(--mono);font-size:.625rem;letter-spacing:.14em;text-transform:uppercase;color:var(--think);margin-bottom:.35rem}.thinking.live .thinking-label:after{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--think);margin-left:.4rem;vertical-align:middle;animation:pulse 1.1s ease-in-out infinite}.thinking-text{font-size:.875rem;line-height:1.5;color:var(--ink-2);white-space:pre-wrap;overflow-wrap:anywhere;max-height:15rem;overflow-y:auto;opacity:.9}.tool{background:var(--panel);border:1px solid var(--hair);border-radius:4px;margin:0 0 .7rem;overflow:hidden}.tool.running{border-color:var(--accent)}.tool.failed{border-color:var(--danger)}.tool-head{display:flex;align-items:center;gap:.55rem;padding:.4rem .6rem}.tool-toggle{display:inline-flex;align-items:center;gap:.4rem;background:none;border:none;padding:0;cursor:pointer;color:var(--accent);font-family:var(--mono);font-size:.7rem}.tool-caret{color:var(--muted);font-size:.65rem}.tool-name{font-family:var(--mono)}.tool-state{font-family:var(--mono);font-size:.625rem;letter-spacing:.08em;color:var(--muted);margin-right:auto}.tool.running .tool-state{color:var(--accent);animation:pulse 1.4s ease-in-out infinite}.tool.failed .tool-state{color:var(--danger)}.tool-open{font-family:var(--mono);font-size:.6563rem;background:var(--accent);color:var(--ground);border:none;border-radius:3px;padding:.28rem .6rem;cursor:pointer;font-weight:600;max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-detail{font-family:var(--mono);font-size:.6875rem;line-height:1.55;color:var(--ink-2);background:var(--panel-2);border-top:1px solid var(--hair);margin:0;padding:.6rem;max-height:18rem;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}.tool-live{font-family:var(--mono);font-size:.65rem;color:var(--muted);border-top:1px solid var(--hair);padding:.35rem .6rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;direction:rtl;text-align:left}form{display:flex;gap:.55rem;align-items:flex-end;padding:.85rem 0 1.2rem;border-top:1px solid var(--hair)}textarea{flex:1;min-width:0;font-family:var(--serif);font-size:1rem;line-height:1.45;padding:.6rem .8rem;background:var(--panel);border:1px solid var(--hair);border-radius:5px;color:var(--ink);resize:none;max-height:9rem;min-height:2.6rem;field-sizing:content}textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}form button{font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;height:2.6rem;padding:0 1rem;border:none;border-radius:5px;cursor:pointer;font-weight:600;background:var(--accent);color:var(--ground);flex:none}form button:disabled{opacity:.35;cursor:default}form button.stop{background:var(--danger)}.canvas{min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);background:var(--panel)}.canvas-bar{display:flex;align-items:center;gap:.5rem;padding:0 .75rem;height:3rem;border-bottom:1px solid var(--hair);background:var(--panel-2)}.canvas-title{font-family:var(--mono);font-size:.6875rem;letter-spacing:.09em;text-transform:uppercase;color:var(--accent);margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.canvas-pick{font-family:var(--mono);font-size:.6563rem;background:var(--panel);color:var(--ink-2);border:1px solid var(--hair);border-radius:4px;padding:.3rem .4rem;max-width:11rem;cursor:pointer}.cbtn{font-family:var(--mono);font-size:.6563rem;letter-spacing:.06em;color:var(--ink-2);text-decoration:none;background:var(--panel);border:1px solid var(--hair);border-radius:4px;padding:.4rem .7rem;cursor:pointer;line-height:1;display:inline-flex;align-items:center;white-space:nowrap}.cbtn:hover{color:var(--ink);border-color:var(--accent)}.cbtn.close:hover{color:var(--danger);border-color:var(--danger)}.canvas iframe{width:100%;height:100%;border:0;background:#fff;display:block}.shell.dropping:after{content:"drop files for Soari";position:fixed;inset:0;z-index:20;display:grid;place-items:center;font-family:var(--mono);font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);background:color-mix(in srgb,var(--ground) 82%,transparent);border:2px dashed var(--accent);pointer-events:none}.attachments{display:flex;flex-wrap:wrap;gap:.4rem;padding:.6rem 0 0}.chip{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--mono);font-size:.6563rem;background:var(--panel);border:1px solid var(--hair);border-radius:999px;padding:.25rem .3rem .25rem .55rem;color:var(--ink-2);max-width:16rem}.chip-kind{color:var(--accent);text-transform:uppercase;letter-spacing:.08em;font-size:.5938rem}.chip button{background:none;border:none;color:var(--muted);cursor:pointer;font-size:.85rem;line-height:1;padding:0 .2rem}.chip button:hover{color:var(--danger)}.panes{display:none;gap:.5rem;padding:.5rem .85rem;padding-bottom:max(.5rem,env(safe-area-inset-bottom));background:var(--ground);border-top:1px solid var(--hair)}.panes button{flex:1;font-family:var(--mono);font-size:.6875rem;letter-spacing:.12em;text-transform:uppercase;min-height:44px;border-radius:8px;border:1px solid var(--hair);background:var(--panel);color:var(--muted);cursor:pointer;transition:background .12s ease,color .12s ease}.panes button[data-on=true]{color:var(--ground);background:var(--accent);border-color:var(--accent);font-weight:600}@media(prefers-reduced-motion:reduce){.panes button{transition:none}}.only-mobile{display:none}@media(max-width:62rem){.panes{display:flex}.only-mobile{display:inline-flex}}@media(max-width:40rem){body{font-size:15px}.conversation{padding:0 .85rem}.turn,.error{grid-template-columns:1fr;gap:.3rem}.who{padding-top:0}header{gap:.4rem;padding:.7rem 0;padding-top:max(.7rem,env(safe-area-inset-top))}.mark{font-size:.75rem;letter-spacing:.14em}.status{font-size:.625rem}.ghost{padding:.3rem .45rem;font-size:.5938rem}main{padding:1rem 0;gap:1rem;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}form{padding:.6rem 0;padding-bottom:max(.6rem,env(safe-area-inset-bottom));gap:.4rem}textarea{font-size:16px;padding:.55rem .7rem;max-height:6.5rem}form button{height:2.5rem;padding:0 .75rem;font-size:.65rem}.canvas-bar{height:auto;flex-wrap:nowrap;gap:.3rem;padding:.4rem .5rem;padding-top:max(.4rem,env(safe-area-inset-top))}.canvas-title{font-size:.5938rem;flex:1 1 auto;min-width:0}.canvas-pick{flex:0 1 7rem;max-width:7rem;min-width:0;font-size:.5938rem;padding:.3rem .25rem}.cbtn{padding:.4rem .45rem;font-size:.5938rem;min-height:32px}.canvas{grid-template-rows:auto minmax(0,1fr)}.canvas iframe{height:100%;min-height:0}.thinking-text{max-height:11rem;font-size:.8125rem}.tool-detail{max-height:12rem}.tool-open{max-width:9rem}.attachments{padding-top:.45rem}.chip{max-width:100%}}
