:root{color:#d7dde5;background:#07090d;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;background:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px),#07090d;background-size:28px 28px}button,input{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.app-shell.study-mode{display:grid;grid-template-rows:auto minmax(0,1fr);height:100vh;overflow:hidden}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1500px;margin:0 auto;width:100%;padding:14px 28px 0}.app-toolbar{display:flex;align-items:center;gap:10px}.mode-switch{display:inline-flex;gap:8px;padding:4px;border:1px solid #232a34;border-radius:8px;background:#0c1017d6}.mode-switch button,.rail-link,.prototype-warning button,.reset-button{border:1px solid #2b313b;border-radius:7px;padding:8px 12px;background:#0c1017;color:#d7dde5}.mode-switch button.active{border-color:#d7dde5}.app-context{display:grid;justify-items:end;gap:2px;color:#7d8590}.app-context strong{color:#f0f6fc;font-size:14px;font-weight:600}.app-context span{font-size:12px}.prototype-warning-overlay{position:fixed;inset:0;display:grid;place-items:center;padding:24px;background:#030508cc;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:20}.prototype-warning{display:grid;gap:14px;max-width:520px;border:1px solid #2b313b;border-radius:8px;padding:28px;background:#0c1017}.prototype-warning p,.prototype-warning h1{margin:0}.prototype-warning p{color:#7d8590;font-size:13px;text-transform:uppercase;letter-spacing:.08em}.prototype-warning h1{color:#f0f6fc;font-size:28px;line-height:1.25}.prototype-warning button{justify-self:start}.reset-button{min-width:84px}.reset-dialog-actions{display:flex;gap:10px}.danger-button{border-color:#f8514980!important;background:#f8514914!important}.study-shell{display:grid;grid-template-columns:284px minmax(0,1fr);gap:24px;align-items:stretch;min-height:0;max-width:1500px;width:100%;height:100%;margin:0 auto;padding:18px 28px 24px;overflow:hidden}.study-rail{display:grid;align-content:start;gap:14px;min-height:0;overflow:hidden;border:1px solid #2b313b;border-radius:8px;padding:14px;background:#0c10178a;color:#7d8590}.exercise-rail,.set-rail{display:grid;gap:10px}.exercise-rail button,.set-rail button{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;align-items:center;width:100%;min-height:50px;border:1px solid #2b313b;border-radius:8px;padding:10px 12px;background:#0c1017;color:#7d8590;text-align:left}.exercise-rail button.active,.set-rail button.active{border-color:#d7dde5}.exercise-rail button strong,.set-rail button strong{color:#d7dde5;font-size:13px;font-weight:600}.exercise-rail button span,.set-rail button span,.set-rail button em{color:#7d8590;font-size:12px;font-style:normal}.set-rail button{min-height:44px;padding:8px 10px}.set-rail button.incomplete{box-shadow:inset 0 -3px #59636f}.set-rail button.partial{box-shadow:inset 0 -3px #d29922}.set-rail button.complete{box-shadow:inset 0 -3px #3fb950}.rail-link{font-size:12px}.study-surface{position:relative;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;align-content:stretch;gap:18px;width:100%;max-width:none;min-height:0;height:100%;margin:0 auto;padding:38px 44px;background:transparent}.study-header{display:flex;align-items:center;gap:12px}.study-header h1{margin:0;color:#7d8590;font-size:14px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.study-header span{border:1px solid #2b313b;border-radius:999px;padding:3px 8px;color:#d7dde5;font-size:11px}.study-form{display:grid;grid-template-columns:minmax(240px,.92fr) minmax(320px,1.08fr);gap:28px;align-items:stretch;min-height:0}.instruction-pane,.terminal-input-pane{min-width:0}.instruction-pane{display:grid;align-content:center;border-right:1px solid #232a34;padding-right:32px}.rep-note{display:grid;gap:10px;margin-top:24px;color:#7d8590}.rep-note-toggle{width:fit-content;border:1px solid #2b313b;border-radius:6px;padding:6px 10px;background:#0c1017;color:#d7dde5;font-size:14px}.rep-note p{max-width:480px;margin:0;color:#7d8590;font-size:14px;line-height:1.5}.failure-explanation{margin-top:22px;border-left:3px solid #f85149;padding:12px 0 12px 16px;color:#ffa198;font-size:14px;line-height:1.5;transition:border-color .18s ease,color .18s ease}.good-work-prompt{display:grid;gap:12px}.good-work-prompt h2{margin:0;color:#f0f6fc;font-size:42px;line-height:1}.good-work-prompt p,.good-work-prompt li{margin:0;color:#7d8590;font-size:15px;line-height:1.5}.good-work-prompt ul{display:grid;gap:6px;margin:6px 0 0;padding-left:18px}.terminal-input-pane{display:grid;grid-template-rows:28px minmax(0,auto) 34px 18px;align-content:center;gap:10px}.markdown-prompt{display:grid;gap:10px}.markdown-prompt p{max-width:520px;margin:0;color:#f0f6fc;font-size:28px;line-height:1.32}.markdown-prompt code{border:1px solid #2b313b;border-radius:6px;padding:2px 6px;background:#0c1017;color:#58a6ff;font-size:.9em}.terminal-shell{--terminal-inline-padding: 28px;display:grid;gap:10px;width:100%}.terminal-output-window,.terminal-input-window{position:relative;border:1px solid #30363d;border-radius:2px;background:linear-gradient(rgba(88,166,255,.04),transparent),#020409;overflow:hidden;transition:border-color .18s ease,box-shadow .22s ease}.terminal-output-window{display:grid;grid-template-rows:repeat(12,18px);align-content:end;width:100%;min-height:248px;padding:16px var(--terminal-inline-padding);font-family:IBM Plex Mono,SFMono-Regular,Consolas,monospace;font-size:14px;line-height:18px;letter-spacing:0;color:#d7dde5}.terminal-input-window{display:block;width:100%;min-height:52px;padding:16px var(--terminal-inline-padding);cursor:text;font-family:IBM Plex Mono,SFMono-Regular,Consolas,monospace;font-size:14px;line-height:18px;color:#d7dde5}.terminal-shell:focus-within .terminal-input-window{border-color:#8b949e}.terminal-shell.success-flash .terminal-input-window{animation:success-border-flash .5s ease-out}.terminal-shell.fail-flash .terminal-input-window{animation:failure-border-flash .5s ease-out}@keyframes success-border-flash{0%,to{border-color:#2b313b;box-shadow:none}12%,84%{border-color:#3fb950;box-shadow:0 0 0 3px #3fb9503d,0 0 22px #3fb9502e}}@keyframes failure-border-flash{0%,to{border-color:#2b313b;box-shadow:none}12%,84%{border-color:#f85149;box-shadow:0 0 0 3px #f8514938,0 0 22px #f8514929}}.terminal-grid-line{min-width:0;height:18px;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere}.terminal-grid-line.blank{color:transparent}.terminal-grid-line.placeholder{color:#59636f}.terminal-grid-line.command{display:flex;align-items:center;gap:0}.terminal-prompt{flex:0 0 auto;margin-right:8px;color:#3fb950}.terminal-typed-text{flex:0 0 auto}.terminal-placeholder-text{margin-left:1ch;color:#59636f}.terminal-cursor{flex:0 0 auto;width:8px;height:16px;background:#d7dde5;animation:terminal-cursor-blink 1s steps(2,start) infinite}.terminal-cursor.solid{animation:none;opacity:1}@keyframes terminal-cursor-blink{0%,45%{opacity:1}46%,to{opacity:0}}.study-form .terminal-input-window input{position:absolute;width:1px;height:1px;border:0;padding:0;background:transparent;color:transparent;font-size:1px;outline:0;opacity:0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.study-form input{width:100%;border:0;padding:0;background:transparent;color:#f0f6fc;font-size:22px;outline:0}.study-form input::placeholder{color:#59636f}.continue-hint{margin:0;color:#59636f;font-size:13px}.progress-track{position:absolute;top:22px;left:54px;right:54px;display:grid;grid-template-columns:repeat(auto-fit,minmax(18px,1fr));gap:5px}.progress-track span{height:8px;border-radius:999px;background:#232a34}.progress-track .complete{background:#3fb950}.progress-track .partial{background:#d29922}.progress-track .incomplete{background:#232a34}.feedback-indicator{display:flex;align-items:center;justify-content:center;justify-self:end;width:68px;height:28px;border:1px solid #2b313b;border-radius:999px;background:#0c1017;color:#59636f;font-size:12px;font-weight:700;letter-spacing:.12em;transition:border-color .18s ease,color .18s ease,background .18s ease,box-shadow .22s ease}.feedback-indicator.pass{border-color:#3fb95080;color:#3fb950;box-shadow:0 0 18px #3fb9502e}.feedback-indicator.fail{border-color:#f851498c;color:#f85149;box-shadow:0 0 18px #f8514924}.terminal-feedback-slot{display:flex;align-items:center;gap:10px;min-height:34px;color:#7d8590;font-size:14px}.next-button{flex:0 0 auto;min-width:96px;border:1px solid #2b313b;border-radius:7px;padding:8px 12px;background:#0c1017;color:#d7dde5;transition:border-color .18s ease,color .18s ease,background .18s ease}.study-empty-state{display:grid;gap:16px}.study-empty-state h2{margin:0;color:#f0f6fc;font-size:38px}.study-empty-state p,.study-empty-state li{margin:0;color:#7d8590;font-size:15px}.dashboard-view{min-height:calc(100vh - 64px);padding:28px 32px 104px}.dashboard-header{display:flex;align-items:end;justify-content:space-between;max-width:1500px;margin:0 auto 28px}.dashboard-header p,.dashboard-header h1{margin:0}.dashboard-header p{color:#7d8590;font-size:13px;text-transform:uppercase;letter-spacing:.08em}.dashboard-header h1{margin-top:8px;color:#f0f6fc;font-size:34px}.dashboard-header span{color:#7d8590;font-size:13px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:20px;max-width:1500px;margin:0 auto}.exercise-summary{border:1px solid #2b313b;border-radius:8px;background:#0c1017d6}.exercise-summary{padding:22px}.exercise-summary.active{border-color:#d7dde5}.exercise-summary-head{display:flex;align-items:start;justify-content:space-between;gap:16px}.exercise-summary h2,.exercise-summary p{margin:0}.exercise-summary h2{color:#f0f6fc;font-size:22px}.exercise-summary p{margin-top:12px;color:#7d8590;line-height:1.5}.today-action{width:100%;margin-top:22px;border:1px solid #3fb950;border-radius:8px;padding:12px 14px;background:#3fb95014;color:#d7dde5;text-align:left}.today-action:disabled{border-color:#2b313b;background:#0c1017;color:#7d8590;cursor:not-allowed}.exercise-summary dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0 0}.exercise-summary dl div{border-top:1px solid #232a34;padding-top:12px}.exercise-summary dt{color:#7d8590;font-size:12px}.exercise-summary dd{margin:4px 0 0;color:#f0f6fc;font-size:24px}.dashboard-set-list{display:grid;gap:10px;margin-top:18px}.dashboard-set-list button{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:6px 12px;align-items:center;width:100%;border:1px solid #2b313b;border-radius:8px;padding:14px 14px 12px;background:#0c1017;color:#d7dde5;text-align:left}.dashboard-set-list button.active{border-color:#d7dde5}.dashboard-set-list button[data-tone=incomplete]{box-shadow:inset 4px 0 #59636f}.dashboard-set-list button[data-tone=partial]{box-shadow:inset 4px 0 #d29922}.dashboard-set-list button[data-tone=complete]{box-shadow:inset 4px 0 #3fb950}.dashboard-set-list small{grid-column:2 / -1;color:#7d8590}@media(max-width:820px){.app-shell{height:auto;min-height:100vh;overflow:visible}.study-shell,.study-shell.expanded{grid-template-columns:1fr;height:auto;overflow:visible;padding:18px}.study-surface{min-height:560px;padding:42px 22px}.progress-track{left:22px;right:22px}.study-form,.dashboard-menu{grid-template-columns:1fr}.instruction-pane{border-right:0;border-bottom:1px solid #232a34;padding-right:0;padding-bottom:22px}.markdown-prompt p{font-size:25px}.dashboard-view{padding:24px}.dashboard-header{align-items:start;flex-direction:column;gap:8px}}
