@font-face{font-family:'IBM Plex Sans Arabic';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/plex-arabic-400.woff2) format('woff2');unicode-range:U+0600-06FF, U+0750-077F, U+0870-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
@font-face{font-family:'IBM Plex Sans Arabic';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/plex-latin-400.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Sans Arabic';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/plex-arabic-500.woff2) format('woff2');unicode-range:U+0600-06FF, U+0750-077F, U+0870-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
@font-face{font-family:'IBM Plex Sans Arabic';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/plex-latin-500.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Sans Arabic';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/plex-arabic-600.woff2) format('woff2');unicode-range:U+0600-06FF, U+0750-077F, U+0870-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
@font-face{font-family:'IBM Plex Sans Arabic';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/plex-latin-600.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Sans Arabic';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/plex-arabic-700.woff2) format('woff2');unicode-range:U+0600-06FF, U+0750-077F, U+0870-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
@font-face{font-family:'IBM Plex Sans Arabic';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/plex-latin-700.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

:root{--bg:#f7f6fb;--panel:#ffffff;--side:#fbfaff;--line:#ebe8f3;--line2:#dcd7ea;--text:#1d1830;--muted:#6d6785;--faint:#655f7d;--brand:#6d28d9;--brand2:#7c3aed;--brand-soft:#f1ebfe;--brand-ink:#4c1d95;--ok:#0f9d6b;--warn:#c27c0e;--err:#d43c3c;--r:14px;--r-sm:10px;--sh1:0 1px 2px rgba(30,20,60,.06),0 1px 1px rgba(30,20,60,.04);--sh2:0 8px 24px -8px rgba(40,20,90,.18),0 2px 6px rgba(40,20,90,.06);--sh3:0 24px 60px -18px rgba(40,20,90,.35);--t:.18s cubic-bezier(.2,.7,.2,1);--font:"IBM Plex Sans Arabic","IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif}
*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased}
button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;padding:0}
a{color:var(--brand)}::selection{background:#ddd0fb}
.ic{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.app{display:grid;grid-template-columns:272px 1fr;height:100dvh;overflow:hidden;transition:grid-template-columns var(--t)}
.app.ws-open{grid-template-columns:272px minmax(360px,1fr) minmax(420px,1.25fr)}
.app.side-collapsed{grid-template-columns:0 1fr}.app.side-collapsed.ws-open{grid-template-columns:0 minmax(360px,1fr) minmax(420px,1.3fr)}
/* sidebar */
.side{background:var(--side);border-inline-end:1px solid var(--line);display:flex;flex-direction:column;min-width:0;overflow:hidden}
.side-top{display:flex;align-items:center;justify-content:space-between;padding:14px 14px 8px}
.logo{display:flex;align-items:center;gap:8px;font-weight:700;font-size:22px;letter-spacing:-.3px;color:var(--brand-ink);text-decoration:none}.logo b{color:var(--brand2)}
.logo .mark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#7c3aed,#c026d3);display:grid;place-items:center;color:#fff;font-size:15px;box-shadow:0 4px 12px -4px #7c3aed99}
.iconbtn{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:var(--muted);transition:background var(--t),color var(--t),transform var(--t)}
.iconbtn:hover{background:#efeaf9;color:var(--brand-ink)}.iconbtn:active{transform:scale(.94)}.iconbtn:focus-visible,.btn:focus-visible,.navitem:focus-visible{outline:2px solid var(--brand2);outline-offset:2px}
.newchat{margin:6px 14px 10px;display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:12px;background:var(--brand);color:#fff;font-weight:600;box-shadow:0 6px 16px -8px #6d28d9aa;transition:background var(--t),transform var(--t),box-shadow var(--t)}
.newchat:hover{background:var(--brand2);transform:translateY(-1px);box-shadow:0 10px 22px -10px #6d28d9cc}.newchat kbd{margin-inline-start:auto;font:500 11px var(--font);opacity:1;background:#ffffff26;border-radius:6px;padding:1px 6px}
.search{margin:0 14px 8px;position:relative}.search input{width:100%;border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 34px 8px 10px;outline:none;transition:border-color var(--t),box-shadow var(--t)}
[dir=ltr] .search input{padding:8px 10px 8px 34px}.search input:focus{border-color:#c4b5fd;box-shadow:0 0 0 3px #ede9fe}.search .ic{position:absolute;inset-inline-start:10px;top:50%;transform:translateY(-50%);color:var(--faint);width:16px;height:16px}
.side-scroll{flex:1;overflow:auto;padding:4px 8px 12px;scrollbar-width:thin}
.sec{font-size:12px;font-weight:600;color:var(--faint);padding:12px 8px 4px;display:flex;align-items:center;justify-content:space-between}
.sec .iconbtn{width:26px;height:26px;border-radius:8px}
.navitem{width:100%;display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:10px;color:#3a3452;text-align:start;transition:background var(--t),color var(--t);position:relative;min-height:38px}
.navitem:hover{background:#f0ecfa;color:var(--text)}.navitem.on{background:var(--brand-soft);color:var(--brand-ink);font-weight:600}
.navitem .t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px}
.navitem .more{opacity:0;transition:opacity var(--t)}.navitem:hover .more,.navitem.on .more{opacity:1}.navitem .more .iconbtn{width:28px;height:28px}
.dot{width:8px;height:8px;border-radius:3px;flex:none}
.actions{margin:0 10px 10px;background:#fff;border-radius:16px;box-shadow:0 -10px 30px -14px rgba(60,30,120,.28),0 2px 10px -4px rgba(60,30,120,.12);border:1px solid #efeaf8;padding:8px}
.actions h4{margin:2px 6px 6px;font-size:12px;color:var(--faint);font-weight:600}
.agrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.abtn{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:11px;background:#faf8ff;border:1px solid #f0ebfb;font-size:13px;font-weight:500;color:#3b3355;transition:background var(--t),border-color var(--t),transform var(--t),box-shadow var(--t)}
.abtn:hover{background:#fff;border-color:#d9ccfb;transform:translateY(-1px);box-shadow:var(--sh2);color:var(--brand-ink)}.abtn .ic{color:var(--brand2)}
.me{display:flex;align-items:center;gap:10px;padding:10px 6px 2px;border-top:1px solid #f1eef8;margin-top:8px}
.av{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#a78bfa,#7c3aed);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px;flex:none}
.me .nm{flex:1;min-width:0;font-size:13px;line-height:1.3}.me .nm b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me .nm span{color:var(--faint);font-size:12px}
/* main */
.main{display:flex;flex-direction:column;min-width:0;background:var(--bg);position:relative}
.top{height:56px;display:flex;align-items:center;gap:8px;padding:0 14px;border-bottom:1px solid transparent;flex:none}
.top .ttl{flex:1;font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:13px;font-weight:500;color:#3d3657;transition:border-color var(--t),background var(--t),box-shadow var(--t)}
.pill:hover{border-color:#cdbcf8;background:#fcfbff;box-shadow:var(--sh1)}
.only-m{display:none}
.msgs{flex:1;overflow:auto;padding:8px 0 24px;scroll-behavior:smooth}
.col{max-width:820px;margin:0 auto;padding:0 20px}
.empty{min-height:calc(100% - 20px);display:flex;flex-direction:column;justify-content:center;padding:24px 0}
.hello{font-size:30px;font-weight:700;letter-spacing:-.5px;margin:0 0 4px;background:linear-gradient(90deg,#4c1d95,#9333ea 60%,#c026d3);-webkit-background-clip:text;background-clip:text;color:transparent}
.hello-sub{color:var(--muted);margin:0 0 22px}
.sugs{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.sug{display:flex;gap:12px;align-items:flex-start;text-align:start;padding:14px;border-radius:14px;background:#fff;border:1px solid var(--line);box-shadow:var(--sh1);transition:transform var(--t),box-shadow var(--t),border-color var(--t)}
.sug:hover{transform:translateY(-2px);box-shadow:var(--sh2);border-color:#d8cbfb}.sug:active{transform:translateY(0)}
.sug .si{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none}
.sug b{display:block;font-weight:600;font-size:14px;margin-bottom:2px}.sug span{display:block;font-size:13px;color:var(--muted);line-height:1.5}
.msg{display:flex;gap:12px;margin:18px 0;animation:fade .22s ease both}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.msg.u{justify-content:flex-end}.msg.u .bubble{background:#ede7fd;color:#24183f;border-radius:18px 18px 6px 18px;padding:10px 15px;max-width:78%;white-space:pre-wrap;word-wrap:break-word}
[dir=rtl] .msg.u .bubble{border-radius:18px 18px 18px 6px}
.msg.a .body{flex:1;min-width:0}.msg.a .avk{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#7c3aed,#c026d3);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px;flex:none;margin-top:2px}
.md{word-wrap:break-word}.md p{margin:.45em 0}.md h1,.md h2,.md h3{line-height:1.35;margin:1em 0 .4em}.md h1{font-size:1.35em}.md h2{font-size:1.18em}.md h3{font-size:1.05em}
.md ul,.md ol{padding-inline-start:1.4em;margin:.4em 0}.md li{margin:.2em 0}.md code{background:#f1eef8;padding:.1em .35em;border-radius:6px;font-size:.9em}
.md pre{background:#17132a;color:#eee;padding:12px 14px;border-radius:12px;overflow:auto;direction:ltr;text-align:left}.md pre code{background:none;padding:0}
.md blockquote{margin:.6em 0;padding:.2em 1em;border-inline-start:3px solid #c4b5fd;color:#4a4463}
.tblwrap{margin:.7em 0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;box-shadow:var(--sh1)}
.tblscroll{overflow:auto}.md table{border-collapse:collapse;width:100%;font-size:14px}.md th,.md td{padding:8px 12px;border-bottom:1px solid #f0edf6;text-align:start;vertical-align:top;min-width:96px}.md th{background:#faf8ff;font-weight:600;white-space:nowrap}.md tr:last-child td{border-bottom:0}.md tbody tr{transition:background var(--t)}.md tbody tr:hover{background:#fbf9ff}
.tbar{display:flex;gap:6px;padding:7px 8px;border-top:1px solid #f0edf6;background:#fcfbff;flex-wrap:wrap}
.mini{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:8px;font-size:12.5px;font-weight:500;color:#4b4466;border:1px solid transparent;transition:background var(--t),border-color var(--t),color var(--t)}
.mini:hover{background:#fff;border-color:#e2dbf5;color:var(--brand-ink)}.mini .ic{width:15px;height:15px}
.mactions{display:flex;gap:2px;margin-top:6px;opacity:.0;transition:opacity var(--t)}.msg.a:hover .mactions,.msg.a.last .mactions{opacity:1}
.tools{display:flex;flex-direction:column;gap:6px;margin:2px 0 8px}
.tool{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;font-size:13px;color:#5b5476;background:#fff;border:1px solid var(--line);border-radius:999px;padding:4px 12px 4px 10px;max-width:100%}
.tool span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tool.done .sp{display:none}.tool .ok{display:none;color:var(--ok)}.tool.done .ok{display:block}
.sp{width:14px;height:14px;border-radius:50%;border:2px solid #ddd3fb;border-top-color:var(--brand2);animation:spin .8s linear infinite;flex:none}@keyframes spin{to{transform:rotate(1turn)}}
.srcs{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.src{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:4px 10px;border-radius:999px;background:#fff;border:1px solid var(--line);color:#4b4466;text-decoration:none;max-width:240px;transition:border-color var(--t),box-shadow var(--t)}.src:hover{border-color:#cdbcf8;box-shadow:var(--sh1)}.src img{width:14px;height:14px;border-radius:3px}.src span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thinking{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:14px;padding:4px 0}.dots i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#a78bfa;margin:0 2px;animation:bl 1.2s infinite}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes bl{0%,80%,100%{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:none}}
.acard{display:flex;align-items:center;gap:12px;margin:10px 0;padding:12px 14px;border-radius:14px;background:#fff;border:1px solid var(--line);box-shadow:var(--sh1);cursor:pointer;transition:transform var(--t),box-shadow var(--t),border-color var(--t);text-align:start;width:100%}
.acard:hover{transform:translateY(-1px);box-shadow:var(--sh2);border-color:#d5c7fa}.acard .ai{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;flex:none}
.acard b{display:block;font-weight:600}.acard span{font-size:12.5px;color:var(--muted)}.acard .go{white-space:nowrap;margin-inline-start:auto;color:var(--brand2);font-size:13px;font-weight:600;display:flex;align-items:center;gap:4px}
.acard.building{cursor:default}.acard .bar{height:4px;border-radius:4px;background:#efe9fd;overflow:hidden;margin-top:6px;width:180px}.acard .bar i{display:block;height:100%;background:linear-gradient(90deg,#8b5cf6,#d946ef);width:30%;animation:prog 1.4s ease-in-out infinite}@keyframes prog{0%{margin-inline-start:-30%}100%{margin-inline-start:100%}}
/* composer */
.composer{flex:none;padding:6px 0 14px}
.cbox{background:#fff;border:1px solid var(--line2);border-radius:20px;box-shadow:var(--sh2);padding:8px 8px 8px 8px;transition:border-color var(--t),box-shadow var(--t)}
.cbox:focus-within{border-color:#c4b5fd;box-shadow:0 0 0 4px #f1ebfe,var(--sh2)}
.cbox textarea{width:100%;border:0;outline:none;resize:none;background:transparent;padding:6px 8px;max-height:220px;min-height:28px;line-height:1.6}
.crow{display:flex;align-items:center;gap:6px}.crow .grow{flex:1}
.send{width:38px;height:38px;border-radius:12px;background:var(--brand);color:#fff;display:grid;place-items:center;transition:background var(--t),transform var(--t),opacity var(--t)}.send:hover{background:var(--brand2);transform:translateY(-1px)}.send:disabled{opacity:.35;transform:none;cursor:default}
[dir=rtl] .send .ic{transform:scaleX(-1)}
.stop{background:#1d1830}.stop:hover{background:#3a3452}
.chips{display:flex;gap:6px;flex-wrap:wrap;padding:0 4px 6px}.chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;background:#f5f2fd;border:1px solid #e9e2fb;border-radius:9px;padding:4px 8px}.chip button{color:var(--faint)}.chip button:hover{color:var(--err)}
.hint{text-align:center;font-size:11.5px;color:var(--faint);margin-top:6px}
select.model{border:1px solid transparent;background:transparent;border-radius:9px;padding:5px 6px;font-size:13px;color:#4b4466;cursor:pointer;transition:background var(--t),border-color var(--t)}select.model:hover{background:#f5f2fd;border-color:#e6defa}
/* workspace */
.ws{background:#fff;border-inline-start:1px solid var(--line);display:none;flex-direction:column;min-width:0;box-shadow:-10px 0 30px -24px rgba(40,20,90,.4)}
.app.ws-open .ws{display:flex;animation:wsin .22s ease both}@keyframes wsin{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
.wshead{height:56px;display:flex;align-items:center;gap:8px;padding:0 10px 0 12px;border-bottom:1px solid var(--line);flex:none}
.wstabs{flex:1;display:flex;gap:4px;overflow:auto;scrollbar-width:none}.wstab{display:flex;align-items:center;gap:6px;white-space:nowrap;padding:6px 10px;border-radius:9px;font-size:13px;color:var(--muted);transition:background var(--t),color var(--t);max-width:220px}.wstab span{overflow:hidden;text-overflow:ellipsis}.wstab:hover{background:#f5f2fd;color:var(--text)}.wstab.on{background:var(--brand-soft);color:var(--brand-ink);font-weight:600}
.wsbody{flex:1;overflow:auto;position:relative;background:#f8f7fc}
.wstool{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:8px 10px;border-bottom:1px solid var(--line);background:#fff;position:sticky;top:0;z-index:5}
.wstool .sep{width:1px;height:22px;background:var(--line);margin:0 4px}
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:10px;font-size:13px;font-weight:600;border:1px solid var(--line);background:#fff;color:#3d3657;transition:background var(--t),border-color var(--t),transform var(--t),box-shadow var(--t)}
.btn:hover{border-color:#cdbcf8;box-shadow:var(--sh1);color:var(--brand-ink)}.btn:active{transform:scale(.97)}.btn.pri{background:var(--brand);border-color:var(--brand);color:#fff}.btn.pri:hover{background:var(--brand2)}
.menu{position:fixed;z-index:80;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh3);padding:6px;min-width:190px;animation:fade .14s ease both}
.menu button{width:100%;display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;font-size:13.5px;text-align:start;transition:background var(--t)}.menu button:hover{background:#f4f0fd;color:var(--brand-ink)}.menu .danger{color:var(--err)}.menu hr{border:0;border-top:1px solid var(--line);margin:4px 0}
/* deck */
.deck{display:flex;flex-direction:column;min-height:100%}
.stage{padding:18px;display:flex;justify-content:center}
.slidewrap{width:100%;max-width:980px;aspect-ratio:16/9;position:relative;border-radius:12px;overflow:hidden;box-shadow:0 20px 50px -20px rgba(30,15,70,.45),0 0 0 1px rgba(0,0,0,.04)}
.slidewrap .slide{position:absolute;top:0;left:0;transform-origin:0 0}
.thumbs{display:flex;gap:10px;overflow:auto;padding:4px 18px 16px}
.thumb{flex:none;width:150px;aspect-ratio:16/9;border-radius:8px;overflow:hidden;position:relative;border:2px solid transparent;cursor:pointer;transition:border-color var(--t),transform var(--t),box-shadow var(--t);box-shadow:var(--sh1)}
.thumb:hover{transform:translateY(-2px);box-shadow:var(--sh2)}.thumb.on{border-color:var(--brand2)}.thumb .slide{position:absolute;top:0;left:0;transform-origin:0 0;pointer-events:none}.thumb .n{position:absolute;bottom:4px;inset-inline-start:6px;font-size:11px;background:#000a;color:#fff;border-radius:5px;padding:0 5px;z-index:3}
.slide{width:1280px;height:720px;overflow:hidden;font-family:var(--font);position:relative}
.slide [contenteditable]{outline:none;border-radius:6px;transition:box-shadow .15s}.slide [contenteditable]:hover{box-shadow:0 0 0 2px #a78bfa66}.slide [contenteditable]:focus{box-shadow:0 0 0 2px #8b5cf6}
.aichat{border-top:1px solid var(--line);background:#fff;padding:10px 12px;position:sticky;bottom:0;z-index:6}
.aichat .log{max-height:110px;overflow:auto;font-size:13px;color:var(--muted);margin-bottom:6px}.aichat .log div{padding:2px 0}.aichat .log b{color:var(--text);font-weight:600}
.aichat form{display:flex;gap:6px}.aichat input{flex:1;border:1px solid var(--line2);border-radius:12px;padding:9px 12px;outline:none;transition:border-color var(--t),box-shadow var(--t)}.aichat input:focus{border-color:#c4b5fd;box-shadow:0 0 0 3px #f1ebfe}
.aiq{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}.aiq button{font-size:12px;padding:4px 9px;border-radius:999px;background:#f6f3fe;border:1px solid #ebe4fc;color:#4c3d78;transition:background var(--t),border-color var(--t)}.aiq button:hover{background:#fff;border-color:#c9b8f8}
/* grid */
.grid{padding:16px}.gridcard{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh1);overflow:hidden}
.gtitle{font-size:18px;font-weight:700;padding:14px 16px 4px;outline:none}
.gscroll{overflow:auto;max-height:calc(100dvh - 260px)}
table.g{border-collapse:separate;border-spacing:0;width:100%;font-size:14px}
table.g th,table.g td{border-bottom:1px solid #f0edf6;border-inline-end:1px solid #f4f2f9;padding:0;min-width:110px;position:relative}
table.g th{background:#faf8ff;font-weight:600;position:sticky;top:0;z-index:2}
table.g .rn{min-width:38px;width:38px;text-align:center;color:var(--faint);font-size:12px;background:#fcfbff}
table.g .cell{padding:8px 10px;outline:none;min-height:38px;white-space:pre-wrap;transition:background var(--t),box-shadow var(--t)}
table.g td:hover .cell{background:#faf7ff}table.g .cell:focus{box-shadow:inset 0 0 0 2px #8b5cf6;background:#fff}
table.g .num{text-align:end;font-variant-numeric:tabular-nums;direction:ltr}
table.g tfoot td{background:#f6f2ff;font-weight:700;border-top:2px solid #e2d8fb}
table.g .fx{color:var(--brand-ink)}table.g tr .del{position:absolute;inset-inline-start:2px;top:50%;transform:translateY(-50%);opacity:0;transition:opacity var(--t)}table.g tr:hover .del{opacity:1}
.hdr{display:flex;align-items:center;gap:4px;padding:6px 6px 6px 10px}.hdr .cell{flex:1;padding:2px 0;min-height:auto}.hdr .iconbtn{width:24px;height:24px;border-radius:6px;opacity:.5}.hdr:hover .iconbtn{opacity:1}
.fbar{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--line);font-size:13px;color:var(--muted);background:#fff}.fbar code{direction:ltr;color:var(--brand-ink);background:#f4f0fd;border-radius:6px;padding:1px 8px}
/* doc */
.docpage{max-width:820px;margin:20px auto;background:#fff;border-radius:6px;box-shadow:0 10px 30px -14px rgba(30,15,70,.3),0 0 0 1px #0000000a;padding:56px 64px;min-height:900px;outline:none;font-size:15.5px;line-height:1.85}
.docpage h1{font-size:28px;color:#2a1a5e;margin-top:0}.docpage h2{font-size:21px;color:#3b2386;border-bottom:1px solid #eee8fb;padding-bottom:4px}.docpage h3{font-size:17px}
.docpage table{border-collapse:collapse;width:100%;margin:12px 0}.docpage th,.docpage td{border:1px solid #e5e0f0;padding:7px 10px;text-align:start}.docpage th{background:#f7f4fe}
/* chart */
.chartbox{background:#fff;border-radius:14px;border:1px solid var(--line);margin:16px;padding:16px;box-shadow:var(--sh1)}
.chartbox canvas{max-height:420px}
/* code */
.codebox iframe{width:100%;height:calc(100dvh - 130px);border:0;background:#fff}
.codebox pre{margin:0;padding:16px;direction:ltr;text-align:left;font-size:13px;line-height:1.6;background:#fff;min-height:100%}
/* auth */
.auth{min-height:100dvh;display:grid;place-items:center;padding:20px;background:radial-gradient(1200px 600px at 80% -10%,#efe7ff,transparent),radial-gradient(900px 500px at -10% 110%,#fae8ff,transparent),var(--bg)}
.acardx{width:100%;max-width:400px;background:#fff;border-radius:22px;box-shadow:var(--sh3);padding:28px;border:1px solid #efeaf8;animation:fade .25s ease both}
.acardx h2{margin:14px 0 4px;font-size:22px}.acardx p{margin:0 0 18px;color:var(--muted)}
.field{display:block;margin-bottom:12px}.field span{display:block;font-size:13px;font-weight:500;margin-bottom:4px;color:#4b4466}.field input{width:100%;border:1px solid var(--line2);border-radius:12px;padding:11px 12px;outline:none;transition:border-color var(--t),box-shadow var(--t)}.field input:focus{border-color:#a78bfa;box-shadow:0 0 0 4px #f1ebfe}
.wide{width:100%;justify-content:center;padding:11px}.err{color:var(--err);font-size:13px;min-height:18px;margin:4px 0}
.linkbtn{color:var(--brand);font-weight:600;font-size:14px}.linkbtn:hover{text-decoration:underline}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#1d1830;color:#fff;padding:10px 16px;border-radius:12px;font-size:14px;z-index:99;box-shadow:var(--sh3);animation:fade .2s ease both}
.modal-bg{position:fixed;inset:0;background:#120c2a66;z-index:90;display:grid;place-items:center;padding:16px;animation:fade .15s ease both}.modal{background:#fff;border-radius:18px;max-width:440px;width:100%;padding:20px;box-shadow:var(--sh3)}.modal h3{margin:0 0 10px}.modal .row{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.scrim{display:none}
.present{position:fixed;inset:0;background:#000;z-index:95;display:grid;place-items:center}.present .slide{transform-origin:center}
@media (max-width:1100px){.app.ws-open{grid-template-columns:0 0 1fr}.app.ws-open .side,.app.ws-open .main{visibility:hidden}.ws .wsclose-m{display:grid}}
@media (max-width:900px){.app,.app.ws-open,.app.side-collapsed{grid-template-columns:1fr}.side{position:fixed;inset-block:0;inset-inline-start:0;width:290px;z-index:60;transform:translateX(100%);transition:transform var(--t);box-shadow:var(--sh3)}[dir=ltr] .side{transform:translateX(-100%)}.app.side-open .side{transform:none}
.app.side-open .scrim{display:block;position:fixed;inset:0;background:#120c2a55;z-index:55}.only-m{display:grid}.only-d{display:none!important}
.app.ws-open .main{display:none}.app.ws-open .ws{display:flex;position:fixed;inset:0;z-index:50}.app.ws-open .side,.app.ws-open .main{visibility:visible}
.sugs{grid-template-columns:1fr}.hello{font-size:25px}.col{padding:0 14px}.msg.u .bubble{max-width:88%}.docpage{padding:28px 20px;margin:10px;min-height:600px}.stage{padding:10px}.thumbs{padding:4px 10px 12px}.thumb{width:112px}.wstool{gap:2px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.tooldet{display:flex;flex-direction:column;gap:6px}.tooldet>summary{list-style:none;cursor:pointer;user-select:none;transition:background .16s}.tooldet>summary::-webkit-details-marker{display:none}.tooldet>summary:hover{background:#f3effe}.tooldet>summary .chev{display:inline-flex;margin-inline-start:4px;opacity:.6;transition:transform .18s}.tooldet[open]>summary .chev{transform:rotate(180deg)}.tooldet>summary .chev svg{width:14px;height:14px}

.aichat{position:sticky}.aichat .aihide{position:absolute;top:6px;inset-inline-end:8px;width:28px;height:28px;z-index:2}
.aichat .aiq{padding-inline-end:34px}
.aichat .q{color:var(--muted)}
.aichat .aishow{display:none}
.aichat.hid{border-top:0;background:transparent;padding:0;height:0;overflow:visible}
.aichat.hid>*:not(.aishow){display:none}
.aichat.hid .aishow{display:inline-flex;align-items:center;gap:6px;position:absolute;bottom:14px;inset-inline-end:16px;padding:10px 16px;border-radius:999px;border:0;background:linear-gradient(135deg,#6d28d9,#a21caf);color:#fff;font:600 14px/1 inherit;font-family:inherit;box-shadow:0 8px 24px #6d28d955;cursor:pointer;transition:transform .18s,box-shadow .18s}
.aichat.hid .aishow:hover{transform:translateY(-2px);box-shadow:0 12px 28px #6d28d977}
.aichat.hid .aishow svg{width:16px;height:16px}

.field.bad input,.field.bad textarea{border-color:#e11d48!important;box-shadow:0 0 0 3px #ffe4e6!important}
.auth .err:not(:empty){margin-top:10px;padding:9px 12px;border-radius:10px;background:#fff1f2;color:#be123c;font-size:13.5px}
.linkbtn{display:inline-flex;align-items:center;min-height:44px;padding:0 6px;border-radius:10px;transition:background .16s}.linkbtn:hover{background:#f3effe}
.auth .mini{min-height:44px;padding:0 14px}
@media (max-width:900px){.mini{min-height:40px}}

/* v2-12: 390 overflow fix for the deck AI-edit row */
.aichat form{min-width:0}
.aichat input{min-width:0;width:100%}
.aichat form .btn{flex-shrink:0;white-space:nowrap}
@media (max-width:480px){.aichat form .btn span{display:none}.aichat form .btn{padding-inline:12px}}

/* loop: 40px touch targets on phones */
@media (max-width:900px){.iconbtn{width:40px;height:40px}.send{width:40px;height:40px}}

@media (min-width:901px){.app.side-collapsed>.side{visibility:hidden;pointer-events:none}}

.send.off{opacity:.4;transform:none;cursor:default}.send.off:hover{background:var(--brand);transform:none}
@keyframes kznudge{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}.nudge{animation:kznudge .2s ease 2}
.merr{color:#b42318;font-size:13px;min-height:0;margin:2px 0 0}.merr:empty{display:none}.modal input.bad,.modal select.bad{border-color:#b42318!important;box-shadow:0 0 0 3px #b4231822}
.newchat kbd{opacity:1;background:#ffffff33}
.wstab{white-space:normal;line-height:1.25;text-align:start;max-width:240px}.wstab span{overflow:visible;text-overflow:clip}
@media (prefers-reduced-motion:reduce){.nudge{animation:none}}

.menu-bg{position:fixed;inset:0;z-index:79;background:transparent}
.menu-bg>.menu{position:absolute}

/* v3-22 a11y: skip link, auth landmarks */
.skip{position:absolute;inset-inline-start:12px;top:12px;opacity:0;pointer-events:none;z-index:9999;background:#6d28d9;color:#fff;padding:10px 16px;border-radius:10px;font-weight:600;text-decoration:none;transition:top .15s}.skip:focus,.skip:focus-visible{opacity:1;pointer-events:auto;outline:3px solid #c026d3;outline-offset:2px}
main:focus{outline:none}
.auth{min-height:100dvh;padding-bottom:76px}
.acardx h1{margin:14px 0 4px;font-size:22px;line-height:1.3}
.authfoot{position:relative;margin-top:-56px;min-height:56px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 18px;padding:8px 16px 14px;font-size:13.5px;color:#5b5470;background:transparent}
.authfoot nav{display:flex;gap:18px}
.authfoot a{color:#5b21b6;text-decoration:none;min-height:44px;padding:0 6px;display:inline-flex;align-items:center}
.authfoot a:hover{text-decoration:underline}
.authfoot a:focus-visible{outline:2px solid #6d28d9;outline-offset:2px;border-radius:4px}


/* loop5: action tiles (no cramped two-line labels), long emails wrap inside the profile card */
.abtn{flex-direction:column;justify-content:center;gap:4px;padding:10px 6px;text-align:center;font-size:12.5px;line-height:1.25;white-space:nowrap;min-height:60px}
.me .nm span{display:block;overflow-wrap:anywhere;word-break:break-word;font-size:11.5px}
@media (min-width:901px){.side-collapsed .side .abtn{min-height:44px}}
/* loop5 (38431d34): composer hint feedback, workspace close placement, desktop icon rail when the sidebar is collapsed */
.hint.warn{color:#b42318;font-weight:600}
.ws{position:relative}
.wshead{padding-inline-end:56px}
.wsclose{position:absolute;top:10px;inset-inline-end:10px;z-index:3}
@media (min-width:901px){
.app.side-collapsed{grid-template-columns:68px 1fr}
.app.side-collapsed.ws-open{grid-template-columns:68px minmax(360px,1fr) minmax(420px,1.3fr)}
.app.side-collapsed>.side{visibility:visible;pointer-events:auto;overflow-x:hidden;overflow-y:auto}
.side-collapsed .side .side-top{flex-direction:column;gap:10px;padding:14px 0 8px}
.side-collapsed .side .logo>span:not(.mark),.side-collapsed .side .side-scroll,.side-collapsed .side .actions>h4,.side-collapsed .side .me .nm,.side-collapsed .side kbd,.side-collapsed .side .lbl{display:none}
.side-collapsed .side .newchat{margin:6px auto 10px;width:44px;height:44px;padding:0;justify-content:center}
.side-collapsed .side .search{margin:0 auto 8px;width:44px}
.side-collapsed .side .search input{padding:0;width:44px;height:44px;color:transparent;cursor:pointer}
.side-collapsed .side .search input::placeholder{color:transparent}
.side-collapsed .side .search .ic{inset-inline-start:13px;inset-inline-end:auto;pointer-events:none}
.side-collapsed .side .actions{margin-top:auto;padding:0}
.side-collapsed .side .agrid{grid-template-columns:44px;justify-content:center;gap:8px}
.side-collapsed .side .abtn{width:44px;height:44px;padding:0;justify-content:center}
.side-collapsed .side .me{flex-direction:column;gap:8px;padding:10px 0 12px;align-items:center}
.side-collapsed .side [aria-label="collapse"] svg{transform:scaleX(-1)}
}
@media (min-width:901px){.side-collapsed .top [aria-label="expand"]{display:none!important}}
/* loop5: main content comes first in DOM/tab order; the sidebar keeps its visual place */
.app>.side{order:-1}

.mini.copying,.btn.copying{opacity:.7}.mini.copied,.btn.copied{color:#15803d!important;border-color:#86efac}
