.gclab-shell{display:grid;gap:1rem}.gclab-offline{align-self:center;max-width:370px;padding:.65rem .8rem;border:1px solid rgba(94,230,168,.22);border-radius:999px;color:#bff6db;font-size:.72rem;text-align:center}.gclab-machine{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.gclab-machine span,.gclab-machine small{color:var(--muted)}.gclab-workspace{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:1rem}.gclab-editor,.gclab-side>.panel{margin:0}.gclab-panel-head{display:flex;justify-content:space-between;gap:1rem;align-items:center;flex-wrap:wrap}.gclab-panel-head>div{display:flex;gap:.4rem;flex-wrap:wrap}.gclab-file-button{position:relative;overflow:hidden}.gclab-file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.gclab-editor textarea{min-height:460px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.82rem;line-height:1.5;tab-size:2}.gclab-save-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.7rem;align-items:end;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line-soft)}.gclab-save-form label{margin:0}.gclab-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.gclab-stats>div{padding:.7rem;border:1px solid var(--line-soft);border-radius:10px;background:#0d151d}.gclab-stats span{display:block;color:var(--muted);font-size:.7rem}.gclab-stats strong{display:block;margin-top:.25rem;font-size:.92rem}.gclab-warning-list{display:grid;gap:.5rem}.gclab-warning{padding:.65rem .7rem;border-radius:9px;border:1px solid rgba(255,207,112,.24);background:rgba(255,207,112,.07);font-size:.78rem;line-height:1.45}.gclab-warning.danger{border-color:rgba(255,127,134,.3);background:rgba(255,127,134,.07)}.gclab-preview-panel{margin:0}.gclab-preview{height:min(58vw,560px);min-height:340px;border:1px solid var(--line);border-radius:12px;background:#080d12;overflow:hidden}.gclab-preview svg{width:100%;height:100%;display:block}.gclab-preview .grid-line{stroke:rgba(255,255,255,.045);stroke-width:1;vector-effect:non-scaling-stroke}.gclab-preview .travel-path{fill:none;stroke:#60768d;stroke-width:1.4;stroke-dasharray:5 5;vector-effect:non-scaling-stroke}.gclab-preview .powered-path{fill:none;stroke:#5ee6a8;stroke-width:2;vector-effect:non-scaling-stroke}.gclab-preview .machine-boundary{fill:none;stroke:#76b7ff;stroke-width:1.5;stroke-dasharray:8 6;vector-effect:non-scaling-stroke}.gclab-legend span:before{content:'';display:inline-block;width:18px;height:2px;margin-right:.4rem;vertical-align:middle}.gclab-legend .powered:before{background:#5ee6a8}.gclab-legend .travel:before{background:#60768d}.gclab-bottom-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,.7fr);gap:1rem}.gclab-bottom-grid>.panel{margin:0}.gclab-ref{display:grid;gap:.2rem}.gclab-ref>div{display:grid;grid-template-columns:86px 210px minmax(0,1fr);gap:.7rem;padding:.6rem 0;border-bottom:1px solid var(--line-soft)}.gclab-ref span{color:var(--muted);font-size:.78rem;line-height:1.45}.gclab-snippets{display:grid;gap:.45rem}.gclab-snippets>div{display:flex;justify-content:space-between;gap:.6rem;padding:.65rem;border:1px solid var(--line-soft);border-radius:10px}.gclab-snippets a{display:grid;gap:.15rem}.gclab-snippets small{color:var(--muted)}@media(max-width:980px){.gclab-workspace,.gclab-bottom-grid{grid-template-columns:1fr}.gclab-preview{height:480px}}@media(max-width:620px){.gclab-save-form{grid-template-columns:1fr}.gclab-ref>div{grid-template-columns:70px minmax(0,1fr)}.gclab-ref span{grid-column:1/-1}.gclab-preview{height:360px;min-height:300px}}
/* 0.1.1 integration */
.gclab-related{display:flex;justify-content:space-between;align-items:center;gap:1rem}.gclab-related p{margin:.2rem 0;color:var(--muted)}.gclab-related>div:last-child{display:flex;gap:.5rem;flex-wrap:wrap}@media(max-width:700px){.gclab-related{align-items:flex-start;flex-direction:column}.gclab-related .button{width:100%}}

/* 0.2.0 preflight + modal inspector */
.gclab-analysis-grid{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(0,2fr);gap:18px;margin:18px 0}.gclab-panel-head>span{color:var(--muted,#9ca3af);font-size:.86rem}.gclab-preflight{display:grid;gap:9px}.gclab-preflight article{display:grid;grid-template-columns:10px 1fr;gap:10px;padding:10px 11px;border-radius:11px;background:rgba(255,255,255,.025)}.gclab-preflight i{width:9px;height:9px;margin-top:5px;border-radius:50%;background:#60a5fa}.gclab-preflight .preflight-ok i{background:#34d399}.gclab-preflight .preflight-warn i{background:#fbbf24}.gclab-inspector-wrap{overflow:auto;max-height:500px}.gclab-inspector{width:100%;border-collapse:collapse;font-size:.82rem;white-space:nowrap}.gclab-inspector th,.gclab-inspector td{padding:8px 9px;border-bottom:1px solid var(--line,#303746);text-align:left;vertical-align:top}.gclab-inspector th{position:sticky;top:0;background:var(--panel,#151a22);z-index:2}.gclab-inspector code{white-space:pre-wrap;min-width:180px;display:block}.gclab-preview svg path.powered{stroke:currentColor;stroke-width:2}.gclab-preview svg path.travel{stroke:currentColor;stroke-width:1;stroke-dasharray:5 5;opacity:.38}@media(max-width:980px){.gclab-analysis-grid{grid-template-columns:1fr}}

/* 0.3.0 offline test generator */
.gclab-generator{display:grid;gap:.9rem}.gclab-generator .gclab-panel-head>div:first-child{display:grid;gap:.25rem}.gclab-generator .gclab-panel-head span{color:var(--muted)}.gclab-generator-badge{width:max-content;padding:.3rem .55rem;border:1px solid rgba(94,230,168,.25);border-radius:999px;color:#bff6db!important;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em}.gclab-generator-grid{display:grid;grid-template-columns:1.3fr repeat(6,minmax(90px,.65fr)) auto;gap:.7rem;align-items:end}.gclab-generator-grid label{display:grid;gap:.35rem}.gclab-generator-grid label>span{font-size:.72rem;color:var(--muted)}.gclab-generator-grid input,.gclab-generator-grid select{width:100%;min-height:42px}.gclab-generator-note{margin:0;line-height:1.5}@media(max-width:1100px){.gclab-generator-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:680px){.gclab-generator-grid{grid-template-columns:1fr 1fr}.gclab-generator-grid .button{width:100%}}@media(max-width:430px){.gclab-generator-grid{grid-template-columns:1fr}}
