:root{--font:-apple-system,system-ui,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,monospace;--canvas:#fcfcfc;--surface:#fff;--surface-weak:#f4f4f4;--stroke:#e0e0e0;--text:#1e1e1e;--text-weak:#707070;--brand:#3858e9;--brand-active:#2e49d9;--brand-weak:#eef1fd;--danger:#b32d2e;--ok:#008a20;--radius:10px;--radius-control:6px}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--canvas);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}button,select,textarea,.button{font:inherit;color:inherit}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}#app{display:grid;grid-template-columns:minmax(340px,420px) 1fr;height:100vh;height:100dvh}section{display:flex;flex-direction:column;min-width:0;min-height:0}.chat{border-right:1px solid var(--stroke);background:var(--surface)}.bar{display:flex;align-items:center;gap:8px;min-height:48px;padding:8px 12px;border-bottom:1px solid var(--stroke)}.bar.sub[hidden]{display:none}.bar.sub{min-height:40px;padding:4px 12px;background:var(--canvas)}.bar .tools{display:flex;gap:4px;margin-left:auto}.switcher{flex:1;min-width:0}select{width:100%;max-width:100%;height:32px;padding:0 8px;border:1px solid transparent;border-radius:var(--radius-control);background:transparent;font-weight:600;cursor:pointer;text-overflow:ellipsis}select:hover,select:focus{border-color:var(--stroke)}#session-select{flex:1;font-weight:400;color:var(--text-weak)}button,.button{display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 12px;border:1px solid var(--stroke);border-radius:var(--radius-control);background:var(--surface);cursor:pointer;text-decoration:none;white-space:nowrap}button:hover,.button:hover{background:var(--surface-weak)}.ghost{border-color:transparent;background:transparent;color:var(--text-weak)}.ghost:hover{color:var(--text)}.ghost[aria-pressed=true]{background:var(--brand-weak);color:var(--brand)}.primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:500}.primary:hover{background:var(--brand-active)}.primary.stop{background:var(--text);border-color:var(--text)}:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.tabs{display:none}#scroller{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:16px 16px 8px}#messages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.msg{max-width:100%;overflow-wrap:anywhere}.msg.user{align-self:flex-end;max-width:85%;padding:8px 12px;border-radius:var(--radius) var(--radius) 2px var(--radius);background:var(--brand);color:#fff;white-space:pre-wrap}.msg.assistant{display:flex;flex-direction:column;gap:6px}.msg.note{color:var(--text-weak);font-size:13px}.msg.error{color:var(--danger);font-size:13px}.md p{margin:0 0 8px}.md p:last-child{margin-bottom:0}.md ul,.md ol{margin:0 0 8px;padding-left:20px}.md code{font:12px/1.4 var(--mono);background:var(--surface-weak);padding:1px 4px;border-radius:4px}.md pre{margin:0 0 8px;padding:8px;overflow-x:auto;background:var(--surface-weak);border-radius:var(--radius-control)}.md pre code{padding:0;background:none}.md a{color:var(--brand)}.tool{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-weak)}.tool:before{content:"";flex:none;width:14px;height:14px;border-radius:50%}.tool.running:before{border:2px solid var(--stroke);border-top-color:var(--brand);animation:spin .8s linear infinite}.tool.ok:before{background:var(--ok);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M6.3 11.2 3 7.9l1.1-1.1 2.2 2.2 5.6-5.6L13 4.5z'/%3E%3C/svg%3E") center/14px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M6.3 11.2 3 7.9l1.1-1.1 2.2 2.2 5.6-5.6L13 4.5z'/%3E%3C/svg%3E") center/14px no-repeat}.tool.failed{color:var(--danger)}.tool.failed:before{content:"!";display:grid;place-items:center;font-weight:700;font-size:11px;color:#fff;background:var(--danger)}.msg.assistant.working:after,.msg.note.working:before{content:"";display:block;width:28px;height:8px;background:radial-gradient(circle,var(--text-weak) 2px,transparent 2.5px) 0 50%/9px 8px repeat-x;animation:pulse 1s ease-in-out infinite}.msg.note.working:before{display:inline-block;margin-right:8px;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.3}}.empty{display:flex;flex-direction:column;justify-content:center;min-height:50%;padding:24px 8px;color:var(--text-weak)}.empty h1{margin:0 0 8px;color:var(--text);font-size:22px;line-height:1.25;font-weight:600;text-wrap:balance}.empty p{margin:0}.empty[hidden]{display:none}#composer{display:flex;align-items:flex-end;gap:8px;padding:12px;padding-bottom:max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--stroke)}#prompt{flex:1;min-height:40px;max-height:200px;padding:9px 12px;border:1px solid var(--stroke);border-radius:var(--radius);background:var(--surface);resize:none;line-height:1.4}#prompt:focus{border-color:var(--brand);outline:none}#composer button{height:40px}.preview{background:var(--canvas)}.frame-wrap{position:relative;flex:1;display:flex;justify-content:center;min-height:0;padding:0}iframe{flex:1;width:100%;border:0;background:#fff}iframe[hidden]{display:none}#frame-empty{position:absolute;inset:0;align-items:center}.phone-width .frame-wrap{padding:16px;background:var(--surface-weak)}.phone-width iframe{flex:none;width:390px;max-width:100%;border:1px solid var(--stroke);border-radius:16px}.dot{display:inline-block;width:6px;height:6px;margin-left:4px;border-radius:50%;background:var(--brand);vertical-align:top}.dot[hidden]{display:none}@media(max-width:800px){#app{grid-template-columns:1fr;grid-template-rows:auto auto 1fr auto}.chat{display:contents}.chat>.bar:first-child{grid-row:1;background:var(--surface)}.sessions{grid-row:2}#scroller{grid-row:3;background:var(--surface)}#composer{grid-row:4;background:var(--surface)}.preview{grid-row:2/5}#app[data-view=chat] .preview,#app[data-view=preview] .sessions,#app[data-view=preview] #scroller,#app[data-view=preview] #composer{display:none}.preview>.bar{min-height:40px;padding:4px 12px}.tabs{display:flex;gap:2px;margin-left:auto;padding:2px;border-radius:var(--radius-control);background:var(--surface-weak)}.tabs button{height:28px;padding:0 10px;border:0;background:transparent;color:var(--text-weak)}.tabs button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #00000014}#new-site{padding:0 8px}#width{display:none}select,#prompt{font-size:16px}}
