/* Bosigo Omega v11 Stage 4 — AI + Code Lab */
:root{
  --compute-cyan:#72e6f4;--compute-blue:#6b8cff;--compute-violet:#a889ff;--compute-green:#7ce3a7;--compute-danger:#ff8f9a;
  --compute-surface:rgba(10,17,27,.88);--compute-surface-strong:rgba(13,22,35,.96);--compute-border:rgba(138,166,205,.16);
}
.lab-workspace-v4{padding:0!important;background:radial-gradient(circle at 72% 18%,rgba(154,125,255,.05),transparent 24%),radial-gradient(circle at 22% 72%,rgba(114,230,244,.035),transparent 26%)}
.lab-workspace-v4__header{position:sticky;z-index:12;top:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:end;padding:16px 18px 12px;border-bottom:1px solid var(--lab-line);background:rgba(5,9,14,.92);backdrop-filter:blur(22px)}
.lab-workspace-v4__header h1{font-size:clamp(1.22rem,2vw,1.75rem);line-height:1.05}.lab-workspace-v4__header p:not(.lab-eyebrow){max-width:66ch;margin:6px 0 0;color:var(--lab-muted);font-size:.68rem;line-height:1.48}
.lab-compute-tabs{display:flex;gap:5px;align-items:center;padding:4px;border:1px solid var(--lab-line);border-radius:13px;background:rgba(255,255,255,.018)}
.lab-compute-tabs button{min-height:38px;padding:7px 10px;border:0;border-radius:9px;background:transparent;color:var(--lab-muted-2);font:inherit;font-size:.62rem;font-weight:820;cursor:pointer;white-space:nowrap}.lab-compute-tabs button span{color:var(--lab-cyan);margin-right:3px;font-weight:900}.lab-compute-tabs button[aria-selected="true"]{color:var(--lab-ink);background:linear-gradient(110deg,rgba(114,230,244,.1),rgba(91,130,255,.075));box-shadow:inset 0 0 0 1px rgba(114,230,244,.12)}
.lab-compute-pane{padding:14px 18px 20px}.lab-compute-pane[hidden]{display:none}.lab-compute-card{min-width:0;border:1px solid var(--compute-border);border-radius:16px;background:linear-gradient(145deg,var(--compute-surface),rgba(7,12,19,.79));box-shadow:0 18px 54px rgba(0,0,0,.14);overflow:hidden}.lab-compute-card__head{min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 13px;border-bottom:1px solid var(--lab-line);background:rgba(255,255,255,.012)}.lab-compute-card__head>div:first-child{min-width:0}.lab-compute-card__head strong{display:block;margin-top:2px;font-size:.76rem}.lab-kicker{display:block;color:var(--lab-cyan);font-size:.54rem;font-weight:880;letter-spacing:.11em;text-transform:uppercase}
.lab-gateway-badge,.lab-local-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;border:1px solid var(--lab-line);border-radius:999px;color:var(--lab-muted-2);font-size:.55rem;font-weight:780;white-space:nowrap}.lab-gateway-badge i{width:6px;height:6px;border-radius:50%;background:var(--lab-gold);box-shadow:0 0 9px rgba(255,212,0,.3)}.lab-gateway-badge.is-ready{border-color:rgba(124,227,167,.25);color:var(--compute-green)}.lab-gateway-badge.is-ready i{background:var(--compute-green);box-shadow:0 0 10px rgba(124,227,167,.45)}.lab-gateway-badge.is-offline{border-color:rgba(255,143,154,.18);color:#d9a0a6}.lab-gateway-badge.is-offline i{background:var(--compute-danger);box-shadow:none}.lab-local-badge{color:var(--compute-green);border-color:rgba(124,227,167,.18)}
/* AI Studio */
.lab-ai-studio{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(240px,.62fr);gap:12px}.lab-chat-card{display:flex;flex-direction:column;min-height:590px}.lab-context-strip{display:flex;gap:6px;flex-wrap:wrap;padding:9px 12px;border-bottom:1px solid var(--lab-line);background:rgba(114,230,244,.016)}.lab-context-chip{display:inline-flex;align-items:center;gap:4px;max-width:260px;padding:4px 7px;border:1px solid var(--lab-line);border-radius:999px;color:var(--lab-muted);font-size:.55rem}.lab-context-chip strong{color:var(--lab-ink);font-size:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lab-context-chip span{color:var(--lab-muted-2);text-transform:uppercase;font-weight:850;letter-spacing:.06em}
.lab-chat-log{flex:1;min-height:260px;max-height:430px;padding:14px;overflow:auto;scrollbar-width:thin}.lab-chat-message{display:grid;grid-template-columns:29px minmax(0,1fr);gap:9px;align-items:start;margin-bottom:12px}.lab-chat-message>span{width:29px;height:29px;display:grid;place-items:center;border:1px solid var(--lab-line);border-radius:9px;background:rgba(255,255,255,.025);color:var(--lab-cyan);font-size:.55rem;font-weight:900}.lab-chat-message>div{max-width:88%;padding:10px 11px;border:1px solid var(--lab-line);border-radius:5px 13px 13px 13px;background:rgba(255,255,255,.024)}.lab-chat-message strong{display:block;font-size:.71rem}.lab-chat-message p{margin:5px 0 0;color:var(--lab-muted);font-size:.66rem;line-height:1.55;white-space:pre-wrap}.lab-chat-message--user{grid-template-columns:minmax(0,1fr) 29px}.lab-chat-message--user>span{grid-column:2;color:var(--lab-gold)}.lab-chat-message--user>div{grid-column:1;grid-row:1;margin-left:auto;border-radius:13px 5px 13px 13px;background:rgba(91,130,255,.07)}.lab-chat-message--thinking>div{opacity:.82}.lab-thinking-dots{display:inline-flex;gap:4px}.lab-thinking-dots i{width:5px;height:5px;border-radius:50%;background:var(--lab-cyan);animation:lab-thinking 1s infinite ease-in-out}.lab-thinking-dots i:nth-child(2){animation-delay:.15s}.lab-thinking-dots i:nth-child(3){animation-delay:.3s}@keyframes lab-thinking{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}
.lab-ai-quick{display:flex;gap:5px;flex-wrap:wrap;padding:0 12px 10px}.lab-ai-quick button{min-height:32px;padding:5px 8px;border:1px solid var(--lab-line);border-radius:999px;background:rgba(255,255,255,.015);color:var(--lab-muted);font:inherit;font-size:.55rem;font-weight:730;cursor:pointer}.lab-ai-quick button:hover,.lab-ai-quick button:focus-visible{color:var(--lab-ink);border-color:var(--lab-line-strong);background:rgba(114,230,244,.04)}
.lab-ai-composer{margin:0 12px 12px;padding:10px;border:1px solid rgba(154,125,255,.16);border-radius:13px;background:rgba(154,125,255,.025)}.lab-ai-composer label{display:block;margin-bottom:6px;color:var(--lab-muted);font-size:.58rem;font-weight:800}.lab-ai-composer textarea{display:block;width:100%;resize:vertical;min-height:76px;max-height:180px;border:0;outline:0;background:transparent;color:var(--lab-ink);font:inherit;font-size:.68rem;line-height:1.5}.lab-ai-composer textarea::placeholder{color:#68778a}.lab-ai-composer__foot{display:flex;gap:12px;justify-content:space-between;align-items:center;padding-top:8px;border-top:1px solid var(--lab-line)}.lab-ai-composer__foot>span{max-width:70%;color:var(--lab-muted-2);font-size:.54rem;line-height:1.4}.lab-ai-composer__foot button{min-height:36px;padding:7px 11px;border:1px solid rgba(154,125,255,.3);border-radius:9px;background:linear-gradient(110deg,rgba(154,125,255,.14),rgba(91,130,255,.08));color:var(--lab-ink);font:inherit;font-size:.62rem;font-weight:850;cursor:pointer}.lab-ai-composer__foot button:disabled{opacity:.45;cursor:wait}
.lab-ai-control-card{padding-bottom:12px}.lab-ai-controls{margin:0;padding:0 13px}.lab-ai-controls div{padding:10px 0;border-bottom:1px solid var(--lab-line)}.lab-ai-controls dt{color:var(--lab-muted-2);font-size:.52rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.lab-ai-controls dd{margin:4px 0 0;color:var(--lab-muted);font-size:.64rem;line-height:1.42}.lab-permission{display:inline-flex;padding:4px 6px;border:1px solid rgba(124,227,167,.2);border-radius:999px;color:var(--compute-green);font-size:.54rem;font-weight:820}.lab-control-note{margin:12px 13px;padding:10px;border:1px solid rgba(255,212,0,.12);border-radius:11px;background:rgba(255,212,0,.02)}.lab-control-note strong{color:var(--lab-gold);font-size:.62rem}.lab-control-note p{margin:5px 0 0;color:var(--lab-muted-2);font-size:.58rem;line-height:1.5}.lab-secondary-action{display:block;width:calc(100% - 26px);min-height:40px;margin:0 13px;border:1px solid var(--lab-line-strong);border-radius:10px;background:rgba(114,230,244,.04);color:var(--lab-ink);font:inherit;font-size:.61rem;font-weight:820;cursor:pointer}
/* Code Lab */
.lab-code-lab{display:grid;grid-template-columns:minmax(165px,.34fr) minmax(390px,1.25fr) minmax(230px,.55fr);gap:10px;min-height:610px}.lab-file-panel,.lab-console-panel,.lab-editor-panel{min-height:0}.lab-file-panel{display:flex;flex-direction:column}.lab-file-list{padding:8px;display:grid;gap:3px;overflow:auto}.lab-file-item{width:100%;display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:6px;padding:7px 8px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--lab-muted);font:inherit;text-align:left;cursor:pointer}.lab-file-item::before{content:attr(data-ext);display:grid;place-items:center;width:22px;height:22px;border:1px solid var(--lab-line);border-radius:6px;color:var(--lab-cyan);font-size:.48rem;font-weight:900;text-transform:uppercase}.lab-file-item strong{font-size:.6rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lab-file-item:hover,.lab-file-item:focus-visible{background:rgba(255,255,255,.025);color:var(--lab-ink)}.lab-file-item.is-active{border-color:var(--lab-line);background:rgba(114,230,244,.045);color:var(--lab-ink)}.lab-file-item.is-dirty strong::after{content:' •';color:var(--lab-gold)}.lab-file-panel__foot{margin-top:auto;padding:10px;border-top:1px solid var(--lab-line)}.lab-file-panel__foot button{border:0;background:transparent;color:var(--lab-muted);font:inherit;font-size:.56rem;font-weight:800;cursor:pointer;padding:0}.lab-file-panel__foot small{display:block;margin-top:5px;color:var(--lab-muted-2);font-size:.5rem;line-height:1.35}
.lab-editor-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto}.lab-editor-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;padding:9px 11px;border-bottom:1px solid var(--lab-line)}.lab-editor-head>div:first-child{min-width:0}.lab-editor-head span{display:block;color:var(--lab-cyan);font-size:.52rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.lab-editor-head strong{display:block;margin-top:3px;font:700 .67rem ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lab-editor-actions{display:flex;gap:5px}.lab-editor-actions button,.lab-console-panel .lab-compute-card__head button{min-height:33px;padding:5px 8px;border:1px solid var(--lab-line);border-radius:8px;background:rgba(255,255,255,.02);color:var(--lab-muted);font:inherit;font-size:.55rem;font-weight:800;cursor:pointer}.lab-editor-actions button:hover,.lab-editor-actions button:focus-visible{color:var(--lab-ink);border-color:var(--lab-line-strong)}.lab-editor-actions .lab-run-button{border-color:rgba(124,227,167,.25);background:rgba(124,227,167,.07);color:var(--compute-green)}.lab-editor-actions .lab-run-button:disabled{opacity:.4;cursor:not-allowed}
.lab-editor-shell{position:relative;display:grid;grid-template-columns:38px minmax(0,1fr);min-height:420px;background:#050910}.lab-editor-lines{padding:12px 7px 20px;border-right:1px solid rgba(138,166,205,.09);color:#526071;font:500 .64rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-align:right;white-space:pre;user-select:none;overflow:hidden}.lab-editor-shell textarea{width:100%;height:100%;min-height:420px;resize:none;border:0;outline:0;padding:12px 14px 20px;background:transparent;color:#dce7f4;font:500 .67rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;tab-size:2;white-space:pre;overflow:auto}.lab-code-boundary{display:flex;gap:5px;flex-wrap:wrap;padding:8px 10px;border-top:1px solid var(--lab-line);background:rgba(124,227,167,.015)}.lab-code-boundary span{padding:3px 6px;border:1px solid rgba(124,227,167,.11);border-radius:999px;color:#7f9b8a;font-size:.49rem;font-weight:760}
.lab-console-panel{display:flex;flex-direction:column}.lab-console{flex:1;min-height:270px;margin:0;padding:11px;overflow:auto;background:#03070b;color:#c3d1df;font:500 .59rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-word}.lab-console-line{display:block;margin-bottom:4px}.lab-console-line--error{color:#ff9ca5}.lab-console-line--success{color:var(--compute-green)}.lab-console-line--system,.lab-console-muted{color:#657486}.lab-code-ai-actions{display:grid;gap:6px;padding:9px;border-top:1px solid var(--lab-line)}.lab-code-ai-actions button{display:grid;grid-template-columns:26px minmax(0,1fr);column-gap:7px;padding:8px;border:1px solid var(--lab-line);border-radius:10px;background:rgba(255,255,255,.015);color:var(--lab-muted);font:inherit;text-align:left;cursor:pointer}.lab-code-ai-actions button>span{grid-row:1/3;display:grid;place-items:center;width:26px;height:26px;border:1px solid rgba(154,125,255,.18);border-radius:8px;color:var(--lab-violet)}.lab-code-ai-actions strong{font-size:.58rem}.lab-code-ai-actions small{color:var(--lab-muted-2);font-size:.5rem;line-height:1.35}.lab-code-ai-actions button:hover,.lab-code-ai-actions button:focus-visible{border-color:rgba(154,125,255,.28);color:var(--lab-ink)}
/* Image Lab */
.lab-image-lab{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(380px,1.25fr);gap:12px;min-height:600px}.lab-image-compose form{padding:14px}.lab-image-compose form>label{display:block;margin-bottom:7px;color:var(--lab-muted);font-size:.6rem;font-weight:800}.lab-image-compose textarea{width:100%;min-height:145px;resize:vertical;padding:11px;border:1px solid var(--lab-line);border-radius:11px;background:rgba(0,0,0,.22);color:var(--lab-ink);font:inherit;font-size:.67rem;line-height:1.5;outline:0}.lab-image-compose textarea:focus{border-color:var(--lab-line-strong);box-shadow:0 0 0 2px rgba(114,230,244,.055)}.lab-image-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.lab-image-options label{color:var(--lab-muted-2);font-size:.54rem;font-weight:800}.lab-image-options select{display:block;width:100%;min-height:38px;margin-top:5px;padding:6px 8px;border:1px solid var(--lab-line);border-radius:9px;background:#0a1019;color:var(--lab-ink);font:inherit;font-size:.6rem}.lab-image-actions{display:flex;justify-content:space-between;gap:8px;margin-top:12px}.lab-image-actions button{min-height:39px;padding:7px 10px;border:1px solid var(--lab-line);border-radius:9px;background:rgba(255,255,255,.02);color:var(--lab-muted);font:inherit;font-size:.59rem;font-weight:820;cursor:pointer}.lab-image-actions .lab-generate-button{border-color:rgba(154,125,255,.25);background:linear-gradient(110deg,rgba(154,125,255,.12),rgba(91,130,255,.08));color:var(--lab-ink)}.lab-image-actions button:disabled{opacity:.45;cursor:wait}.lab-image-note{margin:0;padding:0 14px 14px;color:var(--lab-muted-2);font-size:.54rem;line-height:1.45}.lab-image-output{display:grid;grid-template-rows:auto minmax(0,1fr) auto}.lab-image-output .lab-compute-card__head>span{color:var(--lab-muted-2);font-size:.54rem}.lab-image-canvas{min-height:430px;display:grid;place-items:center;padding:14px;background:radial-gradient(circle at 50% 45%,rgba(91,130,255,.06),transparent 38%),#04080d}.lab-image-placeholder{text-align:center;max-width:340px;color:var(--lab-muted-2)}.lab-image-placeholder>span{display:grid;place-items:center;width:72px;height:72px;margin:0 auto 14px;border:1px solid rgba(154,125,255,.2);border-radius:22px;color:var(--lab-violet);font-size:1.5rem;box-shadow:0 0 38px rgba(154,125,255,.08)}.lab-image-placeholder strong{display:block;color:var(--lab-muted);font-size:.76rem}.lab-image-placeholder p{margin:6px 0 0;font-size:.59rem;line-height:1.5}.lab-image-canvas img{display:block;max-width:100%;max-height:520px;border-radius:12px;box-shadow:0 18px 50px rgba(0,0,0,.38)}.lab-image-loading{display:grid;gap:10px;place-items:center;text-align:center;color:var(--lab-muted)}.lab-image-loading i{width:38px;height:38px;border:2px solid rgba(114,230,244,.12);border-top-color:var(--lab-cyan);border-radius:50%;animation:lab-spin 1s linear infinite}@keyframes lab-spin{to{transform:rotate(360deg)}}.lab-image-loading span{font-size:.62rem}.lab-image-output__foot{display:flex;gap:7px;justify-content:flex-end;padding:9px 11px;border-top:1px solid var(--lab-line)}.lab-image-output__foot button{min-height:35px;padding:6px 9px;border:1px solid var(--lab-line);border-radius:8px;background:rgba(255,255,255,.02);color:var(--lab-muted);font:inherit;font-size:.55rem;font-weight:800;cursor:pointer}
/* Generic module fallback */
.lab-module-workspace-v4{max-width:980px;margin:0 auto}.lab-module-stage4-note{margin-top:15px;padding:10px;border:1px solid var(--lab-line);border-radius:11px;color:var(--lab-muted-2);font-size:.6rem;line-height:1.5;background:rgba(255,255,255,.015)}.lab-module-stage4-note strong{color:var(--lab-cyan)}
/* Gateway state */
html[data-ai-state="ready"] [data-ai-gateway-status]::before{content:''}html[data-ai-state="offline"] .lab-header__actions .lab-status-chip i{background:var(--compute-danger);box-shadow:none}html[data-ai-state="ready"] .lab-header__actions .lab-status-chip i{background:var(--compute-green);box-shadow:0 0 10px rgba(124,227,167,.45)}
/* Focus */
.lab-compute-tabs button:focus-visible,.lab-ai-quick button:focus-visible,.lab-ai-composer button:focus-visible,.lab-ai-composer textarea:focus-visible,.lab-secondary-action:focus-visible,.lab-file-item:focus-visible,.lab-editor-actions button:focus-visible,.lab-editor-shell textarea:focus-visible,.lab-code-ai-actions button:focus-visible,.lab-image-compose textarea:focus-visible,.lab-image-compose select:focus-visible,.lab-image-actions button:focus-visible,.lab-image-output__foot button:focus-visible{outline:2px solid var(--lab-cyan);outline-offset:2px}
@media(max-width:1260px){.lab-code-lab{grid-template-columns:170px minmax(360px,1fr);grid-template-areas:'files editor' 'console console'}.lab-file-panel{grid-area:files}.lab-editor-panel{grid-area:editor}.lab-console-panel{grid-area:console;min-height:260px}.lab-console{min-height:170px}.lab-code-ai-actions{grid-template-columns:1fr 1fr}}
@media(max-width:1080px){.lab-ai-studio{grid-template-columns:1fr}.lab-ai-control-card{display:grid;grid-template-columns:1fr 1fr;align-items:start}.lab-ai-control-card .lab-compute-card__head{grid-column:1/-1}.lab-ai-controls{display:grid;grid-template-columns:1fr 1fr}.lab-ai-controls div:nth-child(odd){padding-right:10px}.lab-control-note{margin-bottom:0}.lab-secondary-action{align-self:center}.lab-image-lab{grid-template-columns:1fr}.lab-image-canvas{min-height:360px}}
@media(max-width:940px){.lab-workspace-v4__header{position:relative;grid-template-columns:1fr;gap:10px;padding:12px}.lab-compute-tabs{overflow:auto;justify-content:flex-start}.lab-compute-tabs button{flex:0 0 auto}.lab-compute-pane{padding:10px 12px 18px}.lab-chat-card{min-height:520px}.lab-code-lab{display:grid;grid-template-columns:1fr;grid-template-areas:'files' 'editor' 'console';min-height:auto}.lab-file-list{max-height:150px}.lab-editor-shell,.lab-editor-shell textarea{min-height:360px}.lab-image-lab{min-height:auto}.lab-image-canvas{min-height:330px}.lab-workspace.lab-view{overflow:auto}}
@media(max-width:620px){.lab-workspace-v4__header h1{font-size:1.22rem}.lab-workspace-v4__header p:not(.lab-eyebrow){font-size:.62rem}.lab-compute-tabs{margin-inline:-2px}.lab-compute-tabs button{min-height:40px;padding-inline:9px}.lab-compute-pane{padding:9px}.lab-compute-card{border-radius:13px}.lab-ai-studio{gap:8px}.lab-chat-card{min-height:500px}.lab-chat-log{max-height:none;min-height:220px}.lab-chat-message>div{max-width:96%}.lab-ai-quick{overflow-x:auto;flex-wrap:nowrap}.lab-ai-quick button{flex:0 0 auto}.lab-ai-composer__foot{align-items:flex-end}.lab-ai-composer__foot>span{max-width:62%}.lab-ai-control-card{display:block}.lab-ai-controls{display:block}.lab-image-options{grid-template-columns:1fr}.lab-image-actions{display:grid;grid-template-columns:1fr}.lab-image-actions button{width:100%}.lab-editor-head{align-items:flex-start;flex-direction:column}.lab-editor-actions{width:100%;display:grid;grid-template-columns:1fr 1fr 1fr}.lab-editor-actions button{min-height:40px}.lab-editor-shell{grid-template-columns:31px minmax(0,1fr)}.lab-editor-lines{padding-inline:4px}.lab-editor-shell textarea{padding-inline:9px;font-size:.62rem}.lab-code-ai-actions{grid-template-columns:1fr}.lab-image-canvas{min-height:270px}.lab-image-output__foot{display:grid;grid-template-columns:1fr}.lab-image-output__foot button{min-height:40px}}
@media(prefers-reduced-motion:reduce){.lab-thinking-dots i,.lab-image-loading i{animation:none!important}}
html.lab-motion-paused .lab-thinking-dots i,html.lab-motion-paused .lab-image-loading i{animation-play-state:paused!important}
