.py-lab{padding:28px 24px 48px}.py-heading{display:flex;align-items:center;gap:14px;margin-bottom:22px}.py-heading h2{margin:0;font-size:24px}.py-heading p{margin:2px 0;color:#8c9caa;font-size:12px}.py-emblem{display:grid;place-items:center;width:44px;height:44px;border-radius:10px;color:#f9db6b;background:linear-gradient(135deg,#294e6d,#132837);font:700 19px var(--mono)}.py-local{margin-left:auto;color:#6ec4a0;font-size:11px}
.py-ide{background:#1e2028;border:1px solid #383c48;border-radius:10px;overflow:hidden;box-shadow:0 22px 60px #0005;color:#cdd1de}.py-ide button,.py-lab dialog button{font:12px Inter,sans-serif;border:1px solid transparent;background:transparent;color:inherit;border-radius:5px;padding:7px 10px;cursor:pointer}.py-ide button:hover{background:#373b48}.py-ide button:focus-visible,.py-lab dialog button:focus-visible{outline:2px solid #779aff;outline-offset:-2px}.py-ide button:disabled{opacity:.4;cursor:default}.py-spacer{flex:1}.py-top{display:flex;gap:14px;align-items:center;padding:10px 16px;background:#2c2e39;border-bottom:1px solid #151720;font-size:12px}.py-top strong{font-size:13px}.py-top strong span,.py-branch{color:#888fa2}.py-top .py-run{background:#274c3c;color:#8be5aa}.py-tools{display:flex;gap:4px;padding:5px 10px;border-bottom:1px solid #383b46;background:#262832}.py-layout{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:640px}.py-project{background:#252731;border-right:1px solid #393c47;padding:0 10px;position:relative}.py-project h3{display:flex;justify-content:space-between;font-size:12px;font-weight:500;padding:12px 4px;margin:0;color:#a7adbd}.py-project h3 span{color:#7b8297}.py-folder{font:12px var(--mono);margin:14px 0;color:#bdc5d5}#pyFiles{display:flex;flex-direction:column;gap:3px}#pyFiles button{text-align:left;padding-left:24px;border-radius:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#pyFiles button:before{content:'Py';color:#ead074;font-size:10px;margin-right:10px}#pyFiles button.active{background:#35446b}.py-project-note{margin-top:36px;font-size:10px;color:#838a9c;line-height:1.8;padding:8px}.py-work{min-width:0;display:flex;flex-direction:column}.py-tabs{display:flex;overflow:auto;min-height:39px;background:#252731;border-bottom:1px solid #383b46}.py-tabs button{border-radius:0;white-space:nowrap;padding:11px 20px;border-right:1px solid #383b46}.py-tabs button.active{background:#1e2028;border-bottom:2px solid #7698fc;color:#fff}.py-breadcrumb{padding:9px 18px;font-size:10px;color:#8d94a9;display:flex;gap:12px}.py-editor-wrap{display:flex;height:370px;min-height:200px;resize:vertical;overflow:hidden}#pyLines{width:48px;flex:0 0 48px;text-align:right;color:#656c80;padding:12px 10px;margin:0;overflow:hidden;border-right:1px solid #292d38}.py-code{position:relative;flex:1;min-width:0}#pyEditor,#pyHighlight,#pyLines{font:13px/1.8 'JetBrains Mono',monospace;tab-size:4}#pyEditor,#pyHighlight{position:absolute;inset:0;white-space:pre;margin:0;border:0;padding:12px 18px;width:100%;height:100%;overflow:auto;letter-spacing:normal}#pyEditor{background:transparent;color:transparent;caret-color:#fff;resize:none;outline:none;-webkit-text-fill-color:transparent}#pyEditor::selection{background:#557ac366}#pyHighlight{pointer-events:none;color:#cbd1df}.py-keyword{color:#d599eb}.py-string{color:#a5c88c}.py-comment{color:#778196}.py-number{color:#73b9d1}.py-console-head{display:flex;align-items:center;gap:16px;background:#272a34;border-top:1px solid #3b3e4c;border-bottom:1px solid #3b3e4c;padding:5px 14px;font-size:11px}.py-console-head strong{color:#c8cfdf;font-weight:500}#pyStatus{color:#8dabda}#pyOutput{margin:0;padding:18px 22px;font:12px/1.8 var(--mono);white-space:pre-wrap;overflow:auto;overflow-wrap:anywhere;min-height:170px;max-height:300px;color:#bdd4bc;background:#1b1d25}.py-input{padding:10px 20px;border-top:1px solid #303440;font-size:11px;color:#9ca8bf}.py-input summary{cursor:pointer}.py-input label{display:block;margin:10px 0}.py-input textarea{width:100%;background:#171922;border:1px solid #43495c;color:#d9dfea;padding:8px;font:12px var(--mono)}.py-footer{display:flex;gap:22px;padding:7px 14px;border-top:1px solid #3c4050;background:#272a34;color:#9da7bd;font-size:10px}.py-footer span:first-child{margin-right:auto}.py-lab dialog{max-width:min(560px,90vw);background:#242936;color:#d3dceb;border:1px solid #4b5770;border-radius:10px;padding:24px;box-shadow:0 20px 80px #000a}.py-lab dialog::backdrop{background:#0008}.py-lab dialog p{font-size:13px;color:#a8b7cd;line-height:1.8}.py-lab dialog input{display:block;padding:10px;margin:10px 0;width:100%;background:#171e2b;color:#fff;border:1px solid #596d87}.py-lab dialog button{background:#374c70}.py-lab .py-close{float:right}
@media(max-width:800px){.py-lab{padding:20px 10px}.py-layout{grid-template-columns:145px minmax(0,1fr)}.py-top{gap:7px;flex-wrap:wrap}.py-branch{display:none}.py-tools{flex-wrap:wrap}.py-project{padding:0 5px}.py-folder{font-size:10px}#pyFiles button{padding-left:6px;font-size:11px}.py-heading p{font-size:11px}.py-local{display:none}.py-footer{gap:10px}}
@media(max-width:520px){.py-layout{grid-template-columns:minmax(0,1fr)}.py-project{display:none}.py-top strong{width:100%}.py-editor-wrap{height:330px}.py-tools button{font-size:11px;padding:7px}.py-footer span:last-child{display:none}}
@media(max-width:680px){.topbar{grid-template-columns:minmax(0,1fr);grid-template-rows:78px 50px 48px}.topbar>.brand{grid-row:1;grid-column:1;padding:0;justify-self:center}.topbar>.qb-language-bar{grid-row:2;grid-column:1}.topbar>.topnav{grid-row:3;grid-column:1;min-width:0;overflow-x:auto}.topbar>.profile-pill{display:none}}

/* Black coding and input/output surfaces. */
.py-code,#pyHighlight,#pyLines,#pyOutput,.py-input textarea{background:#000}
#pyEditor{background:transparent}

.py-language-symbol{display:block;width:44px;height:44px;object-fit:contain;flex:0 0 44px}

/* IDE-style play control and on-demand console input. */
.py-top .py-run{display:grid;place-items:center;background:transparent;color:#59bf72;width:32px;height:32px;padding:5px}
.py-top .py-run:hover{background:#344039;color:#72d68b}
.py-run svg{width:22px;height:22px;fill:currentColor}
.py-console-input{display:flex;align-items:center;gap:8px;background:#000;color:#cdd1de;padding:8px 22px 16px;font:12px/1.8 var(--mono);flex-wrap:wrap}
.py-console-input[hidden]{display:none}
.py-console-input input{flex:1;min-width:100px;max-width:100%;background:#000;border:0;border-bottom:1px solid #7383a0;color:#fff;font:inherit;outline-offset:2px;padding:4px}
.py-console-input button{color:#96b6dc;border:1px solid #3a465b}


/* Console prompts follow output in the same scrolling text surface. */
.py-console-surface{background:#000;min-height:200px;max-height:330px;overflow:auto;padding:18px 22px;color:#bdd4bc}
.py-console-surface #pyOutput{padding:0;min-height:0;max-height:none;overflow:visible;white-space:pre-wrap}
.py-console-surface .py-console-input{padding:0;gap:0;flex-wrap:nowrap;align-items:baseline;color:inherit;font:12px/1.8 var(--mono)}
.py-console-input label{white-space:pre-wrap;flex-shrink:0;max-width:80%;overflow-wrap:anywhere}
.py-console-surface .py-console-input input{padding:0;margin:0;border:0;outline:none;box-shadow:none;border-radius:0;background:transparent;color:#bdd4bc;caret-color:#fff;font:inherit;min-width:1ch;line-height:inherit;appearance:none}
.py-console-surface:focus-within{box-shadow:inset 2px 0 #47618b}
