/*!
 * william's vm
 * Copyright (c) 2026 William (github.com/treverisdagoat33333)
 * All rights reserved. Proprietary and confidential. See LICENSE.
 */

/* ── AI window ──────────────────────────── */
.ic.c9{background:linear-gradient(135deg,#8b5cf6,#06b6d4)}
#ai-window{position:fixed;inset:0 0 var(--tb-h) 0;z-index:60;display:none;background:var(--bg0);animation:rise .3s var(--spring);
  grid-template-columns:248px minmax(0,1fr)}
html[data-tbhide="on"] #ai-window{bottom:0}
html[data-tbside="top"] #ai-window{inset:var(--tb-h) 0 0 0}
#ai-window.show{display:grid}
#ai-window.closing{animation:sink .2s var(--ease) forwards}

/* sidebar: the chats */
.ai-side{display:flex;flex-direction:column;min-height:0;padding:14px 10px;background:var(--glass-2);border-right:1px solid var(--border);gap:10px}
.ai-brand{display:flex;align-items:center;gap:10px;padding:2px 8px 4px;font-size:1.05em}
.ai-brand .ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:#fff}
.ai-brand .ic .i{width:17px;height:17px}
.ai-new{display:flex;align-items:center;justify-content:center;gap:7px;width:100%}
.ai-new .i{width:15px;height:15px}
.ai-chats{flex:1;min-height:0;overflow:auto;scrollbar-width:thin;display:flex;flex-direction:column;gap:1px}
.ai-chat{display:flex;align-items:center;border-radius:var(--r-sm);transition:background .12s}
.ai-chat:hover{background:var(--glass-2)}
.ai-chat.active{background:var(--glass-3)}
.ai-open{flex:1;min-width:0;padding:9px 11px;text-align:left;color:var(--text-2);font-size:.88em}
.ai-chat.active .ai-open{color:var(--text);font-weight:600}
.ai-open span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-del{width:28px;height:28px;display:grid;place-items:center;border-radius:7px;color:var(--text-3);opacity:0;flex:0 0 auto;margin-right:3px}
.ai-chat:hover .ai-del,.ai-chat.active .ai-del{opacity:1}
.ai-del:hover{color:var(--bad);background:var(--glass-3)}
.ai-del .i{width:14px;height:14px}
.ai-none{padding:6px 11px;font-size:.82em;color:var(--text-3)}

/* main: header, messages, composer */
.ai-main{display:flex;flex-direction:column;min-width:0;min-height:0}
.ai-top{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border)}
.ai-top #ai-model{max-width:260px;height:34px;padding:0 10px;font-size:.85em}
.ai-top .sp{flex:1}
.ai-menu-btn{display:none}
.ai-scroll{flex:1;min-height:0;overflow:auto;scrollbar-width:thin}
.ai-log{max-width:780px;margin:0 auto;padding:22px 18px 30px;display:flex;flex-direction:column;gap:16px}
.ai-msg{line-height:1.6;font-size:.95em;word-wrap:break-word;overflow-wrap:anywhere}
.ai-msg.me{align-self:flex-end;max-width:80%;padding:10px 14px;border-radius:18px 18px 4px 18px;background:rgba(var(--accent-rgb),.18);white-space:pre-wrap}
.ai-msg.bot{align-self:stretch;color:var(--text)}
.ai-msg.bot p{margin:0 0 .7em}
.ai-msg.bot p:last-child{margin-bottom:0}
.ai-msg.bot h3,.ai-msg.bot h4,.ai-msg.bot h5,.ai-msg.bot h6{margin:.9em 0 .4em;font-size:1.02em}
.ai-msg.bot ul,.ai-msg.bot ol{margin:0 0 .7em;padding-left:1.4em}
.ai-msg.bot li{margin:.2em 0}
.ai-msg.bot blockquote{margin:0 0 .7em;padding:2px 12px;border-left:3px solid var(--border-2);color:var(--text-2)}
.ai-msg.bot a{color:var(--accent);text-decoration:underline}
.ai-msg code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:1px 5px;border-radius:5px;background:var(--glass-3)}
.ai-code{margin:0 0 .8em;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:rgba(0,0,0,.28)}
.ai-code-top{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;font-size:.75em;color:var(--text-3);background:var(--glass-2)}
.ai-copy{padding:3px 8px;border-radius:6px;color:var(--text-2);font-size:1em}
.ai-copy:hover{background:var(--glass-3);color:var(--text)}
.ai-code pre{margin:0;padding:12px;overflow:auto;scrollbar-width:thin}
.ai-code pre code{padding:0;background:none;font-size:.85em;white-space:pre}
.ai-err{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px;padding:8px 12px;border-radius:10px;background:rgba(239,68,68,.12);color:var(--bad);font-size:.88em}
.ai-err span{flex:1;min-width:0}
.ai-dots{display:inline-flex;gap:4px;padding:6px 0}
.ai-dots i{width:7px;height:7px;border-radius:50%;background:var(--text-3);animation:ai-dot 1s infinite ease-in-out}
.ai-dots i:nth-child(2){animation-delay:.15s}.ai-dots i:nth-child(3){animation-delay:.3s}
@keyframes ai-dot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.ai-empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:12vh 10px 0;gap:10px}
.ai-empty .ic{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;color:#fff}
.ai-empty .ic .i{width:26px;height:26px}
.ai-empty h2{font-size:1.35em;margin:6px 0 0}
.ai-empty p{color:var(--text-2);margin:0;max-width:420px}
.ai-sugs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px;width:100%;max-width:560px}
.ai-sug{padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--glass-2);color:var(--text-2);font-size:.86em;text-align:left;transition:background .12s,color .12s}
.ai-sug:hover{background:var(--glass-3);color:var(--text)}
.ai-compose{display:flex;align-items:flex-end;gap:8px;max-width:780px;width:calc(100% - 32px);margin:0 auto;padding:8px 8px 8px 16px;border:1px solid var(--border-2);border-radius:22px;background:var(--glass-2)}
.ai-compose:focus-within{border-color:rgba(var(--accent-rgb),.6)}
#ai-input{flex:1;min-width:0;resize:none;border:0;outline:0;background:none;color:var(--text);font:inherit;font-size:.95em;line-height:1.5;padding:7px 0;max-height:200px}
.ai-send{width:36px;height:36px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:#fff;transition:transform .2s var(--springy),opacity .15s}
.ai-send:active{transform:scale(.9)}
.ai-send .i{width:17px;height:17px}
.ai-send .ist{display:none}
#ai-window.busy .ai-send .isd{display:none}
#ai-window.busy .ai-send .ist{display:block}
.ai-note{text-align:center;font-size:.72em;color:var(--text-3);margin:6px 16px 10px}

@media (max-width:720px){
  #ai-window{grid-template-columns:minmax(0,1fr)}
  .ai-side{position:absolute;inset:0 auto 0 0;width:min(280px,86vw);z-index:2;transform:translateX(-102%);transition:transform .25s var(--ease);background:var(--bg0)}
  #ai-window.side-open .ai-side{transform:none;box-shadow:var(--shadow)}
  .ai-menu-btn{display:grid}
  .ai-top{padding:10px 12px}
  .ai-top #ai-model{max-width:44vw}
  .ai-sugs{grid-template-columns:minmax(0,1fr)}
  .ai-msg.me{max-width:90%}
}

/* what the AI did on the site, under its reply */
.ai-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.ai-act{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:.82em;font-weight:600;
  background:rgba(34,197,94,.12);color:#4ade80;border:1px solid rgba(34,197,94,.25);animation:rise .3s var(--spring)}
.ai-act.bad{background:rgba(239,68,68,.12);color:#f87171;border-color:rgba(239,68,68,.25)}
html[data-motion="off"] .ai-act,html[data-perf="on"] .ai-act{animation:none}
/* a command the AI ran on its cloud computer: the chip opens to show the output */
.ai-shell{display:block;width:100%}
.ai-shell>summary{list-style:none;cursor:pointer;display:inline-block}
.ai-shell>summary::-webkit-details-marker{display:none}
.ai-shell>summary .ai-act{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:500}
.ai-shell[open]>summary .ai-act{border-bottom-left-radius:6px;border-bottom-right-radius:6px}
.ai-shell pre{margin:6px 0 2px;max-height:260px;overflow:auto;padding:10px 12px;border-radius:10px;background:#0b0d12;color:#d7dce5;
  font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-word;border:1px solid rgba(255,255,255,.08)}

/* a model on this device getting ready (js/local-ai.js) */
.ai-loading{display:flex;flex-direction:column;gap:6px;min-width:220px;font-size:.86em;color:var(--text-2)}
.ai-loading progress{width:100%;height:6px;border:0;border-radius:99px;overflow:hidden;background:var(--glass-3);accent-color:var(--accent)}
.ai-loading progress::-webkit-progress-bar{background:var(--glass-3)}
.ai-loading progress::-webkit-progress-value{background:var(--accent);border-radius:99px}
#ai-model optgroup{font-weight:700}

/* thinking: a fold above the answer, pulsing while it thinks */
.ai-think{margin:0 0 10px;border-left:2px solid var(--border-2);padding-left:12px}
.ai-think summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;font-size:.84em;color:var(--text-3);user-select:none}
.ai-think summary::-webkit-details-marker{display:none}
.ai-think summary::before{content:'›';display:inline-block;transition:transform .15s}
.ai-think[open] summary::before{transform:rotate(90deg)}
.ai-think summary:hover{color:var(--text-2)}
.ai-think.live summary{background:linear-gradient(90deg,var(--text-3),var(--text),var(--text-3));background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:ai-shine 1.6s linear infinite}
@keyframes ai-shine{to{background-position:-200% 0}}
.ai-think-body{margin-top:6px;font-size:.84em;line-height:1.55;color:var(--text-3);white-space:pre-wrap;max-height:320px;overflow:auto;scrollbar-width:thin}
.ai-thinking{display:flex;align-items:center;gap:8px;font-size:.86em;color:var(--text-3)}
html[data-motion="off"] .ai-think.live summary,html[data-perf="on"] .ai-think.live summary{animation:none;color:var(--text-2);background:none}
@media (prefers-reduced-motion:reduce){.ai-think.live summary{animation:none;color:var(--text-2);background:none}}

/* under a finished answer: copy, read aloud, again, which model */
.ai-tools{display:flex;align-items:center;gap:2px;margin-top:6px;opacity:.55;transition:opacity .15s}
.ai-msg.bot:hover .ai-tools,.ai-tools:focus-within{opacity:1}
.ai-tools button{width:28px;height:28px;display:grid;place-items:center;border-radius:7px;color:var(--text-2)}
.ai-tools button:hover{background:var(--glass-3);color:var(--text)}
.ai-tools button.on{color:var(--accent)}
.ai-tools .i{width:15px;height:15px}
.ai-meta{margin-left:8px;font-size:.74em;color:var(--text-3)}
.ai-msg.me{position:relative}
.ai-edit{position:absolute;left:-34px;top:50%;translate:0 -50%;width:28px;height:28px;display:grid;place-items:center;border-radius:7px;color:var(--text-3);opacity:0;transition:opacity .15s}
.ai-msg.me:hover .ai-edit,.ai-edit:focus-visible{opacity:1}
.ai-edit:hover{background:var(--glass-3);color:var(--text)}
.ai-edit .i{width:14px;height:14px}
.ai-editbar{display:flex;align-items:center;gap:10px;max-width:780px;width:calc(100% - 32px);margin:0 auto 6px;padding:6px 8px 6px 14px;border-radius:12px;background:rgba(var(--accent-rgb),.14);font-size:.82em;color:var(--text-2)}
.ai-editbar span{flex:1}

/* the model picker */
.ai-mp{position:relative}
.ai-mp-btn{display:flex;align-items:center;gap:8px;height:36px;max-width:300px;padding:0 10px 0 6px;border-radius:12px;border:1px solid var(--border);background:var(--glass-2);color:var(--text);font-weight:600;font-size:.9em;transition:background .12s,border-color .12s}
.ai-mp-btn:hover,.ai-mp-btn[aria-expanded="true"]{background:var(--glass-3);border-color:var(--border-2)}
.ai-mp-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-mp-chev{width:15px;height:15px;color:var(--text-3);transition:transform .2s var(--ease)}
.ai-mp-btn[aria-expanded="true"] .ai-mp-chev{transform:rotate(180deg)}
.ai-mp-ic{width:24px;height:24px;border-radius:8px;flex:0 0 auto;background:linear-gradient(135deg,#8b5cf6,#06b6d4)}
.ai-mp-ic.dev{background:linear-gradient(135deg,#22c55e,#0ea5e9)}
.ai-mp-pop{position:absolute;top:calc(100% + 8px);left:0;z-index:5;width:min(360px,88vw);max-height:min(480px,70vh);display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:16px;border:1px solid var(--border-2);background:var(--bg1,var(--bg0));box-shadow:var(--shadow);animation:rise .18s var(--ease)}
.ai-mp-pop[hidden]{display:none}
.ai-mp-q{height:34px;font-size:.86em}
.ai-mp-list{overflow:auto;scrollbar-width:thin;display:flex;flex-direction:column;gap:1px}
.ai-mp-g{padding:10px 10px 4px;font-size:.7em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
.ai-mp-it{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;border-radius:10px;text-align:left;color:var(--text)}
.ai-mp-it:hover,.ai-mp-it:focus-visible{background:var(--glass-3);outline:0}
.ai-mp-it.on{background:rgba(var(--accent-rgb),.18)}
.ai-mp-it[disabled]{opacity:.45;cursor:default;background:none}
.ai-mp-it.danger b{color:var(--bad)}
.ai-mp-t{display:flex;align-items:center;gap:6px;font-size:.88em}
.ai-mp-it small{font-size:.74em;color:var(--text-3)}
.ai-mp-t em{font-style:normal;font-size:.72em;font-weight:700;padding:1px 7px;border-radius:99px}
.ai-mp-t .best{background:rgba(var(--accent-rgb),.2);color:var(--accent)}
.ai-mp-t .think{background:rgba(139,92,246,.18);color:#a78bfa}
html[data-motion="off"] .ai-mp-pop,html[data-perf="on"] .ai-mp-pop{animation:none}

/* / shortcuts, above the box */
.ai-slash{max-width:780px;width:calc(100% - 32px);margin:0 auto 6px;padding:6px;border-radius:14px;border:1px solid var(--border-2);background:var(--bg1,var(--bg0));box-shadow:var(--shadow);display:flex;flex-direction:column;gap:1px}
.ai-slash[hidden]{display:none}
.ai-sl{display:flex;gap:10px;align-items:baseline;padding:7px 10px;border-radius:9px;text-align:left;font-size:.86em;color:var(--text-2)}
.ai-sl b{color:var(--text);min-width:90px}
.ai-sl span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-sl.on,.ai-sl:hover{background:var(--glass-3)}
.ai-mic{width:36px;height:36px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;color:var(--text-2);margin-left:-8px}
.ai-mic:hover{background:var(--glass-3);color:var(--text)}
.ai-mic.on{color:#fff;background:var(--bad);animation:ai-dot 1.2s infinite}
.ai-mic .i{width:17px;height:17px}
.ai-search{height:34px;font-size:.85em}

/* Customize */
.ai-custom{position:absolute;inset:0;z-index:10;display:grid;place-items:center;padding:16px;background:rgba(0,0,0,.45);backdrop-filter:blur(4px)}
.ai-custom[hidden]{display:none}
.ai-custom-card{width:min(520px,100%);max-height:100%;overflow:auto;display:flex;flex-direction:column;gap:12px;padding:20px;border-radius:18px;border:1px solid var(--border-2);background:var(--bg1,var(--bg0));box-shadow:var(--shadow);animation:rise .25s var(--spring)}
.ai-custom-card h3{margin:0}
.ai-custom-card>label{display:flex;flex-direction:column;gap:6px;font-size:.86em;font-weight:600;color:var(--text-2)}
.ai-custom-card textarea{resize:vertical;font:inherit;font-weight:400;font-size:.95em;padding:9px 11px;border-radius:10px;border:1px solid var(--border);background:var(--glass-2);color:var(--text)}
.ai-c-tags{display:flex;flex-wrap:wrap;gap:6px}
.ai-c-tag{padding:6px 12px;border-radius:99px;border:1px solid var(--border);background:var(--glass-2);font-size:.82em;color:var(--text-2)}
.ai-c-tag.on{background:rgba(var(--accent-rgb),.2);border-color:rgba(var(--accent-rgb),.6);color:var(--text)}
.ai-custom-card .ai-c-row{flex-direction:row;align-items:center;justify-content:space-between;gap:12px}
.ai-c-row span{display:flex;flex-direction:column;gap:2px}
.ai-c-row b{color:var(--text)}
.ai-c-row small{font-weight:400;color:var(--text-3)}
.ai-c-row input{width:18px;height:18px;accent-color:var(--accent)}
.ai-c-btns{display:flex;justify-content:flex-end;gap:8px}
@media (max-width:720px){.ai-mp-btn{max-width:44vw}#ai-custom-btn{font-size:0;gap:0;padding:0 9px}#ai-custom-btn .i{width:16px;height:16px;font-size:16px}.ai-edit{display:none}}
#ai-window [hidden]{display:none!important}

/* pictures: attached ones in your message, made ones under the AI's reply */
.ai-imgs{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;white-space:normal}
.ai-img{position:relative;margin:0;border-radius:12px;overflow:hidden;background:var(--glass-3);cursor:zoom-in}
.ai-img img{display:block;max-width:220px;max-height:220px;object-fit:cover}
.ai-imgs.made .ai-img img{max-width:min(420px,100%);max-height:420px}
.ai-img.gone{display:none}
.ai-img-dl{position:absolute;top:8px;right:8px;width:32px;height:32px;display:grid;place-items:center;border-radius:9px;background:rgba(0,0,0,.55);color:#fff;opacity:0;transition:opacity .15s}
.ai-img:hover .ai-img-dl,.ai-img-dl:focus-visible{opacity:1}
.ai-img-dl .i{width:16px;height:16px}
.ai-making{margin-top:8px;width:min(320px,100%);aspect-ratio:1;border-radius:14px;display:grid;place-items:center;padding:16px;text-align:center;font-size:.85em;color:var(--text-2);
  background:linear-gradient(110deg,var(--glass-2) 30%,var(--glass-3) 50%,var(--glass-2) 70%);background-size:300% 100%;animation:ai-shine 1.8s linear infinite}
html[data-motion="off"] .ai-making,html[data-perf="on"] .ai-making{animation:none}
@media (prefers-reduced-motion:reduce){.ai-making{animation:none}}
.ai-tray{display:flex;gap:8px;max-width:780px;width:calc(100% - 32px);margin:0 auto 6px}
.ai-tray-it{position:relative;width:64px;height:64px;border-radius:12px;overflow:hidden;border:1px solid var(--border-2);background:var(--glass-3)}
.ai-tray-it img{width:100%;height:100%;object-fit:cover}
.ai-tray-x{position:absolute;top:3px;right:3px;width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:rgba(0,0,0,.65);color:#fff}
.ai-tray-x .i{width:11px;height:11px}
.ai-attach{margin-left:-8px}
.ai-attach+input+.ai-mic{margin-left:-6px}
.ai-drop{position:absolute;inset:12px;z-index:9;display:grid;place-items:center;border:2px dashed rgba(var(--accent-rgb),.8);border-radius:20px;background:rgba(var(--accent-rgb),.12);font-weight:700;font-size:1.1em;pointer-events:none}
.ai-lightbox{position:absolute;inset:0;z-index:11;display:grid;place-items:center;padding:24px;background:rgba(0,0,0,.8);cursor:zoom-out}
.ai-lightbox img{max-width:100%;max-height:100%;border-radius:12px;box-shadow:var(--shadow)}

/* Compare: two answers side by side */
.ai-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-self:stretch}
.ai-pair-col{min-width:0;padding:12px;border-radius:14px;border:1px solid var(--border);background:var(--glass-2);display:flex;flex-direction:column;gap:8px}
.ai-pair-head{display:flex;align-items:center;gap:8px;font-size:.8em;color:var(--text-2)}
.ai-pair-head b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-cmp-btn{display:flex;align-items:center;gap:6px;max-width:220px}
.ai-cmp-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-cmp-btn .i{width:14px;height:14px}
.ai-cmp-btn.on{border-color:rgba(var(--accent-rgb),.6);color:var(--accent)}
.ai-page{margin-top:6px;font-size:.78em;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:420px}
@media (max-width:720px){.ai-pair{grid-template-columns:minmax(0,1fr)}.ai-cmp-btn span{display:none}}
.ai-cutnote{margin-top:8px;font-size:.82em;color:var(--text-3)}
.ai-mp-it small{color:var(--text-3);font-size:.78em}
/* ULTRACODE: a moving fire gradient on the button, a pulsing bolt, a glow along the
   message box while it's on, and a shockwave with sparks when it's switched on */
/* Willie AI (/ai): the AI alone, filling the screen, with nothing else from the desktop.
   The notch and home bar get their own room (viewport-fit is cover once installed on iOS). */
html[data-solo="ai"] body{background:#000}
html[data-solo="ai"] #desktop,html[data-solo="ai"] #taskbar,html[data-solo="ai"] #widgets,html[data-solo="ai"] #icons,
html[data-solo="ai"] #ai-close,html[data-solo="ai"] [data-minimize="ai"],html[data-solo="ai"] .mu-mini,html[data-solo="ai"] #start{display:none!important}
html[data-solo="ai"] #ai-window{inset:0!important;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);animation:none}
html[data-solo="ai"] #ai-window:not(.show){display:none}

/* ── Willie AI on an iPhone ─────────────────
   Built for the iPhone 14 (390×844, notch 47pt, home bar 34pt) and phones like it: the
   system font, a 44pt bar under the notch, iMessage-style bubbles and message bar, 30pt
   buttons, and menus that open as sheets from the bottom. Only in the installed AI app. */
@media (max-width:600px){
  html[data-solo="ai"]{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
  html[data-solo="ai"] body{overscroll-behavior:none}
  html[data-solo="ai"] #ai-window{--ios-blue:#0a84ff;--ios-fill:#1c1c1e;--ios-fill2:#2c2c2e;--ios-sep:rgba(84,84,88,.6);--ios-label2:rgba(235,235,245,.6);
    font:16px/1.4 -apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue",system-ui,sans-serif;letter-spacing:-.01em;padding:0;background:#000}
  html[data-solo="ai"] #ai-window button{-webkit-user-select:none;user-select:none}

  /* the bar under the notch: menu, model, then small icon buttons */
  html[data-solo="ai"] .ai-top{position:relative;z-index:3;min-height:44px;gap:6px;padding:calc(env(safe-area-inset-top) + 4px) max(10px,env(safe-area-inset-right)) 4px max(10px,env(safe-area-inset-left));
    background:rgba(0,0,0,.94);border-bottom:.5px solid var(--ios-sep)}
  /* (no backdrop blur on the bar: it would trap the menus' fixed sheets inside it) */
  html[data-solo="ai"] .ai-top .mu-iconbtn,html[data-solo="ai"] .ai-top .btn{width:30px;height:30px;min-width:30px;padding:0;display:grid;place-items:center;border:0;border-radius:9px;background:transparent;color:var(--ios-blue);font-size:0;gap:0;box-shadow:none}
  html[data-solo="ai"] .ai-top .mu-iconbtn:active,html[data-solo="ai"] .ai-top .btn:active{background:var(--ios-fill2)}
  html[data-solo="ai"] .ai-top .i{width:19px;height:19px;font-size:19px}
  html[data-solo="ai"] .ai-cmp-btn span,html[data-solo="ai"] #ai-ultra span:not(.ai-ultra-bolt){display:none}
  html[data-solo="ai"] #ai-export{display:none}
  html[data-solo="ai"] .ai-top .ai-cmp-btn.on{background:rgba(10,132,255,.18)}
  html[data-solo="ai"] .ai-mp{min-width:0;flex:0 1 auto}
  html[data-solo="ai"] .ai-mp-btn{height:30px;max-width:46vw;gap:6px;padding:0 8px 0 4px;border:0;border-radius:15px;background:var(--ios-fill);font-size:15px;font-weight:600;color:#fff}
  html[data-solo="ai"] .ai-mp-ic{width:22px;height:22px;border-radius:7px}
  html[data-solo="ai"] .ai-mp-chev{width:13px;height:13px;color:var(--ios-label2)}

  /* menus (model, Compare, Effort) slide up as sheets */
  html[data-solo="ai"] .ai-mp-pop{position:fixed;left:0;right:0;top:auto;bottom:0;width:auto;max-height:62vh;z-index:20;border:0;border-radius:14px 14px 0 0;
    padding:8px 8px calc(env(safe-area-inset-bottom) + 10px);background:var(--ios-fill);box-shadow:0 -10px 40px rgba(0,0,0,.6);animation:iosSheet .28s cubic-bezier(.2,.8,.2,1)}
  html[data-solo="ai"] .ai-mp-pop::before{content:"";display:block;width:36px;height:5px;border-radius:3px;margin:2px auto 8px;background:rgba(235,235,245,.3)}
  html[data-solo="ai"] .ai-mp-it{padding:12px 12px;border-radius:10px;font-size:16px}
  html[data-solo="ai"] .ai-mp-it.on{background:rgba(10,132,255,.2)}
  html[data-solo="ai"] .ai-mp-g{font-size:13px;color:var(--ios-label2);padding:4px 12px 6px;text-transform:none}
  html[data-solo="ai"] .ai-mp-q{height:36px;border-radius:10px;border:0;background:var(--ios-fill2);font-size:16px}
  @keyframes iosSheet{from{translate:0 100%}}

  /* the chats drawer */
  html[data-solo="ai"] .ai-side{width:min(304px,84vw);padding:calc(env(safe-area-inset-top) + 10px) 10px calc(env(safe-area-inset-bottom) + 10px);background:var(--ios-fill);border-right:0}
  html[data-solo="ai"] .ai-side{z-index:6}
  html[data-solo="ai"] #ai-window.side-open::after{content:"";position:absolute;inset:0;z-index:5;background:rgba(0,0,0,.45)}
  html[data-solo="ai"] .ai-new{height:40px;border-radius:10px;font-size:16px;font-weight:600;background:var(--ios-blue);border:0}
  html[data-solo="ai"] .ai-open{padding:11px 12px;font-size:15px}
  html[data-solo="ai"] .ai-del{opacity:1;width:30px;height:30px}

  /* messages: your words in blue bubbles, its answers as plain text */
  html[data-solo="ai"] .ai-log{padding:14px max(14px,env(safe-area-inset-right)) 18px max(14px,env(safe-area-inset-left));gap:12px}
  html[data-solo="ai"] .ai-msg{font-size:16px;line-height:1.45}
  html[data-solo="ai"] .ai-msg.me{max-width:78%;padding:8px 13px;border-radius:19px 19px 5px 19px;background:var(--ios-blue);color:#fff}
  html[data-solo="ai"] .ai-code{border-radius:12px;font-size:13px}
  html[data-solo="ai"] .ai-tools{opacity:.7;gap:0;margin-top:4px}
  html[data-solo="ai"] .ai-tools button{width:30px;height:30px;border-radius:8px}
  html[data-solo="ai"] .ai-tools .i{width:16px;height:16px}
  html[data-solo="ai"] .ai-meta{font-size:12px}

  /* the empty screen: a smaller greeting and suggestions as one grouped list */
  html[data-solo="ai"] .ai-empty{padding:9vh 4px 0;gap:8px}
  html[data-solo="ai"] .ai-empty h2,html[data-solo="ai"] .ai-empty h3{font-size:22px;font-weight:700;letter-spacing:-.02em}
  html[data-solo="ai"] .ai-sugs{gap:0;margin-top:14px;border-radius:12px;overflow:hidden;background:var(--ios-fill);width:100%}
  html[data-solo="ai"] .ai-sug{border:0;border-radius:0;background:transparent;padding:13px 16px;font-size:15px;color:#fff;border-bottom:.5px solid var(--ios-sep)}
  html[data-solo="ai"] .ai-sug:last-child{border-bottom:0}
  html[data-solo="ai"] .ai-sug:active{background:var(--ios-fill2)}

  /* the message bar above the home bar, like iMessage */
  html[data-solo="ai"] .ai-compose{width:auto;max-width:none;margin:0;gap:6px;align-items:flex-end;border:0;border-radius:0;
    padding:7px max(10px,env(safe-area-inset-right)) calc(env(safe-area-inset-bottom) + 7px) max(10px,env(safe-area-inset-left));
    background:rgba(0,0,0,.82);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid var(--ios-sep);box-shadow:none}
  html[data-solo="ai"] .ai-compose .ai-mic{width:32px;height:34px;color:var(--ios-label2);flex:0 0 auto}
  html[data-solo="ai"] .ai-compose .ai-mic .i{width:21px;height:21px}
  /* 16px so iOS doesn't zoom the page when the box is tapped */
  html[data-solo="ai"] #ai-input{font-size:16px;line-height:20px;min-height:34px;padding:7px 12px;border:.5px solid rgba(235,235,245,.22);border-radius:18px;background:var(--ios-fill)}
  html[data-solo="ai"] .ai-send{width:30px;height:30px;margin:2px 0;background:var(--ios-blue)}
  html[data-solo="ai"] .ai-send .i{width:16px;height:16px;stroke-width:2.6}
  html[data-solo="ai"] .ai-note{display:none}
  html[data-solo="ai"] .ai-editbar,html[data-solo="ai"] .ai-tray,html[data-solo="ai"] .ai-slash{margin-left:10px;margin-right:10px;width:auto}
  html[data-solo="ai"] #toasts{left:12px;right:12px;bottom:calc(env(safe-area-inset-bottom) + 64px);align-items:center}
}
html[data-solo="ai"] .ai-signin{width:100%;height:40px;border-radius:10px;font-weight:600}
/* a guest's way back to the sign-in screen, right in the bar (the AI app has no desktop) */
html[data-solo="ai"] .ai-top #ai-signin-top{width:auto;min-width:0;padding:0 12px;font-size:14px;font-weight:600;color:#fff;background:#0a84ff;border-radius:15px}
html:not([data-solo="ai"]) #ai-signin-top{display:none}

/* ── code as files: cards in the chat, and the pane that opens them ── */
.ai-file{display:flex;align-items:center;gap:12px;margin:10px 0;padding:10px 12px;border:1px solid var(--border-2);border-radius:14px;background:var(--glass-2);cursor:pointer;transition:background .12s,border-color .12s;max-width:520px}
.ai-file:hover{background:var(--glass-3);border-color:rgba(var(--accent-rgb),.5)}
.ai-file.live{cursor:default;opacity:.85}
.ai-file-ic{flex:0 0 auto;width:40px;height:44px;border-radius:8px;display:grid;place-items:center;font:700 10px/1 ui-monospace,Consolas,monospace;letter-spacing:.04em;color:#fff;background:linear-gradient(160deg,rgba(var(--accent-rgb),.95),rgba(var(--accent-rgb),.55))}
.ai-file.live .ai-file-ic{animation:aiFilePulse 1.2s ease-in-out infinite}
.ai-file-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ai-file-t b{font-size:.92em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-file-t small{color:var(--text-3);font-size:.78em}
.ai-file-acts{display:flex;gap:6px;flex:0 0 auto}
.ai-file-acts button{height:30px;padding:0 11px;border-radius:9px;border:1px solid var(--border-2);background:var(--glass-2);color:var(--text);font-size:.8em;font-weight:600}
.ai-file-acts button:hover{background:var(--glass-3)}
.ai-file-acts .ai-f-run{background:rgba(var(--accent-rgb),.22);border-color:transparent}
@keyframes aiFilePulse{50%{opacity:.55}}
html[data-motion="off"] .ai-file.live .ai-file-ic,html[data-perf="on"] .ai-file.live .ai-file-ic{animation:none}
@media (prefers-reduced-motion:reduce){.ai-file.live .ai-file-ic{animation:none}}
.ai-codemode.on{background:rgba(var(--accent-rgb),.22);border-color:rgba(var(--accent-rgb),.6);color:var(--text)}

#ai-window.pane-open{grid-template-columns:248px minmax(0,1fr) minmax(360px,46vw)}
.ai-codepane{display:flex;flex-direction:column;min-width:0;min-height:0;border-left:1px solid var(--border);background:var(--bg0)}
.ai-codepane[hidden]{display:none}
.ai-cp-top{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--border)}
.ai-cp-t{flex:1;min-width:0;display:flex;flex-direction:column}
.ai-cp-t b{font-size:.95em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-cp-t small{color:var(--text-3);font-size:.75em}
.ai-cp-tabs{display:flex;padding:3px;border-radius:10px;background:var(--glass-2)}
.ai-cp-tabs button{padding:5px 12px;border-radius:8px;font-size:.82em;font-weight:600;color:var(--text-2)}
.ai-cp-tabs button.on{background:var(--glass-3);color:var(--text)}
.ai-cp-tabs button[hidden]{display:none}
.ai-cp-body{flex:1;min-height:0;position:relative}
.ai-cp-body pre{position:absolute;inset:0;margin:0;overflow:auto;padding:14px 16px;font:12.5px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--text);white-space:pre;tab-size:2}
.ai-cp-body iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#fff}
.ai-cp-body [hidden]{display:none}
.ai-cp-bar{display:flex;gap:8px;justify-content:flex-end;padding:10px 12px;border-top:1px solid var(--border)}
.ai-cp-bar [hidden]{display:none}
@media (max-width:900px){
  #ai-window.pane-open{grid-template-columns:minmax(0,1fr)}
  .ai-codepane{position:absolute;inset:0;z-index:8;border-left:0}
}
/* the iPhone layout: the pane is a full-screen sheet under the notch */
@media (max-width:600px){
  html[data-solo="ai"] .ai-codepane{padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);background:#000}
  html[data-solo="ai"] .ai-cp-top{min-height:44px;padding:4px 10px;border-bottom:.5px solid rgba(84,84,88,.6)}
  html[data-solo="ai"] .ai-cp-tabs{background:#1c1c1e}
  html[data-solo="ai"] .ai-cp-tabs button.on{background:#3a3a3c}
  html[data-solo="ai"] .ai-cp-bar{border-top:.5px solid rgba(84,84,88,.6)}
  html[data-solo="ai"] .ai-cp-bar .btn{flex:1 1 auto;height:36px;border-radius:10px;font-size:14px;white-space:nowrap;padding:0 10px}
  html[data-solo="ai"] .ai-cp-bar .btn.primary{background:#0a84ff}
  html[data-solo="ai"] .ai-file{background:#1c1c1e;border:0;border-radius:14px}
  html[data-solo="ai"] .ai-file-acts button{height:30px;border:0;background:#2c2c2e}
  html[data-solo="ai"] .ai-file-acts .ai-f-run{background:#0a84ff;color:#fff}
  html[data-solo="ai"] .ai-codemode.on{background:rgba(10,132,255,.2)}
}
/* with the pane open the chat column is narrow: the bar's buttons drop their words, and
   anything that still doesn't fit is clipped rather than spilling over the pane */
#ai-window.pane-open .ai-top{overflow:hidden;flex-wrap:nowrap}
#ai-window.pane-open .ai-cmp-btn span,#ai-window.pane-open #ai-ultra span:not(.ai-ultra-bolt){display:none}
#ai-window.pane-open #ai-custom-btn{font-size:0;gap:0;padding:0 9px}
#ai-window.pane-open #ai-custom-btn .i{width:16px;height:16px}
#ai-window.pane-open .ai-mp-btn{max-width:180px}
.ai-code-top{gap:6px}
.ai-code-run{margin-left:auto;padding:3px 9px;border-radius:6px;font-size:1em;font-weight:600;color:#fff;background:rgba(var(--accent-rgb),.55)}
.ai-code-run+.ai-copy{margin-left:0}
html[data-solo="ai"] .ai-code-run{background:#0a84ff}
/* files waiting to go, and the ones a sent message carried */
.ai-tray-file{position:relative;display:flex;align-items:center;gap:8px;height:64px;max-width:220px;padding:0 30px 0 8px;border-radius:12px;border:1px solid var(--border-2);background:var(--glass-3)}
.ai-tray-ext{flex:0 0 auto;width:34px;height:40px;border-radius:7px;display:grid;place-items:center;font:700 9px/1 ui-monospace,Consolas,monospace;color:#fff;background:linear-gradient(160deg,rgba(var(--accent-rgb),.95),rgba(var(--accent-rgb),.55))}
.ai-tray-n{min-width:0;display:flex;flex-direction:column}
.ai-tray-n b{font-size:.8em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-tray-n small{font-size:.7em;color:var(--text-3)}
.ai-tray-file .ai-tray-x{position:absolute;top:4px;right:4px}
.ai-sent-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ai-sent-file{padding:3px 9px;border-radius:99px;background:rgba(0,0,0,.25);font-size:.82em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}

/* ── owner tools: web search, talk mode, the status dot, folders, locked chats ── */
.ai-web.on,.ai-talk.on{color:var(--accent);background:rgba(var(--accent-rgb),.16);border-radius:10px}
.ai-talk.listening{animation:aiListen 1.3s ease-in-out infinite}
@keyframes aiListen{50%{box-shadow:0 0 0 6px rgba(var(--accent-rgb),.18)}}
html[data-motion="off"] .ai-talk.listening,html[data-perf="on"] .ai-talk.listening{animation:none}
@media (prefers-reduced-motion:reduce){.ai-talk.listening{animation:none}}
.ai-health{width:9px;height:9px;flex:0 0 auto;border-radius:50%;background:#71717a;cursor:help;box-shadow:0 0 0 3px rgba(113,113,122,.18)}
.ai-health[hidden]{display:none}
.ai-health[data-state="ok"]{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.2)}
.ai-health[data-state="slow"]{background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.2)}
.ai-health[data-state="down"]{background:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.2)}
.ai-folders{display:flex;flex-wrap:wrap;gap:6px}
.ai-folders[hidden]{display:none}
.ai-fchip{padding:4px 10px;border-radius:99px;border:1px solid var(--border);font-size:.78em;color:var(--text-2);background:var(--glass-2)}
.ai-fchip.on{color:var(--text);border-color:rgba(var(--accent-rgb),.6);background:rgba(var(--accent-rgb),.16)}
.ai-fold{width:28px;height:28px;display:grid;place-items:center;border-radius:7px;color:var(--text-3);opacity:0;flex:0 0 auto}
.ai-fold .i{width:14px;height:14px}
.ai-chat:hover .ai-fold{opacity:1}
.ai-chat.locked .ai-open{color:var(--text-3);font-style:italic}
.ai-c-owner{display:none}
html[data-owner="on"] .ai-c-owner{display:flex}
.ai-c-pinbtns{display:flex;gap:6px;flex:0 0 auto}
html[data-solo="ai"] .ai-fold{opacity:1}

/* ── ULTRACODE and Code mode switches ─────────
   Quiet when off, one deliberate motion when switched on: a single light that travels
   round the button's edge and along the message box, the icon drawing itself in, then a
   steady thin line in the mode's colour (amber for ULTRACODE, the accent for Code). */
@property --wos-ang{syntax:'<angle>';inherits:false;initial-value:0deg}
.ai-ultra{position:relative;gap:6px;font-weight:650;letter-spacing:.06em;font-size:.78em;isolation:isolate}
.ai-ultra .ai-ultra-bolt{display:inline-grid;place-items:center}
.ai-ultra .ai-ultra-bolt svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.ai-ultra.on{color:#fbbf24;background:#16120a;border-color:rgba(251,191,36,.55);box-shadow:inset 0 0 0 1px rgba(251,191,36,.12)}
.ai-ultra.on .ai-ultra-bolt svg{fill:rgba(251,191,36,.18)}
#ai-window.ultra .ai-compose{border-color:rgba(251,191,36,.55)}
#ai-codemode.on{color:var(--text);background:rgba(var(--accent-rgb),.14);border-color:rgba(var(--accent-rgb),.55)}
/* the moment it turns on */
.ai-ultra.ignite::before,#ai-codemode.ignite::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1.5px;pointer-events:none;
  background:conic-gradient(from var(--wos-ang),transparent 0 70%,var(--glow-c) 85%,transparent 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:wosTrace .85s cubic-bezier(.45,0,.2,1) forwards}
.ai-ultra.ignite{--glow-c:#fde68a}
#ai-codemode{position:relative}
#ai-codemode.ignite{--glow-c:rgba(var(--accent-rgb),1)}
.ai-ultra.ignite .ai-ultra-bolt svg path{stroke-dasharray:60;stroke-dashoffset:60;animation:wosDraw .6s .1s ease-out forwards}
#ai-codemode.ignite .i path{stroke-dasharray:24;stroke-dashoffset:24;animation:wosDraw .5s .05s ease-out forwards}
.ai-compose{position:relative}
#ai-window.ignite-ultra .ai-compose::after,#ai-window.ignite-code .ai-compose::after{content:"";position:absolute;left:18px;right:18px;top:-1px;height:1.5px;border-radius:2px;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--glow-c),transparent);transform-origin:left;animation:wosSweep .9s cubic-bezier(.45,0,.2,1) forwards}
#ai-window.ignite-ultra{--glow-c:#fbbf24}
#ai-window.ignite-code{--glow-c:rgba(var(--accent-rgb),1)}
@keyframes wosTrace{0%{--wos-ang:0deg;opacity:1}85%{opacity:1}100%{--wos-ang:360deg;opacity:0}}
@keyframes wosDraw{to{stroke-dashoffset:0}}
@keyframes wosSweep{0%{transform:scaleX(0);opacity:1}70%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}
html[data-motion="off"] .ignite::before,html[data-perf="on"] .ignite::before,html[data-motion="off"] #ai-window .ai-compose::after,html[data-perf="on"] #ai-window .ai-compose::after{display:none}
html[data-motion="off"] .ignite *,html[data-perf="on"] .ignite *{animation:none!important;stroke-dashoffset:0!important}
@media (prefers-reduced-motion:reduce){.ignite::before,#ai-window .ai-compose::after{display:none}.ignite *{animation:none!important;stroke-dashoffset:0!important}}
@media (max-width:600px){
  html[data-solo="ai"] #ai-ultra .ai-ultra-bolt svg{width:17px;height:17px}
  html[data-solo="ai"] #ai-ultra.on{background:#16120a;color:#fbbf24}
  html[data-solo="ai"] #ai-window.ultra #ai-input{border-color:rgba(251,191,36,.6)}
}
