.challenge{grid-template-columns:minmax(0,1fr);grid-template-areas:"intro""work""controls""solved""hints";gap:16px;max-width:1400px;margin:0 auto;padding:16px;display:grid}.intro{grid-area:intro}.workspace{grid-area:work;min-width:0}.controls{grid-area:controls}.solved{grid-area:solved}.hints{grid-area:hints}.concept{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:.85rem}.intro h1{margin:2px 0 10px;font-size:1.6rem;line-height:1.25}.goal{border-left:4px solid var(--accent);background:var(--surface);border-radius:0 var(--radius) var(--radius) 0;margin-top:14px;padding:12px 14px}.goal h2,.hints h2{margin:0 0 4px;font-size:.95rem}.term-frame{background:var(--term-bg);border-radius:var(--radius);padding:6px;position:relative}#term{height:max(260px,52vh)}.loading{text-align:center;color:#e8e8e6;background:var(--term-bg);border-radius:var(--radius);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;display:flex;position:absolute;inset:0}.loading p{margin:0}.loading progress{width:min(280px,80%);height:6px}.keys{scrollbar-width:thin;gap:6px;margin-top:8px;padding-bottom:4px;display:flex;overflow-x:auto}.keys button{min-width:42px;min-height:40px;font:14px var(--mono);flex:none;padding:4px 8px}@media (hover:hover) and (pointer:fine){.keys{display:none}}.answer{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.answer label{font-size:.95rem;font-weight:600}.answer input{font:16px var(--mono);border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);min-height:42px;color:var(--text);padding:8px 10px}.buttons{flex-wrap:wrap;gap:8px;display:flex}.feedback{min-height:1.5em;margin:10px 0 0}.feedback:empty{display:none}.feedback.pass,.feedback.fail{border-radius:var(--radius);padding:8px 12px}.feedback.pass{color:var(--ok);background:var(--ok-bg)}.feedback.fail{color:var(--bad);background:var(--bad-bg)}.solved{border:1px solid var(--ok);border-radius:var(--radius);background:var(--surface);padding:14px}.solved h2{color:var(--ok);margin:0 0 8px;font-size:1.1rem}.solved details{margin-bottom:12px}.solved summary{cursor:pointer;font-weight:600}.solved .prose{margin-top:8px}.hints ol{margin:6px 0 10px;padding-left:1.4em}.hints li{margin-bottom:8px}.not-found{max-width:640px;margin:40px auto;padding:0 16px}@media (width>=900px){.challenge{grid-template:"intro work""controls work""solved work""hints work"1fr/minmax(320px,2fr) minmax(0,3fr);column-gap:24px}.workspace{align-self:start;position:sticky;top:16px}#term{height:calc(100vh - 110px);max-height:760px}}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}
