:root{color:#d7e0e8;background:#111b23;font-family:Courier New,Courier,ui-monospace,monospace;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button{font:inherit}.trainer{position:relative;min-height:100vh;overflow:hidden;background:radial-gradient(circle at 50% 105%,rgba(54,75,85,.18),transparent 30%),#111b23;padding:clamp(18px,3.2vh,34px) clamp(18px,3.5vw,44px) 72px;outline:none}.workspace-shell{display:grid;grid-template-columns:minmax(300px,.82fr) minmax(680px,1.35fr) minmax(280px,.62fr);gap:clamp(12px,1.4vw,22px);width:min(100%,1660px);margin:0 auto;align-items:start}.training-column{min-width:0}.code-panel{width:100%;min-height:clamp(214px,27vh,290px);margin:0 0 clamp(14px,2.8vh,28px);color:#92a4b2;font-size:clamp(18px,1.45vw,28px);font-weight:700;line-height:1.22}.lesson-panel,.files-panel,.lesson-chat-panel{min-width:0}.files-panel{display:grid;grid-template-rows:auto minmax(0,1fr);height:calc(100vh - clamp(18px,3.2vh,34px) - 96px);min-height:610px;border-right:1px solid rgba(146,164,178,.22);padding-right:clamp(12px,1.4vw,18px)}.file-tree{overflow:hidden;color:#aab7bf;font-family:Arial,Helvetica,sans-serif}.folder-row{display:flex;min-height:30px;align-items:center;gap:7px;color:#d0b36b;font-size:13px;font-weight:900;text-transform:uppercase}.folder-caret{color:#8fa0ac;font-size:14px;line-height:1}.file-list{display:grid;gap:2px;max-height:188px;overflow:auto;padding:2px 0 8px 15px}.file-row{display:grid;grid-template-columns:18px minmax(0,1fr);min-height:28px;align-items:center;gap:6px;border:1px solid transparent;border-radius:6px;background:transparent;color:#8fa0ac;cursor:pointer;font-size:12px;font-weight:800;line-height:1.1;padding:0 8px;text-align:left}.file-row span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row:hover,.file-row.selected{border-color:#d0b36b6b;background:#182733b3;color:#e2cf97}.file-row.current{color:#d7e0e8}.file-row.completed .file-icon{color:#91c9ae}.file-icon{color:#6f7f8b;text-align:center}.file-code-card{min-height:0;border-top:1px solid rgba(146,164,178,.16);padding-top:12px}.file-code-header{display:flex;min-height:30px;align-items:center;gap:10px;color:#d7e0e8;font-family:Arial,Helvetica,sans-serif;font-size:13px;font-weight:900}.file-code-header span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-code-header small{flex:0 0 auto;margin-left:auto;color:#71828d;font-size:11px;font-weight:900;text-transform:uppercase}.lesson-controls{display:flex;min-height:34px;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:8px;color:#aab7bf;font-family:Arial,Helvetica,sans-serif}.choice-row{display:flex;flex:0 0 auto;gap:6px}.choice{min-height:30px;border:1px solid rgba(146,164,178,.42);border-radius:6px;background:#182733b8;color:#aab7bf;cursor:pointer;font-size:13px;font-weight:800;line-height:1;padding:0 10px;white-space:nowrap}.choice:hover,.choice.selected{border-color:#d0b36b;background:#d0b36b;color:#121920}.choice.locked,.choice:disabled{border-color:#92a4b22e;background:#18273357;color:#56656f;cursor:default}.choice.locked:hover,.choice:disabled:hover{border-color:#92a4b22e;background:#18273357;color:#56656f}.exercise-title{flex:1 1 180px;min-width:0;margin-left:auto;overflow:hidden;color:#71828d;font-size:13px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.pattern-progress-row{display:flex;gap:6px;margin:0 0 8px;overflow-x:auto;padding-bottom:2px;font-family:Arial,Helvetica,sans-serif}.pattern-pill{display:inline-flex;min-height:30px;flex:0 0 auto;align-items:center;gap:7px;border:1px solid rgba(146,164,178,.24);border-radius:6px;background:#1827338f;color:#8fa0ac;cursor:pointer;font-size:12px;font-weight:900;line-height:1;padding:0 9px}.pattern-pill span,.modal-pattern-item span{display:grid;width:18px;height:18px;place-items:center;border-radius:50%;background:#92a4b229;color:#aab7bf;font-size:11px;line-height:1}.pattern-pill:hover,.pattern-pill.current{border-color:#d0b36bc7;color:#e2cf97}.pattern-pill.completed span,.modal-pattern-item.completed span{background:#4f8f72;color:#f7fbfc}.pattern-pill.completed{color:#b9d4ca}.current-line{height:46px;display:flex;align-items:center;border-bottom:2px dotted #050a0e;background:#182733;color:#bcc9d2;padding:0 8px}.target-lines{margin:6px 0 0}.code-line{min-height:1.22em;white-space:pre-wrap}.code-line.empty{opacity:0}.lesson-chat-panel{height:calc(100vh - clamp(18px,3.2vh,34px) - 96px);min-height:610px;border-left:1px solid rgba(146,164,178,.26);padding-left:clamp(12px,1.4vw,18px)}.lesson-chat{display:flex;height:100%;flex-direction:column;gap:8px;overflow:auto;padding-right:8px;color:#b4c0c8;font-family:Arial,Helvetica,sans-serif;font-size:clamp(12px,.86vw,14px);font-weight:700;line-height:1.38}.chat-block{display:flex;flex-direction:column;gap:8px}.chat-message{max-width:100%;border:1px solid rgba(146,164,178,.2);border-radius:8px;background:#182733ad;padding:9px 10px}.intro-message{border-color:#d0b36b7a;background:#312b1c6b}.chat-author{display:block;color:#d0b36b;font-size:12px;font-weight:900;letter-spacing:0;line-height:1;text-transform:uppercase}.chat-message p{margin:7px 0 0}.written-scroll{display:grid;grid-template-columns:max-content max-content;align-items:start;width:100%;height:calc(100% - 30px);overflow:auto;color:#c7d0d4;font-size:clamp(14px,.95vw,18px);font-weight:700;line-height:1.42}.written-line-numbers{position:sticky;left:0;z-index:1;display:flex;min-height:100%;flex-direction:column;margin-right:12px;border-right:1px solid rgba(146,164,178,.18);background:#111b23;color:#53626b;padding-right:10px;text-align:right;-webkit-user-select:none;user-select:none}.written-line-number{height:1.42em;min-width:2ch}.written-code{min-width:max-content;margin:0;overflow:visible;color:inherit;font:inherit;white-space:pre}.written-code.empty{min-width:100%}.written-code code{font:inherit}.written-code .hljs-comment{color:#6f7f8b;font-style:italic}.written-code .hljs-keyword,.written-code .hljs-selector-tag{color:#ff7b72}.written-code .hljs-string,.written-code .hljs-regexp{color:#a5d6ff}.written-code .hljs-number,.written-code .hljs-literal{color:#f2cc60}.written-code .hljs-title,.written-code .hljs-title.function_,.written-code .hljs-title.class_{color:#d2a8ff}.written-code .hljs-built_in,.written-code .hljs-variable.language_{color:#ffa657}.written-code .hljs-attr,.written-code .hljs-property,.written-code .hljs-params{color:#79c0ff}.checked{color:#c7d0d4}.next-char{background:#c7d0d424;outline:1px solid rgba(199,208,212,.24)}.input-error{color:#ff6161}.text-error{color:#e05353}.relax-message{position:absolute;z-index:5;top:40%;left:50%;transform:translate(-50%,-50%);border:1px solid #839095;border-radius:6px;background:#1b2836;color:#c7d0d4;cursor:pointer;font-family:Arial,Helvetica,sans-serif;font-size:20px;padding:14px 22px;box-shadow:0 12px 30px #00000047}.lesson-modal-backdrop{position:fixed;z-index:20;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#060b0fb8;padding:24px}.lesson-modal{width:min(100%,680px);border:1px solid rgba(208,179,107,.46);border-radius:8px;background:#14212c;color:#d7e0e8;font-family:Arial,Helvetica,sans-serif;box-shadow:0 22px 70px #0000006b;padding:clamp(22px,3.5vw,36px)}.modal-kicker{display:block;color:#d0b36b;font-size:12px;font-weight:900;letter-spacing:0;line-height:1;margin-bottom:12px;text-transform:uppercase}.lesson-modal h1{margin:0;color:#f3f7f9;font-size:clamp(26px,4vw,42px);line-height:1.05}.lesson-modal p{margin:16px 0 0;color:#b4c0c8;font-size:clamp(16px,2.1vw,19px);font-weight:700;line-height:1.45}.course-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:24px}.course-card{position:relative;min-height:142px;border:1px solid rgba(146,164,178,.3);border-radius:8px;background:#182733cc;color:#d7e0e8;cursor:pointer;padding:16px;text-align:left}.course-card:hover,.course-card:focus-visible{border-color:#d0b36b;outline:0}.course-card.selected{border-color:#d0b36b;background:#2b3943f0;box-shadow:inset 0 0 0 1px #d0b36b33}.course-card span{display:block;color:#f3f7f9;font-size:18px;font-weight:900;line-height:1.16}.course-card small{display:block;margin-top:10px;color:#a9b7c0;font-size:13px;font-weight:700;line-height:1.35}.course-card em{position:absolute;right:12px;bottom:12px;color:#d0b36b;font-size:12px;font-style:normal;font-weight:900;text-transform:uppercase}.course-progress{display:inline-flex;margin-top:14px;color:#d0b36b;font-size:12px;font-weight:900;line-height:1;text-transform:uppercase}.course-card.completed{border-color:#4f8f72db}.course-card.locked{color:#687984;cursor:default;opacity:.58}.course-card.locked:hover,.course-card.locked:focus-visible{border-color:#92a4b24d}.modal-primary{min-height:42px;margin-top:24px;border:1px solid #d0b36b;border-radius:6px;background:#d0b36b;color:#121920;cursor:pointer;font-size:15px;font-weight:900;padding:0 18px}.modal-secondary{min-height:42px;border:1px solid rgba(146,164,178,.32);border-radius:6px;background:#182733b8;color:#b4c0c8;cursor:pointer;font-size:15px;font-weight:900;padding:0 16px}.modal-secondary:disabled{color:#52616b;cursor:default}.modal-primary:hover,.modal-primary:focus-visible,.modal-secondary:hover:not(:disabled),.modal-secondary:focus-visible:not(:disabled){background:#e0c47d;color:#121920;outline:0}.pattern-check{display:inline-grid;width:32px;height:32px;place-items:center;margin-right:10px;transform:translateY(-2px);border-radius:50%;background:#4f8f72;color:#f7fbfc;font-size:19px;line-height:1;vertical-align:middle}.modal-pattern-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.modal-pattern-item{display:inline-flex;min-height:34px;align-items:center;gap:8px;border:1px solid rgba(146,164,178,.28);border-radius:6px;background:#1827339e;color:#b4c0c8;cursor:pointer;font-size:13px;font-weight:900;padding:0 10px}.modal-pattern-item:hover,.modal-pattern-item.selected{border-color:#d0b36b;color:#e2cf97}.modal-actions{display:flex;align-items:center;gap:10px;margin-top:24px}.modal-actions .modal-primary{margin-top:0}.keyboard-stage{position:relative;width:min(100%,var(--keyboard-stage-width, 1476px));margin:0 auto;padding-top:var(--keyboard-stage-padding-top, 36px)}.layout-picker{position:absolute;top:0;left:var(--layout-left, 8px);z-index:4;color:#93a0a8;font-family:Arial,Helvetica,sans-serif;font-size:clamp(var(--layout-font-min, 20px),var(--layout-font-fluid, 1.45vw),var(--layout-font-max, 26px));font-weight:700;line-height:1;border-bottom:2px dashed rgba(194,207,216,.45);padding-bottom:var(--layout-padding-bottom, 4px)}.layout-button{border:0;background:transparent;color:inherit;cursor:pointer;font-weight:inherit;padding:0}.layout-menu{position:absolute;top:var(--layout-menu-top, 30px);left:var(--layout-menu-left, -8px);display:grid;gap:2px;width:var(--layout-menu-width, 168px);border:1px solid #53626b;background:#1b2836;padding:var(--layout-menu-padding, 8px);box-shadow:5px 5px 12px #0000003d}.layout-menu button{border:0;background:transparent;color:#93a0a8;cursor:pointer;font-family:Arial,Helvetica,sans-serif;font-size:var(--layout-menu-font, 16px);text-align:left;padding:var(--layout-menu-pad-y, 5px) var(--layout-menu-pad-x, 7px)}.layout-menu button:hover,.layout-menu button.selected{background:#c7d0d4;color:#141d26}.chevron{display:inline-block;width:0;height:0;margin-left:12px;transform:translateY(-2px);border-left:6px solid transparent;border-right:6px solid transparent;border-top:7px solid #0a0c0d;filter:drop-shadow(1px 1px 0 #53626b)}.toolbar{position:absolute;top:var(--toolbar-top, -4px);right:var(--toolbar-right, 22px);display:flex;gap:clamp(var(--toolbar-gap-min, 24px),var(--toolbar-gap-fluid, 3vw),var(--toolbar-gap-max, 48px));align-items:flex-end}.tool{position:relative;display:grid;width:31px;height:31px;place-items:center;border:0;background:transparent;color:#d5dfe5;cursor:pointer;font-family:Arial,Helvetica,sans-serif;font-size:clamp(var(--tool-font-min, 24px),var(--tool-font-fluid, 1.8vw),var(--tool-font-max, 31px));line-height:1;padding:0;text-shadow:1px 1px 0 #3a4850}.tool>span{display:inline-flex}.tool svg{width:1em;height:1em;stroke-width:1.8}.tool:hover{color:#fff}.tool:focus-visible{border-radius:4px;outline:2px solid #69afe5;outline-offset:3px}.tool.on i{display:none}.tool i{position:absolute;top:var(--tool-badge-offset, -12px);right:var(--tool-badge-offset, -12px);width:var(--tool-badge-size, 22px);height:var(--tool-badge-size, 22px);display:grid;place-items:center;border-radius:50%;background:#a8b7bf;color:#f7fbfc;font-size:var(--tool-badge-font, 19px);font-style:normal;font-weight:700;box-shadow:0 0 0 1px #3944498c}.keyboard{display:grid;gap:var(--keyboard-gap, 4px);width:100%}.key-row{display:grid;grid-template-columns:repeat(30,minmax(0,1fr));gap:var(--keyboard-gap, 4px)}.key{position:relative;grid-column:span 2;display:flex;min-width:0;height:clamp(var(--key-height-min, 54px),var(--key-height-fluid, 9.2vh),var(--key-height-max, 98px));align-items:center;justify-content:center;border:var(--key-border-width, 2px) solid #7f8d95;border-radius:var(--key-radius, 8px);background:#fbfbfb;color:#070707;font-family:Arial,Helvetica,sans-serif;font-size:clamp(var(--key-font-min, 22px),var(--key-font-fluid, 1.95vw),var(--key-font-max, 31px));line-height:1;box-shadow:inset 0 1px #fffc,0 1px #00000047}.key-symbol{display:inline-flex;align-items:flex-start;gap:var(--key-symbol-gap, 9px);font-weight:500}.key-symbol sup{margin-top:var(--key-symbol-shift, -8px);font-size:.68em;line-height:1}.key-label{position:absolute;left:var(--key-label-left, 10px);color:#8c9ba2;font-size:clamp(var(--key-label-font-min, 13px),var(--key-label-font-fluid, 1.05vw),var(--key-label-font-max, 19px));font-weight:700;white-space:nowrap}.key-wide,.key-tab,.key-caps{grid-column:span 4}.key-shift{grid-column:span 5}.key-right-shift{grid-column:span 5;background:#c3d0d8}.key-space{grid-column:10 / span 12}.key-alt{grid-column:span 2}.key-alt-left{grid-column:8 / span 2}.key-alt-right{grid-column:22 / span 2}.muted{color:#8d9da5}.active{background:#c7d2d8}.fingers .finger-left{background:#f2df8a}.fingers .finger-right{background:#9ec6e6}.space-row{grid-template-columns:repeat(30,minmax(0,1fr));padding-top:var(--keyboard-space-padding-top, 2px)}#hands div.hand{position:absolute;z-index:3;width:var(--hand-width, 58px);height:var(--hand-height, 100px);pointer-events:none;background:url(/assets/hands2-CfJ1A-nS.png) no-repeat;background-size:var(--hands-sprite-width, 580px) var(--hands-sprite-height, 100px);opacity:.7}#hands #lhand4{background-position:0 0}#hands #lhand3{background-position:var(--hand-offset-1, -58px) 0}#hands #lhand2{background-position:var(--hand-offset-2, -116px) 0}#hands #lhand1{background-position:var(--hand-offset-3, -174px) 0}#hands #lhand0{background-position:var(--hand-offset-4, -232px) 0}#hands #rhand0{background-position:var(--hand-offset-5, -290px) 0}#hands #rhand1{background-position:var(--hand-offset-6, -348px) 0}#hands #rhand2{background-position:var(--hand-offset-7, -406px) 0}#hands #rhand3{background-position:var(--hand-offset-8, -464px) 0}#hands #rhand4{background-position:var(--hand-offset-9, -522px) 0}.footer-mark{position:absolute;left:clamp(28px,6.4vw,110px);bottom:clamp(24px,9vh,96px);width:176px;height:30px;border:3px solid #d7d7d7;background:#ffffffeb;color:#d1d1d1;font-family:Arial,Helvetica,sans-serif;font-size:22px;font-weight:800;line-height:22px;padding-left:8px;opacity:.95}.footer-mark span{position:absolute;right:4px;bottom:-3px;font-size:32px;line-height:1}.theme-link{position:absolute;right:clamp(28px,7.7vw,132px);bottom:clamp(26px,9vh,96px);border:0;border-bottom:2px solid currentColor;background:transparent;color:#a0a9ae;cursor:pointer;font-family:Arial,Helvetica,sans-serif;font-size:clamp(18px,1.45vw,25px);font-weight:700;padding:0}.stats{position:absolute;right:clamp(28px,7.7vw,132px);bottom:clamp(58px,13vh,136px);display:flex;gap:28px;color:#a0a9ae;font-family:Arial,Helvetica,sans-serif;font-size:clamp(17px,1.35vw,23px);font-weight:700}@media(max-width:980px){.trainer{overflow-x:auto;padding-inline:24px}.workspace-shell{width:1340px;grid-template-columns:300px 740px 280px}.keyboard-stage{width:var(--keyboard-stage-width, 1476px)}.lesson-modal-backdrop{place-items:start center;overflow:auto}.course-grid{grid-template-columns:1fr}.modal-actions{flex-wrap:wrap}.modal-actions .modal-primary{flex:1 1 180px}.footer-mark,.theme-link,.stats{position:fixed}}@media(max-height:760px){.trainer{padding-top:34px;padding-bottom:46px}.code-panel{min-height:184px;margin-bottom:10px}.files-panel,.lesson-chat-panel{min-height:500px}.key{height:var(--key-height-compact, 76px)}.footer-mark,.theme-link{bottom:14px}.stats{bottom:44px}}.project-tree-level,.project-tree-branch{display:contents}.project-folder-row{padding-left:calc(20px + var(--tree-depth, 0) * 13px)}.project-file-row{grid-template-columns:22px minmax(0,1fr) auto 10px;padding-left:calc(34px + var(--tree-depth, 0) * 13px)}.project-file-row.locked,.modal-pattern-item.locked,.pattern-pill.locked{cursor:not-allowed;opacity:.48}.project-file-row.locked:hover{background:transparent;color:#b8b8b8}.file-stage-count{min-width:17px;border-radius:8px;background:#3a3d41;color:#bfc6cc;font-size:9px;line-height:15px;text-align:center}.file-code-header .active-breadcrumb{min-width:0;color:#d4d4d4;font-weight:600}.lesson-goal{border-left:2px solid #d0b36b;padding-left:9px}.review-questions,.pattern-tradeoff,.folder-boundaries{display:grid;gap:6px;margin-top:12px;border-top:1px solid rgba(146,164,178,.18);padding-top:10px}.review-questions>strong{color:#9cdcfe;font-size:11px;letter-spacing:.07em;text-transform:uppercase}.review-questions ol{margin:0;padding-left:20px}.review-questions li,.pattern-tradeoff span,.folder-boundaries span{color:#b8c2c8;font-size:12px;line-height:1.45}.next-product-step{color:#c9b77e}.folder-intro-message{margin-bottom:10px;border-color:#9cdcfe57;background:linear-gradient(145deg,#1b2933,#202326)}.folder-intro-message .chat-author{color:#9cdcfe;text-transform:none}.module-map{display:flex;align-items:center;gap:6px;margin-top:12px;overflow-x:auto;color:#7f8c96;font-size:10px;text-transform:uppercase;white-space:nowrap}.module-map span{border:1px solid #3e5666;border-radius:4px;background:#17232b;color:#b9d9ec;padding:4px 6px}.module-map i{color:#d0b36b;font-style:normal}.keyboard-stage.show-console{min-height:112px}.keyboard.console-open,.keyboard-stage.show-console .layout-picker,.keyboard-stage.show-console .toolbar,.keyboard-stage.show-console #hands{opacity:.13;filter:blur(.7px);pointer-events:none;transition:opacity .16s ease,filter .16s ease}.console-popover{position:absolute;z-index:20;bottom:0;left:50%;display:grid;grid-template-rows:40px minmax(0,1fr) 50px;width:min(calc(100% - 4px),720px);height:clamp(180px,25vh,230px);overflow:hidden;transform:translate(-50%);border:2px solid #46515b;border-radius:9px;background:#0c1117;color:#d7e0e8;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;box-shadow:0 16px 42px #0000008f,0 0 0 1px #007acc29;animation:console-popover-in .18s ease-out both}.console-popover-header{display:grid;grid-template-columns:66px minmax(0,1fr) auto;align-items:center;gap:12px;border-bottom:1px solid #2b333b;background:#171d24;padding:0 14px}.console-popover-header strong{min-width:0;overflow:hidden;color:#bfc9d1;font-size:14px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.console-window-dots{display:inline-flex;align-items:center;gap:7px}.console-window-dots i{width:10px;height:10px;border-radius:50%;background:#ff5f57}.console-window-dots i:nth-child(2){background:#febc2e}.console-window-dots i:nth-child(3){background:#28c840}.console-success{display:inline-flex;align-items:center;gap:7px;color:#83c99b;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;font-weight:650;white-space:nowrap}.console-success i{display:grid;width:20px;height:20px;place-items:center;border-radius:50%;background:#3fb95024;color:#3fb950;font-size:14px;font-style:normal}.console-popover-body{min-height:0;overflow:auto;padding:14px 18px 11px}.console-command{color:#9cdcfe;font-size:14px;line-height:1.5}.console-command span{color:#3fb950}.console-popover-body pre,.console-empty-output{margin:8px 0 0;color:#f0f3f5;font:inherit;font-size:16px;line-height:1.45;white-space:pre-wrap}.console-empty-output{color:#7f8c96;font-style:italic}.console-exit-code{display:block;margin-top:10px;color:#66727c;font-size:11px}.console-continue{display:flex;min-width:0;align-items:center;gap:13px;border:0;border-top:1px solid #2b333b;background:#151d25;color:#aebbc5;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;font-weight:600;padding:0 18px;text-align:left}.console-continue:hover,.console-continue:focus-visible{background:#1b2b38;color:#fff;outline:0}.console-continue kbd{display:inline-flex;height:28px;flex:0 0 auto;align-items:center;border:1px solid #56626c;border-bottom-width:2px;border-radius:5px;background:#252d35;color:#e7ebee;font:inherit;font-size:12px;padding:0 10px}.console-continue span:nth-child(2){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.console-continue-arrow{margin-left:auto;color:#75beff;font-size:22px}@media(max-height:700px){.console-popover{grid-template-rows:36px minmax(0,1fr) 44px;height:170px}.console-popover-body{padding-block:9px}.console-popover-body pre,.console-empty-output{font-size:14px}}@keyframes console-popover-in{0%{opacity:0;transform:translate(-50%,8px) scale(.985)}to{opacity:1;transform:translate(-50%) scale(1)}}@media(prefers-reduced-motion:reduce){.console-popover{animation:none}}@media(max-height:700px){.code-panel{min-height:150px}.files-panel,.lesson-chat-panel{min-height:430px}.key{height:var(--key-height-condensed, 62px)}}:root{color:#ccc;background:#181818;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}body{background:#181818}body.practice-page{overflow:hidden}.trainer-home-link{color:#aab7bf;text-decoration:none;font-size:12px}.trainer-home-link:hover{color:#e2cf97}.practice-nojs{max-width:600px;padding:24px;line-height:1.6}.practice-nojs a{color:#e2cf97}.trainer{width:100vw;height:100vh;min-height:620px;overflow:hidden;background:#181818;padding:0}.workspace-shell{display:grid;grid-template-columns:clamp(210px,16vw,270px) minmax(0,1fr) clamp(380px,28vw,460px);width:100%;height:100vh;margin:0;gap:0;align-items:stretch;background:#1e1e1e}.panel-title{display:flex;height:35px;flex:0 0 35px;align-items:center;justify-content:space-between;color:#bbb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;font-weight:600;letter-spacing:.08em;padding:0 14px;text-transform:uppercase;-webkit-user-select:none;user-select:none}.panel-menu{color:#8b8b8b;font-size:13px;letter-spacing:.12em}.files-panel,.lesson-chat-panel{height:auto;min-height:0;padding:0;background:#181818}.files-panel{display:flex;grid-template-rows:none;flex-direction:column;border:0;border-right:1px solid #2b2b2b}.file-tree{display:flex;min-height:0;flex:1;flex-direction:column;overflow:hidden;color:#ccc;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.explorer-heading{display:flex;min-height:24px;align-items:center;color:#ccc;font-size:11px;font-weight:700;letter-spacing:.04em;padding:0 12px}.folder-row{width:100%;min-height:23px;gap:4px;border:0;background:transparent;color:#ccc;cursor:pointer;font-size:12px;font-weight:500;padding:0 8px;text-align:left;text-transform:none}.folder-row:hover{background:#2a2d2e;color:#e6e6e6}.folder-row:focus-visible{outline:1px solid #007fd4;outline-offset:-1px}.nested-folder{padding-left:20px}.folder-caret{width:12px;color:#ccc;font-size:11px;text-align:center}.file-list{display:block;max-height:none;flex:1;overflow:auto;padding:0 0 12px}.file-row{display:grid;grid-template-columns:22px minmax(0,1fr) 10px;width:100%;min-height:23px;gap:4px;border:0;border-radius:0;color:#b8b8b8;font-size:12px;font-weight:400;padding:0 8px 0 34px}.file-row:hover{border:0;background:#2a2d2e;color:#e6e6e6}.file-row.selected{border:0;background:#37373d;color:#fff}.file-row.current:not(.selected){background:#37373d6b;color:#e6e6e6}.file-icon{display:inline-flex;width:20px;height:16px;align-items:center;justify-content:center;border-radius:3px;color:#fff;font-size:8px;font-weight:800;letter-spacing:-.02em}.file-icon-javascript,.editor-file-icon.file-icon-javascript{background:#d7ba3d;color:#1e1e1e}.file-icon-typescript,.editor-file-icon.file-icon-typescript{background:#3178c6}.file-icon-go,.editor-file-icon.file-icon-go{background:#00add8;color:#10242a}.file-icon-php,.editor-file-icon.file-icon-php{background:#777bb4;font-size:7px;letter-spacing:-.04em}.file-icon-python,.editor-file-icon.file-icon-python{background:#3776ab;color:#ffd343}.file-row.completed .file-icon{background:#3f8f69;color:#fff;font-size:11px}.file-dirty{color:#d0b36b;font-size:8px}.training-column{display:grid;grid-template-rows:minmax(0,3fr) minmax(220px,2fr);min-width:0;min-height:0;background:#1e1e1e}.editor-panel{display:grid;grid-template-rows:35px minmax(0,1fr);min-width:0;min-height:0;overflow:hidden}.editor-tabs{display:flex;min-width:0;overflow:hidden;border-bottom:1px solid #2b2b2b;background:#181818}.editor-tab{display:inline-flex;min-width:0;max-width:260px;height:35px;align-items:center;gap:8px;border:0;border-right:1px solid #2b2b2b;background:#181818;color:#969696;cursor:default;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;padding:0 10px}.editor-tab.active{border-top:1px solid #007acc;background:#1e1e1e;color:#fff}.editor-tab>span:nth-child(2){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-file-icon{display:inline-flex;width:18px;height:15px;flex:0 0 auto;align-items:center;justify-content:center;border-radius:3px;color:#fff;font-size:7px;font-weight:800}.editor-close{margin-left:auto;color:#9d9d9d;font-size:17px;line-height:1}.file-code-card{display:grid;grid-template-rows:28px minmax(0,1fr);min-width:0;min-height:0;overflow:hidden;border:0;padding:0;background:#1e1e1e}.file-code-header{min-width:0;min-height:28px;gap:7px;color:#949494;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;font-weight:400;padding:0 14px}.file-code-header strong{min-width:0;overflow:hidden;color:#ccc;font-weight:400;text-overflow:ellipsis;white-space:nowrap}.file-code-header small{overflow:hidden;color:#737373;font-size:10px;font-weight:400;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.written-scroll{grid-template-columns:max-content max-content;width:100%;height:100%;min-height:0;overflow:auto;color:#d4d4d4;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:clamp(12px,.86vw,15px);font-weight:400;line-height:1.55;padding:8px 0 42px}.written-line-numbers{min-width:58px;margin:0 16px 0 0;border:0;background:#1e1e1e;color:#858585;padding:0 12px 0 8px}.written-line-number{height:1.55em;min-width:3ch}.written-code{padding-right:40px;font-weight:400;line-height:1.55}.written-code .hljs-comment{color:#6a9955}.written-code .hljs-keyword,.written-code .hljs-selector-tag{color:#c586c0}.written-code .hljs-string,.written-code .hljs-regexp{color:#ce9178}.written-code .hljs-number,.written-code .hljs-literal{color:#b5cea8}.written-code .hljs-title,.written-code .hljs-title.function_,.written-code .hljs-title.class_{color:#dcdcaa}.written-code .hljs-built_in,.written-code .hljs-variable.language_{color:#4ec9b0}.written-code .hljs-attr,.written-code .hljs-property,.written-code .hljs-params{color:#9cdcfe}.practice-dock{display:grid;grid-template-rows:minmax(100px,.45fr) minmax(120px,.55fr);min-width:0;min-height:0;overflow:hidden;border-top:1px solid #3a3a3a;background:#151a21;box-shadow:0 -5px 14px #0000001f}.code-panel{width:100%;height:100%;min-height:0;margin:0;overflow:hidden;color:#9daab6;font-size:clamp(12px,.92vw,15px);font-weight:500;line-height:1.25;padding:0 14px 6px}.practice-title{display:flex;height:26px;align-items:center;justify-content:space-between;color:#8f9ba6;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.practice-title-actions{display:flex;align-items:center;gap:12px}.new-lesson-button,.continue-lesson-button{display:inline-flex;min-height:20px;align-items:center;gap:5px;border:1px solid #007acc;border-radius:3px;background:#0e639c;color:#fff;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:10px;font-weight:600;letter-spacing:0;padding:0 8px;text-transform:none}.continue-lesson-button{border-color:#c9a94e;background:#a8872f;color:#111820}.new-lesson-button:hover,.new-lesson-button:focus-visible,.continue-lesson-button:hover,.continue-lesson-button:focus-visible{border-color:#75beff;background:#17b;color:#fff;outline:0}.new-lesson-button span,.continue-lesson-button span{font-size:14px;font-weight:400;line-height:1}.lesson-controls{min-height:25px;flex-wrap:nowrap;gap:6px;margin-bottom:3px;overflow:hidden}.choice-row{gap:3px}.choice{min-height:22px;border-color:#3b4650;border-radius:3px;background:#1e252d;font-size:10px;font-weight:700;padding:0 6px}.choice:hover,.choice.selected{border-color:#007acc;background:#0e639c;color:#fff}.pattern-progress-row{display:none}.topic-row{min-width:0;overflow-x:auto;scrollbar-width:none}.topic-row::-webkit-scrollbar{display:none}.exercise-title{margin-left:4px;color:#667581;font-size:10px;font-weight:500}.current-line{height:27px;border:1px solid #263541;border-left:2px solid #007acc;background:#1b2731;color:#d7e0e8;padding:0 7px}.target-lines{margin:2px 0 0}.code-line{min-height:1.22em;overflow:hidden;text-overflow:ellipsis;white-space:pre}.next-char{background:#264f78;outline:1px solid #3d7fb3}.keyboard-stage{align-self:start;width:min(calc(100% - 24px),var(--keyboard-stage-width, 738px));min-height:0;margin:0 auto;padding-top:18px}.keyboard,.key-row{gap:2px}.practice-dock .key{height:clamp(22px,3.2vh,30px);border:1px solid #59636b;border-radius:4px;background:#e5e7e9;font-size:clamp(10px,.8vw,13px);box-shadow:none}.practice-dock .key.active{border-color:#69afe5;background:#9cdcfe;box-shadow:0 0 0 1px #007acc}.practice-dock .key-label{left:5px;font-size:clamp(7px,.6vw,9px)}.practice-dock .key-symbol{gap:4px}.practice-dock .key-symbol sup{margin-top:-4px}.space-row{padding-top:0}.layout-picker{top:3px;left:4px;border-bottom-width:1px;color:#8f9ba6;font-size:10px;padding-bottom:2px}.chevron{margin-left:5px;transform:translateY(-1px);border-right-width:3px;border-left-width:3px;border-top:4px solid #8f9ba6;filter:none}.layout-menu{top:18px;left:-2px;width:110px;gap:1px;border-color:#454545;background:#252526;padding:4px}.layout-menu button{font-size:10px;padding:4px 5px}.toolbar{top:1px;right:4px;gap:11px}.tool{width:20px;height:20px;font-size:18px;text-shadow:none}.tool i{top:-5px;right:-5px;width:10px;height:10px;font-size:9px}.lesson-chat-panel{display:grid;grid-template-rows:40px 54px minmax(0,1fr);border:0;border-left:1px solid #2b2b2b}.lesson-chat-panel>.lesson-chat-title{position:relative;height:40px;font-size:12px;padding:0}.session-metrics{position:absolute;right:10px;top:7px;display:flex;max-width:calc(100% - 20px);align-items:center;overflow:hidden;border:1px solid #3b3b3b;border-radius:5px;background:#252526f5;box-shadow:0 2px 8px #0000003d;color:#ccc;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:0;text-transform:none}.session-metric{display:inline-flex;min-width:0;height:25px;align-items:center;gap:5px;border:0;border-right:1px solid #3b3b3b;background:transparent;color:inherit;font-size:10px;line-height:1;padding:0 8px;white-space:nowrap}.session-metric:last-child{border-right:0}.session-metric svg{width:13px;height:13px;flex:0 0 auto;stroke-width:2}.session-metric>span{color:#9d9d9d}.session-metric strong{overflow:hidden;color:#f0f0f0;font-size:11px;font-variant-numeric:tabular-nums;font-weight:650;text-overflow:ellipsis}.session-metric-time{cursor:pointer}.session-metric-time:hover,.session-metric-time:focus-visible{background:#333337;outline:0}.session-metric-time:focus-visible{box-shadow:inset 0 0 0 1px #007fd4}.session-metric-time svg{color:#75beff}.session-metric-speed svg{color:#dcdcaa}.session-metric-errors svg{color:#f48771}.chat-context{display:flex;min-width:0;flex-direction:column;justify-content:center;gap:3px;border-top:1px solid #242424;border-bottom:1px solid #2b2b2b;background:#1e1e1e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;padding:0 16px}.chat-context span{color:#767676;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.chat-context strong{overflow:hidden;color:#d4d4d4;font-size:14px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.lesson-chat{height:auto;min-height:0;gap:10px;overflow:auto;color:#c8c8c8;font-size:15px;font-weight:400;line-height:1.48;padding:16px 14px 30px}.lesson-chat-scroll-spacer{min-height:calc(100% - 16px);flex:0 0 calc(100% - 16px);pointer-events:none}.chat-block{gap:0}.chat-message{border:1px solid #343434;border-radius:7px;background:#202020;padding:14px 16px;box-shadow:0 3px 10px #0000001f}.intro-message{border-color:#2f4655;background:#1c2730}.checkpoint-message{margin-top:10px;border-color:#5ab07e57;background:linear-gradient(145deg,#1c2b26,#1d2726);animation:checkpoint-appear .18s ease-out}.checkpoint-message .chat-section{color:#72ad88}.checkpoint-message .chat-author,.checkpoint-message .explanation-summary>strong{color:#8ad5a7}.checkpoint-message .explanation-summary{border-color:#8ad5a733}@keyframes checkpoint-appear{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.course-overview-message{border-color:#d0b36b6b;background:linear-gradient(145deg,#2b281e,#24251f 52%,#1d282b)}.course-overview-message .chat-author,.course-overview-message .explanation-summary>strong,.course-overview-message .project-commands>strong,.course-overview-message .project-outcome>strong{color:#e1c475}.project-outcome{margin-top:13px;border:1px solid rgba(225,196,117,.24);border-radius:5px;background:#080a0a3d;padding:10px 11px}.project-outcome>strong,.project-commands>strong{display:block;font-size:11px;letter-spacing:.07em;text-transform:uppercase}.project-outcome p{margin-top:6px}.course-overview-message .project-highlights{border-color:#e1c47538}.project-commands{display:grid;gap:6px;margin-top:14px}.project-commands>strong{margin-bottom:2px}.project-commands code{display:block;overflow:hidden;border-color:#e1c47533;background:#0709095c;color:#dcdcaa;padding:5px 7px;text-overflow:ellipsis;white-space:nowrap}.chat-author{color:#75beff;font-size:12px;letter-spacing:.04em}.chat-section{display:block;margin-bottom:5px;color:#7f8c96;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.chat-message p{margin-top:8px;white-space:pre-line}.chat-message p:last-of-type{margin-bottom:0}.explanation-content code{border:1px solid rgba(117,190,255,.18);border-radius:3px;background:#00000038;color:#9cdcfe;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.92em;font-weight:600;padding:1px 4px}.explanation-section-title{margin:15px 0 9px;color:#75beff;font-size:13px;letter-spacing:.07em;text-transform:uppercase}.explanation-subtitle{margin:14px 0 5px;color:#d7e6ef;font-size:14px}.explanation-list{margin:7px 0 0;padding-left:20px}.explanation-list li+li{margin-top:4px}.explanation-summary{margin-top:12px;border-top:1px solid rgba(117,190,255,.2);padding-top:10px}.explanation-summary>strong{display:block;color:#75beff;font-size:12px;letter-spacing:.07em;text-transform:uppercase}.explanation-summary ul{margin:7px 0 0;padding-left:18px}.explanation-summary li+li{margin-top:5px}.lesson-modal{max-height:calc(100vh - 48px);overflow:auto}.lesson-modal .explanation-content p{margin-top:12px}.lesson-modal .explanation-summary{margin-top:16px;border-color:#d0b36b47}.lesson-modal .explanation-summary>strong{color:#d0b36b;font-size:12px}.lesson-modal .explanation-summary ul{color:#b4c0c8;font-size:15px;font-weight:700;line-height:1.42}.course-language-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:24px}.course-language-card{min-height:92px;border:1px solid rgba(146,164,178,.3);border-radius:8px;background:#182733cc;color:#d7e0e8;cursor:pointer;font-size:22px;font-weight:900}.course-language-card:hover,.course-language-card:focus-visible,.course-language-card.selected{border-color:#d0b36b;background:#2b3943f0;color:#f3f7f9;outline:0}.course-language-back{display:inline-flex;min-height:32px;align-items:center;gap:7px;margin-top:18px;border:1px solid rgba(146,164,178,.3);border-radius:6px;background:#182733b8;color:#b4c0c8;cursor:pointer;font-size:13px;font-weight:900;padding:0 11px}.course-language-back:hover,.course-language-back:focus-visible{border-color:#d0b36b;color:#e2cf97;outline:0}.status-bar{position:absolute;z-index:12;right:0;bottom:0;left:0;display:flex;height:24px;align-items:center;gap:18px;background:#007acc;color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;padding:0 10px}.status-bar .footer-mark,.status-bar .theme-link,.status-bar .stats{position:static;width:auto;height:auto;margin:0;border:0;background:transparent;color:inherit;font:inherit;opacity:1;padding:0}.status-bar .footer-mark{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.status-bar .footer-mark span{position:static;font-size:13px;line-height:1}.status-bar .stats{display:flex;gap:18px}.status-bar .theme-link{margin-left:auto;border-bottom:0;font-weight:500;text-decoration:none}*{scrollbar-color:#424242 transparent;scrollbar-width:thin}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:#424242}*::-webkit-scrollbar-track{background:transparent}@media(max-width:1180px){.workspace-shell{grid-template-columns:210px minmax(560px,1fr) 340px;width:100%}.trainer{overflow-x:auto;padding:0}.keyboard-stage{width:min(calc(100% - 20px),var(--keyboard-stage-width, 738px))}}@media(max-height:760px){.trainer{padding:0}.training-column{grid-template-rows:minmax(0,3fr) minmax(220px,2fr)}.practice-dock{grid-template-rows:minmax(96px,.42fr) minmax(124px,.58fr)}.code-panel,.files-panel,.lesson-chat-panel{min-height:0}.practice-dock .key{height:19px}.practice-title{height:21px}.lesson-controls{min-height:20px;margin-bottom:1px}.choice{min-height:18px;font-size:9px}.current-line{height:22px}.code-panel{font-size:11px;padding-bottom:3px}.keyboard-stage{padding-top:15px}.footer-mark,.theme-link,.stats{position:static}}.file-list.project-file-list .project-folder-row{padding-left:calc(20px + var(--tree-depth, 0) * 13px)}.file-list.project-file-list .project-file-row{grid-template-columns:22px minmax(0,1fr) auto 10px;padding-left:calc(34px + var(--tree-depth, 0) * 13px)}
