.icon-btn{background:none;border:1px solid var(--line);color:var(--blue);width:40px;height:40px;border-radius:50%;display:grid;place-items:center;cursor:pointer;transition:box-shadow .2s,color .2s}
.icon-btn:hover{box-shadow:var(--glow-b);color:var(--text)}
button:focus-visible,input:focus-visible{outline:2px solid var(--blue);outline-offset:2px}

/* Transcript */
.transcript{display:flex;flex-direction:column;overflow:hidden;height:170px;flex:none}
.panel-title{font-family:var(--font-tech);font-size:.7rem;letter-spacing:.25em;color:var(--blue);padding:8px 14px;border-bottom:1px solid var(--line)}
.log{flex:1;overflow-y:auto;padding:10px 14px;font-size:.95rem;line-height:1.6;scrollbar-width:thin;scrollbar-color:var(--green) transparent}
.line.user{color:var(--green);text-align:right}
.line.user::before{content:"USER> ";font-family:var(--font-tech);font-size:.7rem}
.line.agent{color:var(--blue)}
.line.agent::before{content:"MANAGER> ";font-family:var(--font-tech);font-size:.7rem}
.line.sys{color:#7f9aa0}
.line.err{color:var(--red)}

/* Nodes */
.nodes{position:absolute;left:0;top:0;bottom:0;width:38%;display:flex;flex-direction:column;justify-content:space-between;padding:4px 0}
.node{--c:var(--blue);display:flex;align-items:center;gap:8px;height:40px;padding:0 10px 0 6px;border:1.5px solid var(--c);border-radius:999px;background:var(--glass);color:var(--text);font-family:var(--font-tech);font-size:.6rem;letter-spacing:.08em;cursor:pointer;box-shadow:0 0 12px color-mix(in srgb,var(--c) 45%,transparent);transition:background .2s}
.node[data-agent="memory"]{--c:#00d2ff}
.node[data-agent="chat"]{--c:#00ff88}
.node[data-agent="coder"]{--c:#ff8a3d}
.node[data-agent="writer"]{--c:#e0e0e0}
.node .dot{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--c);display:grid;place-items:center;flex:none}
.node .dot::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--c)}
.node:hover,.node.active,.node.pulse{background:color-mix(in srgb,var(--c) 22%,var(--glass))}
.links{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.links path{fill:none;stroke-width:1.6;vector-effect:non-scaling-stroke;stroke-dasharray:4 3;opacity:.85}
.status{position:absolute;left:68%;bottom:0;transform:translateX(-50%);font-family:var(--font-tech);font-size:.6rem;letter-spacing:.2em;color:var(--green);text-shadow:var(--glow-g)}

/* Controls */
.controls{display:flex;justify-content:center;align-items:center;gap:12px}
.stop{font-family:var(--font-tech);font-size:.75rem;letter-spacing:.15em;color:var(--red);background:rgba(255,0,85,.08);border:1.5px solid var(--red);border-radius:999px;padding:11px 30px;cursor:pointer;box-shadow:0 0 14px rgba(255,0,85,.4)}
.stop:hover{background:rgba(255,0,85,.2)}

/* Tasks */
.tasks{padding:14px;flex:none}
.task-head{display:flex;justify-content:space-between;font-family:var(--font-tech);font-size:.7rem;letter-spacing:.15em;margin-bottom:10px}
.task-head span:last-child{color:var(--green)}
.task-progress{height:4px;background:rgba(0,210,255,.15);border-radius:4px;overflow:hidden;margin-bottom:10px}
#task-bar{height:100%;width:0;background:var(--blue);box-shadow:var(--glow-b);transition:width .3s}
#task-list{list-style:none;display:flex;flex-direction:column;gap:2px}
#task-list li{display:flex;align-items:center;gap:6px}
#task-list li.empty{color:#7f9aa0;font-size:.9rem;padding:6px 0}
.task-toggle{flex:1;text-align:left;background:none;border:0;color:var(--text);font:inherit;font-size:.95rem;padding:7px 0 7px 22px;position:relative;cursor:pointer}
.task-toggle::before{content:"";position:absolute;left:2px;top:50%;width:9px;height:9px;margin-top:-5px;border-radius:50%;border:1.5px solid var(--blue)}
li.done .task-toggle{color:#7f9aa0;text-decoration:line-through}
li.done .task-toggle::before{background:var(--green);border-color:var(--green)}
.task-del{background:none;border:0;color:#7f9aa0;font-size:1.2rem;cursor:pointer;padding:0 6px}
.task-del:hover{color:var(--red)}
.task-add{display:flex;gap:8px;margin-top:10px}
.task-add input{flex:1;min-width:0;background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--text);font:inherit}
.task-add input:focus{border-color:var(--green)}
.task-add button{width:42px;border-radius:10px;border:1px solid var(--green);background:rgba(0,255,136,.08);color:var(--green);font-size:1.3rem;cursor:pointer}

/* Input */
.inputbar{display:flex;align-items:center;gap:8px;padding:8px;position:sticky;bottom:8px;margin-bottom:8px;flex:none}
.inputbar input{flex:1;min-width:0;background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:10px;padding:12px 14px;color:var(--text);font:inherit;font-size:1rem}
.inputbar input::placeholder{color:#5f777d}
.inputbar input:focus{border-color:var(--green);box-shadow:var(--glow-g)}
.mic{width:48px;height:48px;border-radius:50%;border:1px solid var(--green);background:rgba(0,255,136,.08);color:var(--green);display:grid;place-items:center;cursor:pointer;box-shadow:var(--glow-g)}
.mic.listening{border-color:var(--red);color:var(--red);background:rgba(255,0,85,.1);box-shadow:0 0 18px rgba(255,0,85,.7);animation:mic-pulse 1s infinite}
.send{font-family:var(--font-tech);font-size:.7rem;letter-spacing:.12em;background:var(--green);color:var(--bg);border:0;border-radius:10px;padding:14px;cursor:pointer;font-weight:700}
.send:hover{box-shadow:var(--glow-g)}

/* Tools, menu, lock */
.tools{position:relative;display:flex;gap:8px}
.icon-btn[aria-pressed="true"]{color:var(--green);border-color:var(--green);box-shadow:var(--glow-g)}
.menu{position:absolute;right:0;top:48px;z-index:5;display:flex;flex-direction:column;padding:6px;min-width:190px}
.menu button{background:none;border:0;color:var(--text);font:inherit;padding:10px;text-align:left;cursor:pointer;border-radius:8px}
.menu button:hover{color:var(--green)}
.node.pulse{border-color:var(--green);color:var(--green);box-shadow:var(--glow-g)}
.lock{position:fixed;inset:0;z-index:9;display:grid;place-items:center;background:var(--bg);padding:16px}
.lock-box{width:min(340px,100%);display:flex;flex-direction:column;gap:14px;padding:24px;text-align:center}
.lock-box input{background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:10px;padding:12px;color:var(--text);font-family:var(--font-tech);font-size:1.3rem;letter-spacing:.4em;text-align:center}
.lock-box input:focus{border-color:var(--green);box-shadow:var(--glow-g)}
.err-text{color:var(--red);min-height:1.4em;font-size:.9rem}
.link-btn{background:none;border:0;color:#7f9aa0;font:inherit;font-size:.85rem;cursor:pointer;text-decoration:underline}

/* Agent room */
.room{padding:12px 14px;flex:none}
.room-head{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:.85rem;margin-bottom:12px}
.mgr{display:flex;align-items:center;gap:8px;font-family:var(--font-tech);font-size:.65rem;letter-spacing:.15em;color:var(--blue)}
.mgr-dot{width:10px;height:10px;border-radius:50%;background:var(--blue);box-shadow:var(--glow-b)}
.mgr.busy .mgr-dot{animation:ping 1s infinite}
#mgr-status{color:#9fb4b9;text-align:right}
.room-agents{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.agent{--c:#00d2ff;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 2px;border:1px solid transparent;border-radius:10px;opacity:.65;transition:opacity .3s,background .3s,box-shadow .3s,border-color .3s}
.agent[data-agent="chat"]{--c:#00ff88}
.agent[data-agent="coder"]{--c:#ff8a3d}
.agent[data-agent="writer"]{--c:#e0e0e0}
.agent b{font-family:var(--font-tech);font-size:.55rem;letter-spacing:.08em;font-weight:500}
.agent small{font-size:.72rem;color:#8aa1a6;min-height:1.2em;text-align:center}
.bot{position:relative;width:34px;height:42px;display:flex;flex-direction:column;align-items:center}
.bot .head{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--c);background:var(--bg);z-index:1}
.bot .body{width:28px;height:15px;margin-top:-3px;border:1.5px solid var(--c);border-bottom:0;border-radius:12px 12px 0 0}
.bot::after{content:"";position:absolute;bottom:0;left:-4px;right:-4px;height:7px;border:1.5px solid var(--c);border-radius:3px;background:var(--bg)}
.agent[data-state="idle"] .head{animation:nod 3.5s ease-in-out infinite}
.agent[data-state="queued"]{opacity:.95;border-color:color-mix(in srgb,var(--c) 50%,transparent)}
.agent[data-state="queued"] small{color:var(--c)}
.agent[data-state="working"]{opacity:1;border-color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent);box-shadow:0 0 14px color-mix(in srgb,var(--c) 40%,transparent)}
.agent[data-state="working"] .bot{animation:typing .5s ease-in-out infinite}
.agent[data-state="working"] small{color:var(--c)}
.agent[data-state="working"] small::after{content:"…"}
.agent[data-state="done"]{opacity:1}
.agent[data-state="done"] small{color:var(--green)}

/* Rich replies */
.line{white-space:pre-wrap;overflow-wrap:anywhere}
.log pre{position:relative;white-space:pre;overflow-x:auto;background:rgba(0,0,0,.55);border:1px solid var(--line);border-radius:8px;padding:28px 10px 10px;margin:6px 0;font-family:ui-monospace,Menlo,monospace;font-size:.8rem;line-height:1.5;color:var(--text)}
.log code.ic{background:rgba(0,210,255,.12);border-radius:4px;padding:1px 5px;font-family:ui-monospace,Menlo,monospace;font-size:.85em}
.copy{position:absolute;top:5px;right:6px;font-family:var(--font-tech);font-size:.55rem;letter-spacing:.12em;background:none;border:1px solid var(--blue);color:var(--blue);border-radius:6px;padding:3px 8px;cursor:pointer}
.transcript.big{height:62vh}
.transcript .panel-title{cursor:pointer}
.transcript .panel-title::after{content:"  ⤢";color:#7f9aa0}
.agent[data-state="review"]{opacity:1;border-color:var(--c);border-style:dashed;background:color-mix(in srgb,var(--c) 8%,transparent)}
.agent[data-state="review"] .bot{animation:typing .9s ease-in-out infinite}
.agent[data-state="review"] small{color:var(--c)}
.agent[data-state="review"] small::after{content:"…"}

/* Phone actions */
.actions{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.act{font-family:var(--font-tech);font-size:.62rem;letter-spacing:.1em;color:var(--green);border:1px solid var(--green);background:rgba(0,255,136,.08);border-radius:999px;padding:8px 12px;cursor:pointer;box-shadow:var(--glow-g);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.act:active{background:rgba(0,255,136,.25)}

/* Camera */
.cam{position:fixed;inset:0;z-index:8;background:#000}
.cam video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cam-bar{position:absolute;left:0;right:0;bottom:0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));background:linear-gradient(transparent,rgba(5,8,10,.92) 40%)}
.cam-ctl{display:flex;justify-content:space-around;align-items:center}
.cam .icon-btn{background:rgba(5,8,10,.55);width:46px;height:46px}
.shot{width:70px;height:70px;border-radius:50%;border:3px solid var(--green);background:rgba(0,255,136,.2);box-shadow:var(--glow-g);cursor:pointer}
.shot:active{background:rgba(0,255,136,.5)}
.cam-ask{display:flex;flex-direction:column;gap:10px}
.cam-ask input{background:rgba(0,0,0,.6);border:1px solid var(--green);border-radius:10px;padding:12px;color:var(--text);font:inherit;font-size:1rem}
.cam-row{display:flex;justify-content:space-between;align-items:center}

/* Live camera */
.live-btn{font-family:var(--font-tech);font-size:.65rem;letter-spacing:.15em;color:var(--green);background:rgba(5,8,10,.55);border:1.5px solid var(--green);border-radius:999px;padding:12px 14px;cursor:pointer}
.live-btn.on{color:var(--red);border-color:var(--red);background:rgba(255,0,85,.12);box-shadow:0 0 14px rgba(255,0,85,.6);animation:mic-pulse 1.2s infinite}
.cam-caption{background:rgba(5,8,10,.72);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:1rem;line-height:1.5;max-height:34vh;overflow-y:auto}
.cam-ctl{gap:6px}
