/* Robovzglyad desktop theme. UI colours are independent of task images. */
@font-face{font-family:Onest;src:url('../brand/Onest-Variable.ttf') format('truetype');font-weight:100 900;font-display:swap}
@font-face{font-family:Unbounded;src:url('../brand/Unbounded-Variable.ttf') format('truetype');font-weight:200 900;font-display:swap}
:root{color-scheme:dark;--py-bg:#0c110f;--py-surface:#141c18;--py-raised:#1c2821;--py-line:#304438;--py-text:#e5eee7;--py-muted:#9db2a4;--py-green:#8ddda6;--py-ink:#102217;--tutor-purple:var(--py-green)}
/* Bridge the existing desktop palette embedded in the supplied Bootstrap. */
:root{--bg:var(--py-bg);--soft:var(--py-surface);--panel:var(--py-surface);--panel2:var(--py-raised);--fg:var(--py-text);--mut:var(--py-muted);--bd:var(--py-line);--bd2:var(--py-line);--link:var(--py-green);--acc:#315d40;--btn:#315d40;--btnh:#416f50}
html[data-course-theme=light]{color-scheme:light;--py-bg:#f4f7f3;--py-surface:#fff;--py-raised:#e9f1ea;--py-line:#cfdfd1;--py-text:#1b2c20;--py-muted:#56695c;--py-green:#276d44;--py-ink:#fff;--bg:var(--py-bg);--soft:var(--py-surface);--panel:var(--py-surface);--panel2:var(--py-raised);--fg:var(--py-text);--mut:var(--py-muted);--bd:var(--py-line);--bd2:var(--py-line);--link:var(--py-green);--acc:#315d40;--btn:#315d40;--btnh:#416f50}
body a:hover,body a:focus{color:#c1f7d1!important}
html body{background:var(--py-bg);color:var(--py-text);font:16px/1.65 Onest,system-ui,sans-serif;accent-color:var(--py-green)}
body h1,body h2,body h3,body h4{color:var(--py-text);font-weight:600;line-height:1.3;text-wrap:balance}
body h1,body .home-title h2{font-family:Unbounded,Onest,sans-serif;letter-spacing:-.045em}
body a,body summary{color:var(--py-green)}
body a:hover{color:#c1f7d1;text-decoration:underline}
body :is(button,a,input,select,textarea,summary):focus-visible{outline:2px solid var(--py-green)!important;outline-offset:4px}
body ::selection{background:#345d43;color:#fff}
body .navbar{background:var(--py-bg);border-bottom:1px solid var(--py-line);min-height:64px;padding:12px 0}
body .navbar .navbar-brand{font-family:Unbounded,Onest,sans-serif;color:var(--py-green)!important;font-size:17px;letter-spacing:-.04em;text-transform:none}
body .navbar-default .navbar-nav>li>a,body .navbar-text{color:var(--py-muted)}
body .navbar-default .navbar-nav>.active>a,body .navbar-default .navbar-nav>li>a:hover{background:var(--py-raised);color:var(--py-green)}
body .navbar-default .navbar-toggle{border-color:var(--py-line);background:var(--py-surface)}
body .navbar-default .navbar-toggle .icon-bar{background:var(--py-green)}
.py-nav{display:flex;align-items:center;gap:7px;margin-left:auto;padding:0 15px}
.py-nav a{display:inline-flex;align-items:center;min-height:38px;padding:7px 14px;border-radius:9px;color:var(--py-muted)!important;font-size:14px;font-weight:550;text-decoration:none!important;transition:background-color .2s ease,color .2s ease,transform .2s ease}
.py-nav a:hover{background:var(--py-raised);color:var(--py-text)!important;transform:translateY(-1px)}
.py-nav a[aria-current=page]{background:var(--py-raised);color:var(--py-green)!important}
.knowledge-title{font-family:Onest,system-ui,sans-serif;font-size:clamp(29px,3vw,40px);font-weight:680;letter-spacing:-.045em;margin:35px 0 8px}
.knowledge-lead{max-width:66ch;margin:0 0 27px;color:var(--py-muted);font-size:15px}
.knowledge-groups{columns:2;column-gap:28px;margin-bottom:60px}
.knowledge-group{display:inline-block;width:100%;min-width:0;margin:0 0 18px;padding:23px 25px;background:var(--py-surface);border:1px solid var(--py-line);border-radius:14px;break-inside:avoid}
.knowledge-group h2{margin:0 0 15px;font:600 17px/1.4 Onest,system-ui,sans-serif}
.knowledge-links{list-style:none;padding:0;margin:0;display:grid;gap:2px}
.knowledge-links li{margin:0!important}
.knowledge-links a{display:block;padding:8px 0;border-top:1px solid var(--py-line);font-size:14px;text-decoration:none!important}
.knowledge-links a:hover{padding-left:5px;color:var(--py-text)!important}
.knowledge-article[hidden]{display:none}
.knowledge-article details[hidden]{display:none}
#local-knowledge-notice{display:none}
@media(max-width:767px){.knowledge-groups{columns:1}.knowledge-group{padding:20px;margin-bottom:12px}.knowledge-title{margin-top:25px}}
/* Knowledge path: read, practise, compare. */
body .knowledge-catalog-hero{padding:52px 0 34px;border-bottom:1px solid var(--py-line)}
body .knowledge-kicker,body .knowledge-section-label{display:block;color:var(--py-green);font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase}
body .knowledge-catalog-hero .knowledge-title{margin:12px 0 15px;font-size:clamp(36px,5.4vw,66px);line-height:1.08}
body .knowledge-catalog-hero .knowledge-lead{max-width:740px;margin:0;color:var(--py-muted);font-size:17px;line-height:1.7}
body .knowledge-catalog-meta{display:flex;gap:32px;flex-wrap:wrap;margin-top:30px;color:var(--py-muted);font-size:13px}
body .knowledge-catalog-meta strong{margin-right:5px;color:var(--py-text);font-size:19px}
body .knowledge-catalog-tools{display:grid;grid-template-columns:minmax(200px,1fr) minmax(280px,2fr);align-items:center;gap:8px 25px;margin:35px 0 20px;padding:23px 27px;border:1px solid var(--py-line);border-radius:16px;background:var(--py-surface)}
body .knowledge-catalog-tools label{grid-row:span 2;margin:0;color:var(--py-text);font-size:20px;font-weight:650}
body .knowledge-catalog-tools input{width:100%;height:49px;padding:0 16px;border:1px solid var(--py-line);border-radius:9px;background:var(--py-bg);color:var(--py-text);font:inherit}
body .knowledge-catalog-tools input::placeholder{color:var(--py-muted)}
body .knowledge-catalog-tools p{margin:0;color:var(--py-muted);font-size:12px}
body .knowledge-topic-nav{display:flex;gap:8px;overflow-x:auto;padding:4px 0 17px;margin:0 0 26px;scrollbar-width:thin}
body .knowledge-topic-nav a{white-space:nowrap;padding:8px 13px;border:1px solid var(--py-line);border-radius:999px;background:var(--py-surface);color:var(--py-muted);font-size:12px;text-decoration:none}
body .knowledge-topic-nav a:hover{border-color:var(--py-green);color:var(--py-text)!important}
body .knowledge-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;columns:auto;margin:0 0 70px}
body .knowledge-group{display:block;margin:0;padding:0;overflow:hidden;border-radius:16px}
body .knowledge-group[hidden],body .knowledge-result[hidden]{display:none}
body .knowledge-group-head{padding:24px 25px 20px;border-bottom:1px solid var(--py-line)}
body .knowledge-group-head>span{color:var(--py-green);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
body .knowledge-group-head h2{margin:10px 0 6px;font-size:19px;line-height:1.35}
body .knowledge-group-head small{color:var(--py-muted);font-size:12px}
body .knowledge-links{gap:0}
body .knowledge-links a{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 25px;border-top:0;border-bottom:1px solid var(--py-line);transition:background-color .2s ease,color .2s ease}
body .knowledge-links li:last-child a{border-bottom:0}
body .knowledge-links a:hover{padding-left:25px;background:var(--py-raised)}
body .knowledge-result-copy{display:grid;gap:3px;min-width:0}
body .knowledge-result-copy strong{color:var(--py-text);font-size:14px;font-weight:600}
body .knowledge-result-copy small{display:-webkit-box;overflow:hidden;color:var(--py-muted);font-size:12px;line-height:1.45;-webkit-line-clamp:2;-webkit-box-orient:vertical}
body .knowledge-result-arrow{flex:none;color:var(--py-green);font-size:20px}
body .knowledge-topic-empty{padding:22px 25px}
body .knowledge-topic-empty span{display:block;color:var(--py-green);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
body .knowledge-topic-empty p{margin:10px 0;color:var(--py-text);font-size:14px;line-height:1.65}
body .knowledge-topic-empty small{display:block;margin:0 0 15px;color:var(--py-muted);font-size:12px}
body .knowledge-topic-empty a{font-size:12px;font-weight:650}
body .knowledge-article{max-width:1100px;margin:0 auto;padding:30px 0 80px}
body .knowledge-breadcrumb{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:24px;color:var(--py-muted);font-size:12px}
body .knowledge-breadcrumb a{color:var(--py-muted)}
body .knowledge-guide-hero{display:flex;justify-content:space-between;gap:28px;align-items:flex-end;padding:38px 42px 42px;border:1px solid var(--py-line);border-radius:19px;background:var(--py-surface)}
body .knowledge-guide-hero h1{max-width:760px;margin:13px 0 15px;font-size:clamp(28px,4vw,49px);line-height:1.13}
body .knowledge-guide-lead{max-width:720px;margin:0;color:var(--py-muted);font-size:17px;line-height:1.65}
body .knowledge-hero-mark{display:grid;justify-items:end;align-content:end;min-width:125px;color:var(--py-green)}
body .knowledge-hero-mark span{font:600 70px/1 Unbounded,Onest,sans-serif;letter-spacing:-.09em;opacity:.45}
body .knowledge-hero-mark small{margin-top:8px;color:var(--py-muted);font-size:11px;letter-spacing:.12em;text-transform:uppercase}
body .knowledge-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:20px 0 38px;border:1px solid var(--py-line);border-radius:11px;overflow:hidden}
body .knowledge-steps a{display:flex;align-items:center;gap:13px;padding:15px 20px;border-right:1px solid var(--py-line);background:var(--py-surface);color:var(--py-text);font-size:13px;font-weight:600;text-decoration:none}
body .knowledge-steps a:last-child{border-right:0}
body .knowledge-steps a:hover{background:var(--py-raised)}
body .knowledge-steps span{color:var(--py-green);font-size:11px;font-weight:700}
body .knowledge-guide-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.8fr);align-items:start;gap:28px;margin-bottom:48px}
body .knowledge-article .knowledge-guide-main{margin:0}
body .knowledge-guide-main h2,body .knowledge-guide-aside h2,body .knowledge-solution-intro h2{margin:11px 0 15px;font:650 clamp(23px,2.6vw,31px)/1.25 Onest,sans-serif;letter-spacing:-.04em}
body .knowledge-guide-main>p{max-width:64ch;color:var(--py-muted)}
body .knowledge-concept{margin:24px 0;padding:21px 23px;border:1px solid var(--py-line);border-radius:11px;background:var(--py-surface)}
body .knowledge-concept span{color:var(--py-green);font-size:12px;font-weight:700}
body .knowledge-concept p{margin:10px 0 0;line-height:1.7}
body .knowledge-method{margin:25px 0;padding:21px 23px;border-left:3px solid var(--py-green);background:var(--py-surface)}
body .knowledge-method span{color:var(--py-green);font-size:12px;font-weight:700}
body .knowledge-method p{margin:9px 0 0;line-height:1.65}
body .knowledge-guide-main h3{margin:26px 0 15px;font-size:17px}
body .knowledge-check{margin-top:29px;padding:20px 23px;border:1px solid var(--py-line);border-radius:11px;background:var(--py-surface)}
body .knowledge-check h3{margin:0 0 12px;font-size:15px}
body .knowledge-check ul{margin:0;padding-left:20px;color:var(--py-muted);font-size:13px;line-height:1.65}
body .knowledge-check li{margin:7px 0}
body .knowledge-check li::marker{color:var(--py-green)}
body .knowledge-guide-aside{position:sticky;top:20px;padding:26px;border:1px solid var(--py-line);border-radius:15px;background:var(--py-surface)}
body .knowledge-guide-aside h2{font-size:23px}
body .knowledge-guide-aside p{color:var(--py-muted);font-size:14px;line-height:1.65}
body .knowledge-practice-link{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:22px 0 15px;padding:13px 16px;border-radius:8px;background:var(--py-green);color:var(--py-ink)!important;font-size:13px;font-weight:700;text-decoration:none!important}
body .knowledge-practice-link:hover{background:#b0eec3}
body .knowledge-text-link{font-size:12px}
body .knowledge-solution-intro{margin:0 0 28px;padding:27px 0 21px;border-top:1px solid var(--py-line);border-bottom:1px solid var(--py-line)}
body .knowledge-solution-intro p{margin:0;color:var(--py-muted)}
body .knowledge-article>section{padding:25px 28px;border:1px solid var(--py-line);border-radius:13px;background:var(--py-surface)}
body .knowledge-article>section h3{margin-top:0}
body .knowledge-article>h3{margin-top:39px;font-size:20px}
body .knowledge-article pre{border-radius:9px}
body .knowledge-entry{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:22px 0 30px;padding:22px 25px;border:1px solid var(--py-line);border-left:3px solid var(--py-green);border-radius:12px;background:var(--py-surface)}
body .knowledge-entry span:first-child{color:var(--py-green);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
body .knowledge-entry h2{margin:6px 0;font:650 20px/1.3 Onest,sans-serif}
body .knowledge-entry p{max-width:65ch;margin:0;color:var(--py-muted);font-size:13px}
body .knowledge-entry>a{display:inline-flex;align-items:center;justify-content:center;gap:13px;flex:none;min-height:43px;padding:10px 15px;border-radius:7px;background:var(--py-green);color:var(--py-ink)!important;font-size:12px;font-weight:700;text-decoration:none!important}
body .knowledge-entry>a:hover{background:#b0eec3}
@media(max-width:800px){body .knowledge-groups{grid-template-columns:1fr}body .knowledge-guide-grid{grid-template-columns:1fr}body .knowledge-guide-aside{position:static}body .knowledge-hero-mark{display:none}}
@media(max-width:600px){body .knowledge-catalog-hero{padding-top:28px}body .knowledge-catalog-tools{grid-template-columns:1fr;padding:18px}body .knowledge-catalog-tools label{grid-row:auto}body .knowledge-catalog-meta{gap:12px 22px}body .knowledge-guide-hero{padding:25px 22px}body .knowledge-guide-lead{font-size:15px}body .knowledge-steps a{display:block;padding:11px 9px;font-size:11px;text-align:center}body .knowledge-steps span{display:block}body .knowledge-entry{display:block;padding:20px}body .knowledge-entry>a{margin-top:17px}body .knowledge-article>section{padding:19px 16px}}
body>.container-fluid:has(.home-title){max-width:1240px;padding:0 32px}
body .home-title{text-align:left;margin:0;padding:64px 0 40px;border-bottom:1px solid var(--py-line)}
body .home-title h2{font-size:clamp(28px,3.5vw,46px);max-width:850px;margin:14px 0 20px}
body .home-title h3{font:18px/1.6 Onest,sans-serif;color:var(--py-muted);max-width:650px}
.py-eyebrow{display:flex;align-items:center;gap:12px;color:var(--py-green);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.py-eyebrow img{width:42px;height:42px;border-radius:12px}
.py-start{display:inline-flex;align-items:center;gap:24px;margin:18px 0 0;padding:12px 20px;border-radius:8px;background:var(--py-green);color:var(--py-ink)!important;font-weight:650}
.py-start:hover{background:#b0eec3;text-decoration:none!important}
body .home-overview{margin-top:36px;display:grid;grid-template-columns:1.15fr 1fr;gap:48px}
body .home-overview:before,body .home-overview:after{display:none}
body .home-overview>section{float:none;width:auto;min-width:0;padding:0}
body .home-overview h3,body .home-demo>h3{font-size:23px}
body .home-lessons{margin-top:24px;counter-reset:lesson}
body .home-lessons>p{display:flex;align-items:center;gap:12px;margin:0;padding:14px 4px;border-bottom:1px solid var(--py-line);color:var(--py-muted);font-size:13px}
body .home-lessons>p a{margin-left:auto;font-size:16px;font-weight:500;text-align:right}
body .home-features{padding:28px!important;border:1px solid var(--py-line);border-radius:16px;background:var(--py-surface);align-self:start}
body .home-features ul{margin:24px 0;padding-left:20px;color:var(--py-muted)}
body .home-features li{margin-bottom:12px;padding-left:6px}
body .home-features li::marker{color:var(--py-green)}
body .home-features video{max-width:100%;border-radius:8px}
body .home-demo{padding-top:30px;border-top:1px solid var(--py-line)}
body .additional-lessons{padding-top:20px}
body .sidebar{background:var(--py-surface);border-right:1px solid var(--py-line);color:var(--py-muted)}
body .sidebar a{color:var(--py-muted)}
body .sidebar .nav-sidebar>li>a:hover,body .sidebar .nav-sidebar>.active>a{background:var(--py-raised);color:var(--py-green)}
body .lesson_sections,body .lesson_sections ul,body .lesson_sections .problems_link{background:var(--py-surface);border-color:var(--py-line)}
body .lesson_sections li>a:hover{background:var(--py-raised)}
body .lesson_sections li>.position_spin{background:var(--py-green)}
body .page-header,body .lesson_name{margin-top:32px}
body .section p{max-width:72ch}
body :is(pre,code,kbd,samp){font-family:'Cascadia Code',Consolas,monospace}
body pre,body code{background:#101a14;color:#bde9c9;border-color:var(--py-line)}
body pre{padding:18px;border-radius:8px}
body :is(.panel,.panel-default,.panel-heading,.well,.settings-section,.beginner-guide,.visualizer_code_toppanel,.visualizer_vcr,.visualizer_dataviz,.visualizer_output,.py-practice){background:var(--py-surface)!important;color:var(--py-text);border-color:var(--py-line)!important}
/* The trace uses legacy light tables. Keep the actual variable values readable in both app themes. */
body .visualizer_dataviz{padding:16px;border:1px solid var(--py-line);border-radius:16px;min-height:180px}
body .visualizer_dataviz_body{margin-top:0}
body .visualizer_dataviz_stackHeapTable{width:100%;border-spacing:0}
body .visualizer_dataviz_stackHeapTable>tbody>tr>td{vertical-align:top}
body .visualizer_dataviz_stackHeapTable>tbody>tr>td:first-child{width:100%}
body .visualizer_dataviz_stackHeapTable>tbody>tr>td:last-child{display:none}
body .visualizer_dataviz_has_heap>tbody>tr>td:first-child{width:58%}
body .visualizer_dataviz_has_heap>tbody>tr>td:last-child{display:table-cell;width:42%}
body .visualizer_dataviz_stack{float:none;min-width:260px;padding:0;border:0}
body .visualizer_dataviz_stack_frame{margin:0 0 12px;padding:16px 18px;background:var(--py-raised);color:var(--py-text);border:1px solid var(--py-line);border-radius:13px;box-shadow:0 9px 24px #00000016}
body .visualizer_dataviz_stack_frame_selected{background:var(--py-raised);border-color:var(--py-green);box-shadow:0 0 0 1px var(--py-green),0 10px 30px #00000020}
body .visualizer_dataviz_top_stack_frame{border-color:var(--py-line)}
body .visualizer_dataviz_stack_frame_header{display:flex;align-items:center;flex-wrap:wrap;gap:5px 10px;margin:0 0 12px;padding:0 0 12px;border-bottom:1px solid var(--py-line);font:700 15px/1.35 Onest,system-ui,sans-serif;color:var(--py-text)}
body .visualizer_dataviz_stack_frame_header_inactive{color:var(--py-text);text-decoration:none}
body .visualizer_dataviz_stack_frame_header_inactive:hover{color:var(--py-green);text-decoration:none}
body .visualizer_dataviz_frame_hint{display:block;flex-basis:100%;font-size:12px;font-weight:450;color:var(--py-muted)}
body .visualizer_dataviz_stack_frame_var_table{width:100%;margin:0;border-collapse:separate;border-spacing:0 7px;text-align:left;table-layout:fixed}
body .visualizer_dataviz_stack_frame_var_table th{padding:0 12px 3px;color:var(--py-muted);font:650 11px Onest,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.09em;border:0}
body .visualizer_dataviz_stack_frame_var_table th:first-child{width:43%}
body .visualizer_dataviz_stack_frame_var,body .visualizer_dataviz_stack_frame_value{min-width:0;padding:10px 12px;text-align:left;background:var(--py-surface);border:1px solid var(--py-line);font:500 13px/1.45 'Cascadia Code',Consolas,monospace;overflow-wrap:anywhere}
body .visualizer_dataviz_stack_frame_var{color:var(--py-green);border-radius:8px 0 0 8px;border-right:0}
body .visualizer_dataviz_stack_frame_value{color:var(--py-text);border-radius:0 8px 8px 0;border-left:0}
body .visualizer_dataviz_obj_string{font-family:'Cascadia Code',Consolas,monospace;color:var(--py-text)}
body .visualizer_dataviz_obj_number,body .visualizer_dataviz_obj_bool{color:var(--py-green);font-weight:700}
body .visualizer_dataviz_obj_null{color:var(--py-muted)}
body .visualizer_dataviz_object_reference{color:var(--py-muted);font:550 11px Onest,system-ui,sans-serif}
body .visualizer_dataviz_ref_mobile{display:none}
body .visualizer_dataviz_heap{float:none;padding-left:14px}
body .visualizer_dataviz_heap_object{padding-left:6px;color:var(--py-text)}
body :is(.visualizer_dataviz_list,.visualizer_dataviz_tuple,.visualizer_dataviz_set,.visualizer_dataviz_dict,.visualizer_dataviz_class,.visualizer_dataviz_instance){background:var(--py-raised);color:var(--py-text);border-color:var(--py-line)}
body :is(.visualizer_dataviz_dict .visualizer_dataviz_key,.visualizer_dataviz_dict .visualizer_dataviz_value,.visualizer_dataviz_class .visualizer_dataviz_class_key,.visualizer_dataviz_class .visualizer_dataviz_class_value,.visualizer_dataviz_instance .visualizer_dataviz_instance_key,.visualizer_dataviz_instance .visualizer_dataviz_instance_value){background:var(--py-raised);color:var(--py-text);border-color:var(--py-line)}
body :is(.visualizer_dataviz_typename,.visualizer_dataviz_circref){color:var(--py-muted)}
body :is(.visualizer_dataviz_list .visualizer_dataviz_list_header,.visualizer_dataviz_tuple .visualizer_dataviz_tuple_header){color:var(--py-muted);border-color:var(--py-line)}
body :is(.visualizer_dataviz_list .visualizer_dataviz_list_element,.visualizer_dataviz_tuple .visualizer_dataviz_tuple_element,.visualizer_dataviz_dict .visualizer_dataviz_dict_entry,.visualizer_dataviz_class .visualizer_dataviz_class_entry,.visualizer_dataviz_instance .visualizer_dataviz_instance_entry){border-color:var(--py-line)}
body .visualizer_dataviz_return_warning{color:#ebac9f}
@media(max-width:767px){body .visualizer_dataviz{padding:12px}body .visualizer_dataviz_stack{min-width:0}body .visualizer_dataviz_stack_frame{padding:13px}body .visualizer_dataviz_stack_frame_var,body .visualizer_dataviz_stack_frame_value{padding:9px 8px;font-size:12px}body .visualizer_dataviz_has_heap,body .visualizer_dataviz_has_heap>tbody,body .visualizer_dataviz_has_heap>tbody>tr{display:block}body .visualizer_dataviz_has_heap>tbody>tr>td{display:block!important;width:100%!important}body .visualizer_dataviz_heap{padding:4px 0 0 6px}body .visualizer_dataviz_ref_desktop{display:none}body .visualizer_dataviz_ref_mobile{display:inline}body .visualizer_dataviz :is(._jsPlumb_connector,._jsPlumb_endpoint,._jsPlumb_overlay){display:none!important}}
body .py-practice{border-left-color:var(--py-green)!important}
body .py-pr-head{background:var(--py-raised);border-color:var(--py-line)}
body .py-pr-badge{background:#315d40;color:var(--py-text)}
body .py-pr-lbl,body .py-pr-outlbl{color:var(--py-muted)}
body .py-pr-title,body .py-pr-task{color:var(--py-text)}
body .py-pr-out,body .py-pr-hint,body .py-pr-refbox{background:var(--py-bg);color:var(--py-text);border-color:var(--py-line)}
body .py-practice button,body .btn-primary,body .btn-success{background:var(--py-green)!important;color:var(--py-ink)!important;border-color:var(--py-green)!important;text-shadow:none}
body .btn{border-radius:7px;box-shadow:none;transition:background-color .15s,border-color .15s}
body .btn-default,body .btn-info{background:var(--py-raised);color:var(--py-text);border-color:var(--py-line)}
body .btn-link{color:var(--py-green)}
body .btn:hover{filter:brightness(1.08)}
body button:disabled,body .btn.disabled{opacity:.45;filter:none;cursor:not-allowed}
body :is(input:not([type=checkbox]):not([type=radio]),textarea,select,.form-control){background:#0e1711;color:var(--py-text);border:1px solid var(--py-line);border-radius:6px;box-shadow:none}
body input::placeholder,body textarea::placeholder{color:var(--py-muted);opacity:.8}
body :is(.settings-section p,.settings-lesson-row span,.text-muted,.help-block,figcaption){color:var(--py-muted)}
body :is(th,td,.table>tbody>tr>td,.table>thead>tr>th){border-color:var(--py-line)}
body .table-striped>tbody>tr:nth-of-type(odd),body .table-hover>tbody>tr:hover{background:var(--py-surface)}
body .alert-success{background:#193223;color:#b4e8c5;border-color:#365d43}
body .alert-danger,body .settings-confirm{background:#301d20;color:#ffc4c4;border-color:#694044}
body .alert-info,body .alert-warning{background:var(--py-raised);color:var(--py-text);border-color:var(--py-line)}
/* Ace keeps token-level colour and caret contrast without a new vendor theme. */
body .ace_editor,body .ace_scroller{background:#0e1711!important;color:#dcebe0!important}
body .ace_gutter{background:#141f18!important;color:#859b8d!important}
body .ace_cursor{color:#c3ffd5!important}
body .ace_marker-layer .ace_active-line,body .ace_gutter-active-line{background:#1b2d21!important}
body .ace_marker-layer .ace_selection{background:#31563d!important}
body .ace_keyword,body .ace_storage{color:#8ddda6!important}
body .ace_string{color:#d4d99c!important}
body .ace_constant,body .ace_support{color:#9ecce1!important}
body .ace_comment{color:#8aab94!important}
body #tutor-panel{background:var(--py-surface);color:var(--py-text);border-color:var(--py-line);box-shadow:0 20px 60px #0007;border-radius:16px}
body #tutor-panel :is(h2,p,label){color:var(--py-text)}
body #tutor-panel :is(.tutor-context,.tutor-code-access span,.tutor-message-tools button){color:var(--py-muted)}
body #tutor-panel :is(.tutor-toolbar button,.tutor-message.user,.tutor-welcome>span,pre){background:var(--py-raised);color:var(--py-text)}
body #tutor-launcher{background:var(--py-green);color:var(--py-ink);border-color:var(--py-green);border-radius:18px}
body #tutor-panel :is(button[type=submit],#tutor-send){background:var(--py-green);color:var(--py-ink)}
body #tutor-panel #tutor-form,body #tutor-panel #tutor-quick button{background:var(--py-raised);color:var(--py-text);border-color:var(--py-line)}
body #tutor-panel #tutor-question{background:var(--py-bg);color:var(--py-text)}
body.tutor-open #tutor-divider{background:var(--py-line)}
body #tutor-divider::after{background:var(--py-muted)}
body #tutor-panel .tutor-voice-orb{background:var(--py-raised);box-shadow:0 0 0 16px var(--py-bg)}
body footer{border-top:1px solid var(--py-line);padding:28px 0;color:var(--py-muted);font-size:12px;margin-top:48px}
html[data-course-theme=light] body :is(pre,code){background:#edf4ee;color:#254c32;border-color:var(--py-line)}
html[data-course-theme=light] body .ace_editor,html[data-course-theme=light] body .ace_scroller{background:#fff!important;color:#182c20!important}
html[data-course-theme=light] body .ace_gutter{background:#edf4ee!important;color:#667b6a!important}
html[data-course-theme=light] body .ace_marker-layer .ace_active-line,html[data-course-theme=light] body .ace_gutter-active-line{background:#e8f3e9!important}
html[data-course-theme=light] body .ace_keyword,html[data-course-theme=light] body .ace_storage{color:#175c39!important}
html[data-course-theme=light] body .ace_string{color:#795b13!important}
html[data-course-theme=light] body .ace_constant,html[data-course-theme=light] body .ace_support{color:#325ba0!important}
html[data-course-theme=light] body .ace_comment{color:#627d69!important}
html[data-course-theme=light] body .py-practice :is(.py-pr-code,.py-pr-stdin,.py-pr-out,.py-pr-hint,.py-pr-refbox){background:#fff;color:var(--py-text);border-color:var(--py-line)}
html[data-course-theme=light] body #tutor-panel :is(#tutor-form,#tutor-question,.tutor-message.user){background:var(--py-raised);color:var(--py-text)}
@media(min-width:768px){body .sidebar{top:65px}body:has(.sidebar){padding-top:76px}body .main{padding-top:12px}}
@media(max-width:767px){body>.container-fluid:has(.home-title){padding:0 20px}body .home-title{padding-top:32px}body .home-overview{grid-template-columns:1fr;gap:28px}body .home-lessons>p{flex-wrap:wrap}body .home-lessons>p a{text-align:left;margin-left:0}body .sidebar{max-height:240px}body #tutor-panel{width:auto;left:12px;right:12px}body .navbar .navbar-brand{font-size:15px}.py-nav{width:100%;padding:12px 15px;margin:0;flex-wrap:wrap}.py-nav a{padding:8px 11px;font-size:13px}}
@media(prefers-reduced-motion:reduce){body *{scroll-behavior:auto!important;transition:none!important}}

/* New practice editor uses the same light/dark tokens as the course. */
body .py-practice .py-pr-knowledge{display:inline-flex;padding:8px 12px;border:1px solid var(--py-line);border-radius:6px;color:var(--py-green);font-size:14px;text-decoration:none}
body .py-practice :is(.py-pr-out,.py-pr-refbox){background:var(--py-bg)!important;color:var(--py-text)!important}
html[data-course-theme=light] .py-practice .alert{background:var(--py-raised)!important;color:var(--py-text)!important}
html[data-course-theme=light] .py-practice .alert code{background:var(--py-surface)!important;border-color:var(--py-line)!important;color:var(--py-text)!important}
body .tutor-native-logout{position:fixed;bottom:10px;left:12px;z-index:10000;background:var(--py-surface);color:var(--py-text);border:1px solid var(--py-line);border-radius:8px}
