@font-face{font-family:Plex Arabic;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-arabic-arabic-400.woff2) format("woff2");unicode-range:u+06??,u+0750-077f,u+0870-088e,u+0890-0891,u+0897-08e1,u+08e3-08ff,u+200c-200e,u+2010-2011,u+204f,u+2e41,u+fb50-fdff,u+fe70-fe74,u+fe76-fefc,u+102e0-102fb,u+10e60-10e7e,u+10ec2-10ec4,u+10efc-10eff,u+1ee00-1ee03,u+1ee05-1ee1f,u+1ee21-1ee22,u+1ee24,u+1ee27,u+1ee29-1ee32,u+1ee34-1ee37,u+1ee39,u+1ee3b,u+1ee42,u+1ee47,u+1ee49,u+1ee4b,u+1ee4d-1ee4f,u+1ee51-1ee52,u+1ee54,u+1ee57,u+1ee59,u+1ee5b,u+1ee5d,u+1ee5f,u+1ee61-1ee62,u+1ee64,u+1ee67-1ee6a,u+1ee6c-1ee72,u+1ee74-1ee77,u+1ee79-1ee7c,u+1ee7e,u+1ee80-1ee89,u+1ee8b-1ee9b,u+1eea1-1eea3,u+1eea5-1eea9,u+1eeab-1eebb,u+1eef0-1eef1}@font-face{font-family:Plex Arabic;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-arabic-latin-400.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Plex Arabic;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-arabic-arabic-500.woff2) format("woff2");unicode-range:u+06??,u+0750-077f,u+0870-088e,u+0890-0891,u+0897-08e1,u+08e3-08ff,u+200c-200e,u+2010-2011,u+204f,u+2e41,u+fb50-fdff,u+fe70-fe74,u+fe76-fefc,u+102e0-102fb,u+10e60-10e7e,u+10ec2-10ec4,u+10efc-10eff,u+1ee00-1ee03,u+1ee05-1ee1f,u+1ee21-1ee22,u+1ee24,u+1ee27,u+1ee29-1ee32,u+1ee34-1ee37,u+1ee39,u+1ee3b,u+1ee42,u+1ee47,u+1ee49,u+1ee4b,u+1ee4d-1ee4f,u+1ee51-1ee52,u+1ee54,u+1ee57,u+1ee59,u+1ee5b,u+1ee5d,u+1ee5f,u+1ee61-1ee62,u+1ee64,u+1ee67-1ee6a,u+1ee6c-1ee72,u+1ee74-1ee77,u+1ee79-1ee7c,u+1ee7e,u+1ee80-1ee89,u+1ee8b-1ee9b,u+1eea1-1eea3,u+1eea5-1eea9,u+1eeab-1eebb,u+1eef0-1eef1}@font-face{font-family:Plex Arabic;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-arabic-latin-500.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Plex Arabic;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plex-arabic-arabic-600.woff2) format("woff2");unicode-range:u+06??,u+0750-077f,u+0870-088e,u+0890-0891,u+0897-08e1,u+08e3-08ff,u+200c-200e,u+2010-2011,u+204f,u+2e41,u+fb50-fdff,u+fe70-fe74,u+fe76-fefc,u+102e0-102fb,u+10e60-10e7e,u+10ec2-10ec4,u+10efc-10eff,u+1ee00-1ee03,u+1ee05-1ee1f,u+1ee21-1ee22,u+1ee24,u+1ee27,u+1ee29-1ee32,u+1ee34-1ee37,u+1ee39,u+1ee3b,u+1ee42,u+1ee47,u+1ee49,u+1ee4b,u+1ee4d-1ee4f,u+1ee51-1ee52,u+1ee54,u+1ee57,u+1ee59,u+1ee5b,u+1ee5d,u+1ee5f,u+1ee61-1ee62,u+1ee64,u+1ee67-1ee6a,u+1ee6c-1ee72,u+1ee74-1ee77,u+1ee79-1ee7c,u+1ee7e,u+1ee80-1ee89,u+1ee8b-1ee9b,u+1eea1-1eea3,u+1eea5-1eea9,u+1eeab-1eebb,u+1eef0-1eef1}@font-face{font-family:Plex Arabic;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plex-arabic-latin-600.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Plex Arabic;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plex-arabic-arabic-700.woff2) format("woff2");unicode-range:u+06??,u+0750-077f,u+0870-088e,u+0890-0891,u+0897-08e1,u+08e3-08ff,u+200c-200e,u+2010-2011,u+204f,u+2e41,u+fb50-fdff,u+fe70-fe74,u+fe76-fefc,u+102e0-102fb,u+10e60-10e7e,u+10ec2-10ec4,u+10efc-10eff,u+1ee00-1ee03,u+1ee05-1ee1f,u+1ee21-1ee22,u+1ee24,u+1ee27,u+1ee29-1ee32,u+1ee34-1ee37,u+1ee39,u+1ee3b,u+1ee42,u+1ee47,u+1ee49,u+1ee4b,u+1ee4d-1ee4f,u+1ee51-1ee52,u+1ee54,u+1ee57,u+1ee59,u+1ee5b,u+1ee5d,u+1ee5f,u+1ee61-1ee62,u+1ee64,u+1ee67-1ee6a,u+1ee6c-1ee72,u+1ee74-1ee77,u+1ee79-1ee7c,u+1ee7e,u+1ee80-1ee89,u+1ee8b-1ee9b,u+1eea1-1eea3,u+1eea5-1eea9,u+1eeab-1eebb,u+1eef0-1eef1}@font-face{font-family:Plex Arabic;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plex-arabic-latin-700.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-latin-400.woff2) format("woff2")}@font-face{font-family:Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plex-mono-latin-600.woff2) format("woff2")}.chat{--brand:#e2603f;--on-brand:#2a1b3d;position:fixed;inset-block-end:20px;left:20px;z-index:60;display:grid;justify-items:left;grid-gap:var(--s3);gap:var(--s3)}.chat-launcher{position:relative;width:64px;height:64px;border-radius:50%;border:0;padding:0;display:grid;place-items:center;cursor:pointer;background:var(--brand);color:var(--on-brand);font-size:1.3rem;box-shadow:0 0 0 3px var(--bg),0 8px 20px -8px rgba(0,0,0,.45);transition:transform var(--dur-fast) var(--ease)}.chat-launcher:hover{transform:scale(1.06)}.chat-avatar .robot-eye,.chat-launcher .robot-eye{fill:var(--brand)}.chat-nudge{position:absolute;inset-block-end:36px;left:44px;padding:5px 10px;border-radius:12px 12px 12px 3px;background:#fff;color:#2a1b3d;border:2px solid var(--brand);font-size:var(--t-xs);font-weight:700;white-space:nowrap;box-shadow:0 6px 16px -6px rgba(0,0,0,.35);animation:chat-nudge 2.4s var(--ease) infinite}@keyframes chat-nudge{0%,70%,to{transform:translateY(0)}80%{transform:translateY(-4px)}}.chat-avatar{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:50%;background:var(--brand);color:var(--on-brand)}.chat-panel{width:min(380px,calc(100vw - 40px));height:min(560px,calc(100vh - 140px));display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 24px 60px -20px rgba(0,0,0,.45);overflow:hidden;animation:chat-in var(--dur-base) var(--ease)}@keyframes chat-in{0%{opacity:0;transform:translateY(10px) scale(.98)}}.chat-head{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line);background:var(--surface)}.chat-head div{display:grid;-webkit-margin-end:auto;margin-inline-end:auto;line-height:var(--lh-snug)}.chat-head strong{font-size:var(--t-ui)}.chat-head small{color:var(--ink-2);font-size:var(--t-xs)}.chat-icon{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer}.chat-icon:hover{color:var(--ink);border-color:var(--line-strong)}.chat-list{overflow-y:auto;padding:var(--s4);display:flex;flex-direction:column;gap:var(--s3);background:var(--bg)}.chat-welcome{display:grid;grid-gap:var(--s3);gap:var(--s3);font-size:var(--t-ui);color:var(--ink-2)}.chat-msg{max-width:88%;padding:10px 14px;border-radius:16px;font-size:var(--t-ui);line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere}.chat-msg:has(.chat-text){white-space:normal}.chat-text{display:grid;grid-gap:8px;gap:8px}.chat-text ol,.chat-text p,.chat-text ul{margin:0}.chat-text ol,.chat-text ul{display:grid;grid-gap:4px;gap:4px;-webkit-padding-start:1.2em;padding-inline-start:1.2em}.chat-text li::marker{color:var(--brand)}.chat-text strong{font-weight:700}.chat-text code{font-family:var(--font-mono);font-size:.86em;padding:1px 5px;border-radius:5px;background:var(--surface-2);unicode-bidi:-webkit-isolate;unicode-bidi:isolate}.chat-text pre{margin:0;padding:10px 12px;border-radius:10px;background:var(--code-bg);color:var(--code-fg);font-size:.82rem;line-height:1.6;text-align:left;overflow-x:auto;white-space:pre}.chat-text pre code{padding:0;background:none;font-size:inherit}.chat-msg small{display:block;-webkit-margin-before:6px;margin-block-start:6px;color:var(--ink-2);font-size:var(--t-xs)}.chat-msg.is-user{align-self:flex-start;background:var(--brand);color:var(--on-brand);border-end-start-radius:4px}.chat-msg.is-assistant{align-self:flex-end;background:var(--surface);border:1px solid var(--line);border-end-end-radius:4px}.chat-msg.is-failed{border-color:color-mix(in srgb,var(--warn) 40%,transparent);color:var(--warn)}.chat-msg.is-typing{display:flex;gap:5px;padding:14px 16px}.chat-msg.is-typing span{width:7px;height:7px;border-radius:50%;background:var(--ink-2);animation:chat-dot 1s ease-in-out infinite}.chat-msg.is-typing span:nth-child(2){animation-delay:.15s}.chat-msg.is-typing span:nth-child(3){animation-delay:.3s}@keyframes chat-dot{50%{opacity:.3;transform:translateY(-3px)}}.chat-form{padding:var(--s3);background:var(--bg)}.chat-box{display:grid;grid-gap:var(--s2);gap:var(--s2);padding:var(--s3);border:1px solid var(--line-strong);border-radius:16px;background:var(--surface)}.chat-box:focus-within{border-color:var(--brand)}.chat-box textarea{min-height:44px;max-height:120px;resize:none;padding:0 var(--s1);border:0;background:transparent;color:var(--ink);font:inherit;font-size:var(--t-ui);line-height:1.6}.chat-box textarea:focus{outline:none}.chat-actions{display:flex;justify-content:space-between;align-items:center}.chat-actions button{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;cursor:pointer}.chat-clear{border:1.5px solid var(--brand);background:transparent;color:var(--brand)}.chat-send{border:0;background:var(--brand);color:var(--on-brand)}.chat-actions button:disabled{opacity:.45;cursor:default}@media (max-width:560px){.chat{left:12px;inset-block-end:12px}.chat-launcher{width:52px;height:52px}.chat-nudge{display:none}.chat-panel{width:calc(100vw - 24px);height:calc(100vh - 110px)}}@media (prefers-reduced-motion:reduce){.chat-msg.is-typing span,.chat-nudge,.chat-panel{animation:none}}.admin-board{grid-template-columns:minmax(0,1fr);display:grid;grid-gap:var(--s8);gap:var(--s8)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.admin-table{width:100%;border-collapse:collapse;font-size:var(--t-ui)}.admin-table td,.admin-table th{padding:var(--s3) var(--s4);-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line);text-align:start;vertical-align:top}.admin-table tr:last-child td{-webkit-border-after:0;border-block-end:0}.admin-table th{font-size:var(--t-xs);font-weight:700;color:var(--ink-2);background:var(--tint);white-space:nowrap}.admin-table td>.title,.admin-table th>.title{display:grid;grid-gap:var(--s1);gap:var(--s1)}.admin-table td>.actions{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center}.admin-table td.date{white-space:nowrap}.admin-table .state,.admin-table .title .rule{font-size:var(--t-xs);color:var(--ink-2)}.admin-table .state{justify-self:start;font-weight:600;border-radius:var(--r-pill);padding:2px 10px;background:var(--surface-2);border:1px solid var(--line)}.admin-table .state.is-open{border-color:color-mix(in srgb,var(--ok) 36%,transparent);background:var(--ok-soft);color:var(--ok)}.admin-table .actions button{font:inherit;font-size:var(--t-xs);font-weight:600;min-height:34px;padding-inline:var(--s3);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.admin-table .actions button:hover{border-color:var(--line-strong);color:var(--ink)}.admin-table .actions button.is-on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}.admin-table label.date{display:inline-flex;align-items:center;gap:var(--s2);font-size:var(--t-xs);color:var(--ink-2)}.admin-table .date input{font:inherit;font-size:var(--t-xs);min-height:34px;padding-inline:var(--s2);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);color:var(--ink)}.admin-nav{display:flex;flex-wrap:wrap;gap:var(--s1);padding:var(--s1);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);width:-moz-fit-content;width:fit-content;max-width:100%}.cohort-board,.grant-board{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:var(--s5);gap:var(--s5)}.inline-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s3)}.inline-form label{display:grid;grid-gap:var(--s1);gap:var(--s1);flex:1 1 160px;min-width:0;font-size:var(--t-sm);font-weight:600;color:var(--ink-2)}.inline-form label.wide{flex:2 1 260px}.inline-form input,.inline-form select{font:inherit;font-size:var(--t-ui);font-weight:400;color:var(--ink);min-height:42px;padding-inline:var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--bg);max-width:100%}.inline-form .btn{flex:0 0 auto}.chip-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2)}.pill{font:inherit;font-size:var(--t-xs);font-weight:600;min-height:34px;padding-inline:var(--s3);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.pill:hover{border-color:var(--line-strong);color:var(--ink)}.pill.is-on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.cohort>header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3)}.cohort>header h3{-webkit-margin-end:auto;margin-inline-end:auto}.member-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:var(--s2);gap:var(--s2)}.member-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s3);padding:var(--s2) var(--s4);border:1px solid var(--line);border-radius:var(--r);background:var(--tint);font-size:var(--t-ui)}.member-list li>span{display:grid;grid-gap:2px;gap:2px;min-width:0}.member-list .rule{font-size:var(--t-xs);color:var(--ink-2)}.admin-nav{-webkit-margin-after:var(--s7);margin-block-end:var(--s7)}.admin-nav .nav-link{border-radius:var(--r-pill)}.admin-nav .nav-link[aria-current=page]{background:var(--surface-2)}.admin-nav .nav-link[aria-current=page]:after{display:none}.admin-stage{display:grid;grid-gap:var(--s5);gap:var(--s5);-webkit-padding-before:var(--s5);padding-block-start:var(--s5);-webkit-border-before:2px solid var(--line-strong);border-block-start:2px solid var(--line-strong)}.admin-track{display:grid;grid-gap:var(--s3);gap:var(--s3)}.container-head{justify-content:space-between;gap:var(--s3)}.container-head,.container-head .title{display:flex;flex-wrap:wrap;align-items:center}.container-head .title{gap:var(--s2) var(--s3)}.container-head h2{font-size:var(--t-lg)}.container-head h3{font-size:var(--t-md)}.container-head .rule{font-size:var(--t-xs);color:var(--ink-2)}.admin-table .state.is-draft,.admin-table .state.is-hidden,.container-head .state{font-size:var(--t-xs);font-weight:600;border-radius:var(--r-pill);padding:2px 10px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2)}.container-head .state.is-open{border-color:color-mix(in srgb,var(--ok) 36%,transparent);background:var(--ok-soft);color:var(--ok)}.admin-table .state.is-hidden,.container-head .state.is-hidden{border-color:color-mix(in srgb,var(--warn) 36%,transparent);background:var(--warn-soft);color:var(--warn)}.container-actions{display:inline-flex;flex-wrap:wrap;gap:var(--s1);padding:3px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface)}.container-actions button{font:inherit;font-size:var(--t-xs);font-weight:600;min-height:32px;padding-inline:var(--s3);border:0;border-radius:var(--r-pill);background:transparent;color:var(--ink-2);cursor:pointer}.container-actions button:hover{color:var(--ink)}.container-actions button[aria-pressed=true]{background:var(--ink);color:var(--bg)}.hidden-by{margin:0;padding:var(--s2) var(--s3);-webkit-border-start:3px solid var(--warn);border-inline-start:3px solid var(--warn);border-radius:var(--r-sm);background:var(--warn-soft);font-size:var(--t-sm)}.admin-track.is-off .admin-table{opacity:.6}.cohort-invite{display:grid;grid-gap:var(--s1);gap:var(--s1);padding-block:var(--s3);border-block:1px dashed var(--line)}.cohort-invite p{margin:0}.invite-url{overflow-wrap:anywhere;font-family:var(--font-mono);font-size:var(--t-sm)}.user-number{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink-2);font-weight:600}.user-search{max-width:28rem;margin-bottom:var(--s4)}.admin-table .actions .role-tag{display:inline-flex;align-items:center;min-height:34px;padding-inline:var(--s3);border:1px dashed var(--line);border-radius:var(--r-pill);font-size:var(--t-xs);font-weight:600;color:var(--ink-2)}.notes,.practice{display:grid;grid-gap:var(--s4);gap:var(--s4);-webkit-margin-before:var(--s8);margin-block-start:var(--s8)}.notes>.lede,.practice>.lede{color:var(--ink-2);font-size:var(--t-ui);-webkit-margin-before:calc(-1 * var(--s3));margin-block-start:calc(-1 * var(--s3))}.exercise{display:grid;grid-gap:var(--s4);gap:var(--s4);padding:var(--s5) var(--s6);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}.exercise.is-project{border-color:var(--brand-line)}.ex-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s4)}.ex-head h3{font-size:var(--t-md);line-height:var(--lh-tight)}.ex-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);-webkit-margin-before:var(--s2);margin-block-start:var(--s2);font-size:var(--t-xs);color:var(--ink-2)}.tag.is-warn{background:var(--warn-soft);color:var(--warn)}.ex-solved{display:inline-flex;align-items:center;gap:var(--s1);padding:2px var(--s2);border-radius:var(--r-pill);background:var(--ok-soft);color:var(--ok);font-size:var(--t-xs);font-weight:600;white-space:nowrap}.ex-prompt .chat-text{font-size:var(--t-base);line-height:var(--lh-body)}.ex-crash code,.ex-hint code,.ex-prompt code{font-family:var(--font-mono);font-size:.9em;padding:1px 5px;border-radius:4px;background:var(--code-bg)}.ex-hint pre,.ex-printed pre,.ex-prompt pre,.ex-setup pre{margin:var(--s2) 0 0;padding:var(--s3) var(--s4);border-radius:var(--r);background:var(--code-bg);color:var(--code-fg);font:.84rem/1.7 var(--font-mono);overflow-x:auto;text-align:left}.ex-hint pre code,.ex-prompt pre code,.ex-setup pre code{padding:0;background:none}.ex-printed summary,.ex-setup summary{cursor:pointer;font-size:var(--t-sm);font-weight:600;color:var(--ink-2)}.ex-label{font-size:var(--t-xs);font-weight:600;color:var(--ink-2)}.ex-tests ul{display:grid;grid-gap:0;gap:0;margin:var(--s2) 0 0;padding:var(--s2) var(--s4);border-radius:var(--r);background:var(--tint);border:1px solid var(--line);list-style:none;text-align:left}.ex-tests code{font:.82rem/1.6 var(--font-mono);color:var(--ink);white-space:pre-wrap;word-break:break-word}textarea.ex-editor{display:block;width:100%;box-sizing:border-box;margin:0;padding:var(--s3) var(--s4);resize:vertical;border:1px solid var(--line-strong);-webkit-border-start:4px solid var(--brand);border-inline-start:4px solid var(--brand);border-radius:var(--r-sm);background:var(--code-bg);color:var(--code-fg);font:.9rem/1.7 var(--font-mono);-moz-tab-size:4;tab-size:4;white-space:pre;overflow:auto;direction:ltr;text-align:left}textarea.ex-editor:focus-visible{outline:2px solid var(--focus);outline-offset:2px}textarea.ex-editor[readonly]{border-inline-start-color:var(--line-strong);opacity:.85}.ex-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3)}.ex-shortcut{font-size:var(--t-xs);color:var(--ink-2)}.ex-shortcut a{color:var(--brand-ink);font-weight:600}.ex-outcome{display:grid;grid-gap:var(--s3);gap:var(--s3);padding:var(--s4);border:1px solid color-mix(in srgb,var(--brand) 35%,var(--line));border-radius:var(--r);background:var(--brand-soft)}.ex-outcome.is-ok{border-color:color-mix(in srgb,var(--ok) 35%,transparent);background:var(--ok-soft)}.ex-summary{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s3);font-size:var(--t-ui)}.ex-outcome.is-ok .ex-summary strong{color:var(--ok)}.ex-crash{font-size:var(--t-sm)}.ex-results{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;padding:0;list-style:none}.ex-results li{display:flex;align-items:flex-start;gap:var(--s3);padding:var(--s2) var(--s3);border-radius:var(--r-sm);background:var(--surface);font-size:var(--t-sm)}.ex-mark{flex:none;display:grid;place-items:center;width:20px;height:20px;-webkit-margin-before:3px;margin-block-start:3px;border-radius:50%;color:var(--on-brand);background:var(--brand)}.ex-results li.is-ok .ex-mark{background:var(--ok)}.ex-result-body{display:grid;grid-gap:var(--s1);gap:var(--s1);min-width:0}.ex-error{display:block;font:.8rem/1.6 var(--font-mono);color:var(--brand-ink);white-space:pre-wrap;word-break:break-word;text-align:left}.ex-error-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s1) var(--s3)}.ex-line{font-size:var(--t-xs);color:var(--ink-2);white-space:nowrap}.ex-diff{display:grid;grid-gap:2px;gap:2px;margin:0}.ex-diff div{display:grid;grid-template-columns:4.5rem minmax(0,1fr);grid-gap:var(--s2);gap:var(--s2);align-items:baseline}.ex-diff dt{font-size:var(--t-xs);color:var(--ink-2)}.ex-diff dd{margin:0;font:.82rem/1.6 var(--font-mono);white-space:pre-wrap;word-break:break-word;text-align:left}.ex-hints{display:grid;grid-gap:var(--s3);gap:var(--s3)}.ex-hint{display:grid;grid-gap:var(--s2);gap:var(--s2);padding:var(--s4);border:1px solid color-mix(in srgb,var(--tip) 30%,transparent);border-radius:var(--r);background:var(--tip-soft);font-size:var(--t-ui)}.ex-hint .ex-label{color:var(--tip)}.ex-hint-ask{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);font-size:var(--t-xs);color:var(--ink-2)}.ex-review.is-approved{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 30%,transparent);color:var(--ok)}.ex-review.is-pending{background:var(--tip-soft);border-color:color-mix(in srgb,var(--tip) 30%,transparent)}.ex-review.is-changes{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent);color:var(--warn)}.lesson-badges{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3)}.lesson-badges:empty{display:none}.mastery-badge{display:inline-flex;align-items:center;gap:var(--s2);padding:3px var(--s3);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);font-size:var(--t-sm);color:var(--ink-2)}.mastery-dot{width:10px;height:10px;border-radius:50%;border:2px solid var(--line-strong)}.is-attempted .mastery-dot,.mastery-dot.is-attempted{border-color:var(--warn);background:var(--warn-soft)}.is-familiar .mastery-dot,.mastery-dot.is-familiar{border-color:var(--tip);background:color-mix(in srgb,var(--tip) 45%,transparent)}.is-proficient .mastery-dot,.mastery-dot.is-proficient{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 60%,transparent)}.is-mastered .mastery-dot,.mastery-dot.is-mastered{border-color:var(--brand);background:var(--brand)}.bookmark-btn.is-on{border-color:var(--brand-line);color:var(--brand-ink)}.bookmark-btn.is-on .icon{fill:currentColor}.note-list{display:grid;grid-gap:var(--s3);gap:var(--s3);margin:0;padding:0;list-style:none}.note-list li{display:grid;grid-gap:var(--s2);gap:var(--s2);padding:var(--s4);border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.notes blockquote{position:relative;margin:0;padding-inline:var(--s3) var(--s7);-webkit-border-start:3px solid var(--brand);border-inline-start:3px solid var(--brand);color:var(--ink-2);font-size:var(--t-ui)}.notes blockquote .icon-btn{position:absolute;inset-inline-end:0;top:-4px;width:28px;height:28px}.note-body{white-space:pre-wrap}.note-form{display:grid;grid-gap:var(--s2);gap:var(--s2)}.note-form textarea{width:100%;box-sizing:border-box;padding:var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--t-ui);resize:vertical}.note-form textarea:focus-visible{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 22%,transparent)}.note-actions{display:flex;gap:var(--s2)}.note-mark{background:color-mix(in srgb,var(--brand) 16%,transparent);color:inherit;border-radius:2px;box-shadow:0 1px 0 var(--brand-line)}.note-picker{position:fixed;z-index:40;transform:translate(-50%,calc(-100% - 8px));display:inline-flex;align-items:center;gap:var(--s1);padding:6px var(--s3);border:0;border-radius:var(--r-sm);background:var(--ink);color:var(--bg);font:inherit;font-size:var(--t-xs);font-weight:600;box-shadow:var(--shadow-pop);cursor:pointer}.header-search{position:relative;display:flex;align-items:center;width:min(28rem,34vw)}.header-search>.icon{position:absolute;inset-inline-start:14px;color:var(--ink-2);pointer-events:none}.header-search input{width:100%;height:40px;padding-inline:36px 34px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-2);color:var(--ink);font:inherit;font-size:var(--t-sm);transition:border-color var(--dur-fast) var(--ease),width var(--dur-base) var(--ease)}.header-search input:hover{border-color:var(--line-strong)}.header-search input:focus{outline:none;background:var(--surface);border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 22%,transparent)}.header-search kbd,.shortcuts kbd{font:600 var(--t-xs) var(--font-mono);padding:0 6px;border:1px solid var(--line);border-block-end-width:2px;border-radius:4px;color:var(--ink-2);background:var(--tint)}.header-search kbd{position:absolute;inset-inline-end:12px;pointer-events:none}.bar-end .header-search-link,.header-search input:focus+kbd{display:none}.shortcuts{width:min(26rem,calc(100vw - 32px));padding:var(--s5) var(--s6);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-pop)}.shortcuts::-webkit-backdrop{background:rgba(15,16,18,.45)}.shortcuts::backdrop{background:rgba(15,16,18,.45)}.shortcuts-head{display:flex;align-items:center;justify-content:space-between;-webkit-margin-after:var(--s4);margin-block-end:var(--s4)}.shortcuts-head h2{display:flex;align-items:center;gap:var(--s2);font-size:var(--t-md)}.shortcuts dl{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0}.shortcuts dl div{display:flex;justify-content:space-between;gap:var(--s4);font-size:var(--t-ui)}.shortcuts dd{margin:0;color:var(--ink-2)}@media (max-width:1080px){.header-search{display:none}.bar-end .header-search-link{display:inline-flex}}@media (max-width:760px){.exercise{padding:var(--s4)}.ex-diff div{grid-template-columns:1fr;gap:0}}.review-page{display:grid;grid-gap:var(--s5);gap:var(--s5);max-width:var(--w-prose);margin-inline:auto}.review-session{display:grid;grid-gap:var(--s4);gap:var(--s4)}.review-top{display:flex;align-items:center;gap:var(--s3);font-size:var(--t-sm);color:var(--ink-2)}.review-top .meter{flex:1 1}.review-card{display:grid;grid-gap:var(--s4);gap:var(--s4);padding:var(--s6);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}.review-card .eyebrow a{color:var(--ink);text-decoration:underline;text-underline-offset:.25em}.review-front{font-size:var(--t-lg);font-weight:600;line-height:var(--lh-snug)}.review-back{-webkit-padding-before:var(--s4);padding-block-start:var(--s4);-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line);color:var(--ink);line-height:var(--lh-body)}.review-card code{font-family:var(--font-mono);font-size:.88em;padding:1px 5px;border-radius:4px;background:var(--code-bg)}.review-options{display:grid;grid-gap:var(--s2);gap:var(--s2)}.review-option{padding:var(--s3) var(--s4);border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface);color:var(--ink);font:inherit;text-align:start;cursor:pointer}.review-option:hover:not(:disabled){border-color:var(--ink-2)}.review-option.is-right{border-color:var(--ok);background:var(--ok-soft)}.review-option.is-wrong{border-color:var(--brand);background:var(--brand-soft)}.review-option:disabled{cursor:default}.review-grades{display:flex;flex-wrap:wrap;gap:var(--s2)}.review-flip{justify-self:start}.review-done{display:grid;justify-items:center;grid-gap:var(--s3);gap:var(--s3);padding:var(--s8) var(--s6);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);text-align:center;color:var(--ok)}.review-done p{color:var(--ink)}.board-practice{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--s5);gap:var(--s5)}.practice-card{display:grid;align-content:start;grid-gap:var(--s3);gap:var(--s3);padding:var(--s5);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}.practice-card>header{justify-content:space-between}.practice-card h2,.practice-card>header{display:flex;align-items:center;gap:var(--s2)}.practice-card h2{font-size:var(--t-md)}.practice-card .btn{justify-self:start}.practice-help{font-size:var(--t-xs);color:var(--ink-2);line-height:var(--lh-snug)}.practice-big{display:flex;align-items:baseline;gap:var(--s2);color:var(--ink-2);font-size:var(--t-ui)}.practice-big .num{font-size:var(--t-2xl);font-weight:600;color:var(--ink)}.goal-line{font-size:var(--t-ui);font-weight:600}.goal-line.is-met{color:var(--ok)}.goal-pick{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1)}.goal-pick button{width:34px;height:34px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:inherit;font-weight:600;cursor:pointer}.goal-pick button.is-on{border-color:var(--brand);background:var(--brand);color:var(--on-brand)}.goal-pick .muted{-webkit-margin-start:var(--s2);margin-inline-start:var(--s2);font-size:var(--t-xs)}.week-dots{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:var(--s1);gap:var(--s1);margin:0;padding:0;list-style:none}.week-dots li{display:grid;place-items:center;height:30px;border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink-2);font-size:var(--t-xs);font-weight:600}.week-dots li.is-on{background:var(--brand);color:var(--on-brand)}.week-dots li.is-future{background:transparent;border:1px dashed var(--line)}.goal-stats{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--s3);gap:var(--s3);margin:0}.goal-stats div{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--r-sm);background:var(--tint)}.goal-stats dt{display:inline-flex;align-items:center;gap:var(--s1);font-size:var(--t-xs);color:var(--ink-2)}.goal-stats dd{margin:0;font-weight:600}.mastery-list{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;padding:0;list-style:none}.mastery-list li{display:grid;grid-template-columns:auto 1fr auto;align-items:center;grid-gap:var(--s2);gap:var(--s2);font-size:var(--t-ui)}@media (max-width:1080px){.board-practice{grid-template-columns:1fr 1fr}.goal-card{grid-column:1/-1}}@media (max-width:760px){.board-practice{grid-template-columns:1fr}}.saved-page,.search-page{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:var(--s5);gap:var(--s5);max-width:var(--w-prose);margin-inline:auto}.search-form{position:relative;display:flex;gap:var(--s2)}.search-form>.icon{position:absolute;inset-inline-start:14px;top:13px;color:var(--ink-2);pointer-events:none}.search-form input{flex:1 1;min-width:0;min-height:44px;padding-inline:42px var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--t-base)}.search-form input:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 22%,transparent)}.search-form .btn{min-height:44px}.search-count{font-size:var(--t-sm);color:var(--ink-2);-webkit-margin-after:var(--s3);margin-block-end:var(--s3)}.saved-list,.search-results{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;padding:0;list-style:none}.search-results a{display:grid;grid-gap:var(--s1);gap:var(--s1);padding:var(--s4) var(--s5);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);transition:border-color var(--dur-fast) var(--ease)}.saved-list a:hover,.search-results a:hover{border-color:var(--line-strong)}.search-where{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);font-size:var(--t-xs);color:var(--ink-2)}.search-results strong{font-size:var(--t-md)}.search-snippet{font-size:var(--t-ui);color:var(--ink-2);line-height:var(--lh-snug)}.search-snippet mark{background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--ink);border-radius:2px}.saved-list a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;grid-gap:var(--s3);gap:var(--s3);padding:var(--s3) var(--s4);border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.saved-list a>.icon:first-child{color:var(--brand)}.saved-list span{display:grid}.saved-list small{font-size:var(--t-xs);color:var(--ink-2)}.saved-group{display:grid;grid-gap:var(--s2);gap:var(--s2)}.saved-group h3{font-size:var(--t-ui)}.saved-group h3 a:hover{text-decoration:underline;text-underline-offset:.25em}.extra-questions{margin-block:var(--s6);-webkit-padding-before:var(--s5);padding-block-start:var(--s5);-webkit-border-before:1px solid var(--line);border-block-start:1px solid var(--line)}.extra-questions>p{margin-block:var(--s1) 0}.teach-page{display:grid;grid-gap:var(--s6);gap:var(--s6)}.teach-filter{padding:var(--s4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}.notice-ok{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 30%,transparent)}.notice-warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.notice-error{background:var(--brand-soft);border-color:var(--brand-line);color:var(--brand-ink)}.state-chip{display:inline-flex;align-items:center;min-height:24px;padding-inline:var(--s2);border:1px solid var(--line);border-radius:var(--r-pill);font-size:var(--t-xs);font-weight:600;color:var(--ink-2);background:var(--surface);white-space:nowrap}.state-chip.is-approved,.state-chip.is-published,.state-chip.is-verified{border-color:color-mix(in srgb,var(--ok) 40%,transparent);background:var(--ok-soft);color:var(--ok)}.state-chip.is-pending,.state-chip.is-unverified{border-color:color-mix(in srgb,var(--warn) 40%,transparent);background:var(--warn-soft);color:var(--warn)}.state-chip.is-changes{border-color:var(--brand-line);background:var(--brand-soft);color:var(--brand-ink)}.teach-flags ul{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;padding:0;list-style:none}.teach-flags li{display:flex;flex-wrap:wrap;gap:var(--s1) var(--s3);padding:var(--s2) var(--s3);-webkit-border-start:3px solid var(--warn);border-inline-start:3px solid var(--warn);border-radius:var(--r-sm);background:var(--warn-soft)}.teach-flags h2{display:flex;align-items:center;gap:var(--s2)}.gradebook th[scope=row]{position:-webkit-sticky;position:sticky;inset-inline-start:0;background:var(--surface);z-index:1;text-align:start;min-width:180px}.grade-cell,.gradebook thead th{white-space:nowrap}.grade-cell .mastery-dot{display:inline-block;vertical-align:-1px;-webkit-margin-end:var(--s1);margin-inline-end:var(--s1)}.grade-cell.is-none{color:var(--ink-2)}.grade-average{font-weight:700}.work-cell{white-space:nowrap;font-size:var(--t-sm)}.work-cell.is-done{color:var(--ok)}.work-cell.is-late,.work-cell.is-open{color:var(--warn)}.work-cell.is-missing{color:var(--brand-ink)}.assignment-list{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;padding:0;list-style:none}.assignment-list li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);padding-block:var(--s2);-webkit-border-after:1px solid var(--line);border-block-end:1px solid var(--line)}.assignment-list li .btn{-webkit-margin-start:auto;margin-inline-start:auto}.rate{display:inline-flex;align-items:center;gap:var(--s2)}.rate .meter{width:64px}.failing-list{display:grid;grid-gap:var(--s1);gap:var(--s1);margin:0;padding:0;list-style:none;font-size:var(--t-sm)}.failing-list .tag{-webkit-margin-start:var(--s1);margin-inline-start:var(--s1)}.admin-table td.is-high{color:var(--brand-ink);font-weight:700}.teach-lessons{display:grid;grid-gap:var(--s4);gap:var(--s4);margin:0;padding:0;list-style:none}.teach-lessons header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s3)}.teach-lessons h2{font-size:var(--t-md)}.teach-exercises{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;padding:0;list-style:none}.teach-exercises li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r)}.teach-exercises code{font-size:var(--t-sm);color:var(--ink-2)}.exercise-editor{display:grid;grid-gap:var(--s5);gap:var(--s5)}.editor-status{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2)}.editor-status .notice{flex:1 1 100%;margin:0}.editor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));grid-gap:var(--s4);gap:var(--s4)}.editor-grid label,.editor-wide,.review-note{display:grid;grid-gap:var(--s1);gap:var(--s1);font-size:var(--t-sm);font-weight:600;color:var(--ink-2)}.exercise-editor .editor-grid input,.exercise-editor textarea,.review-note textarea{font:inherit;font-size:var(--t-ui);font-weight:400;color:var(--ink);padding:var(--s2) var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--bg);min-height:42px;width:100%;resize:vertical}.exercise-editor .code,.review-code{font-family:var(--font-mono);font-size:var(--t-sm);line-height:1.55;-moz-tab-size:4;tab-size:4}.inline-form label.check{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--s2);min-height:42px}.inline-form label.check input{min-height:0;width:18px;height:18px}.editor-tests{display:grid;grid-gap:var(--s3);gap:var(--s3);margin:0;padding:0;list-style:none;counter-reset:test}.editor-tests>li{padding:var(--s3);border:1px solid var(--line);border-radius:var(--r);background:var(--bg)}.editor-expect{margin:var(--s2) 0 0;font-size:var(--t-sm);overflow-wrap:anywhere}.editor-actions{display:flex;flex-wrap:wrap;gap:var(--s2)}.similar-list{margin:0;-webkit-padding-start:var(--s5);padding-inline-start:var(--s5)}.review-queue{display:grid;grid-gap:var(--s4);gap:var(--s4);margin:0;padding:0;list-style:none}.review-item header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--s3)}.review-item h2{font-size:var(--t-md)}.review-item summary{cursor:pointer;font-weight:600}.review-code{margin:var(--s2) 0 0;padding:var(--s3) var(--s4);border-radius:var(--r);background:var(--code-bg);color:var(--code-fg);overflow-x:auto;max-height:420px}.chip-row .pill[aria-current=page]{border-color:var(--ink);color:var(--ink)}.assign-list{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;padding:0;list-style:none}.assign-list li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s3);padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r)}.assign-list li a{font-weight:600}.assign-list .state-chip{-webkit-margin-start:auto;margin-inline-start:auto}.state-chip.is-done{border-color:color-mix(in srgb,var(--ok) 40%,transparent);background:var(--ok-soft);color:var(--ok)}.state-chip.is-late,.state-chip.is-open{border-color:color-mix(in srgb,var(--warn) 40%,transparent);background:var(--warn-soft);color:var(--warn)}.state-chip.is-missing{border-color:var(--brand-line);background:var(--brand-soft);color:var(--brand-ink)}.admin-table th[scope=row]{font-weight:400}.work-cell .num{-webkit-margin-start:var(--s1);margin-inline-start:var(--s1)}.failing-list li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s3)}.editor-grid{align-items:start}.state-chip.is-working{border-color:color-mix(in srgb,var(--tip) 40%,transparent);background:var(--tip-soft);color:var(--ink)}.board-placement a{display:inline-flex;align-items:center;gap:var(--s2);font-weight:600}.placement-page{display:grid;grid-gap:var(--s5);gap:var(--s5)}.placement-test{max-width:var(--w-prose)}.placement-pick{font-size:var(--t-md)}.placement-tracks{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));grid-gap:var(--s4);gap:var(--s4);margin:0;padding:0;list-style:none}.placement-tracks h3{font-size:var(--t-md)}.placement-tracks .btn{justify-self:start}.placement-last.is-passed{color:var(--ok);font-weight:600}.placement-questions{display:grid;grid-gap:var(--s4);gap:var(--s4);margin:0;padding:0;list-style:none}.placement-questions fieldset{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;padding:0;border:0;min-width:0}.placement-questions legend{-webkit-margin-after:var(--s3);margin-block-end:var(--s3);font-weight:600;line-height:var(--lh-snug)}.placement-option{display:flex;align-items:flex-start;gap:var(--s3);padding:var(--s3);border:1px solid var(--line);border-radius:var(--r);cursor:pointer}.placement-option.is-on{border-color:var(--ink);background:var(--surface-2)}.placement-option input{-webkit-margin-before:4px;margin-block-start:4px;accent-color:var(--brand)}.placement-submit{position:-webkit-sticky;position:sticky;bottom:var(--s4);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;-webkit-margin-before:var(--s4);margin-block-start:var(--s4);padding:var(--s3) var(--s4);box-shadow:var(--shadow-1)}.placement-result,.placement-submit{gap:var(--s3);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}.placement-result{display:grid;justify-items:start;grid-gap:var(--s3);padding:var(--s6)}.placement-result.is-passed{border-color:color-mix(in srgb,var(--ok) 40%,transparent);background:var(--ok-soft)}.review-draft{align-items:center;gap:var(--s2) var(--s3);font-size:var(--t-xs)}.card-counts,.review-draft{display:flex;flex-wrap:wrap}.card-counts{gap:var(--s2)}.cards-editor{display:grid;grid-gap:var(--s4);gap:var(--s4)}.cards-generate .inline-form input[type=number]{width:5.5em}.cards-list{list-style:none;margin:0;padding:0}.card-item,.cards-list{display:grid;grid-gap:var(--s3);gap:var(--s3)}.card-item header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2)}.card-item.is-draft{-webkit-border-start:3px solid var(--warn,var(--brand));border-inline-start:3px solid var(--warn,var(--brand))}.card-body{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;font-size:var(--t-ui)}.card-body dt{font-size:var(--t-xs);font-weight:600;color:var(--ink-2)}.card-body dd,.card-body p{margin:0}.card-options{margin:0;-webkit-padding-start:1.4em;padding-inline-start:1.4em;display:grid;grid-gap:var(--s1);gap:var(--s1)}.card-options li.is-right{color:var(--ok);font-weight:600}.card-form{display:grid;grid-gap:var(--s3);gap:var(--s3)}.card-form label{display:grid;grid-gap:var(--s1);gap:var(--s1);font-size:var(--t-sm);font-weight:600;color:var(--ink-2)}.card-form input[type=text],.card-form textarea{font:inherit;font-size:var(--t-ui);font-weight:400;color:var(--ink);padding:var(--s2) var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--bg);width:100%;resize:vertical}.card-form .card-option-row{grid-template-columns:auto 1fr;align-items:center;gap:var(--s2)}.learner-stats{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:var(--s3);gap:var(--s3)}.learner-stats>div{display:grid;align-content:start;grid-gap:var(--s1);gap:var(--s1);padding:var(--s4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}.learner-stats dt{font-size:var(--t-sm);color:var(--ink-2)}.learner-stats dd{margin:0;font-size:var(--t-lg);font-weight:700}.learner-stats small{font-size:var(--t-xs);color:var(--ink-2)}.learner-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));grid-gap:var(--s5);gap:var(--s5)}.learner-lessons,.learner-missed{display:grid;grid-gap:var(--s2);gap:var(--s2);margin:0;padding:0;list-style:none}.learner-lessons li{display:flex;align-items:center;gap:var(--s3);padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r-sm)}.learner-lessons .title{display:grid;flex:1 1;min-width:0}.learner-lessons .rule{font-size:var(--t-xs)}.learner-lessons .num{font-weight:700}.learner-missed li{display:grid;grid-gap:var(--s1);gap:var(--s1);padding:var(--s3);-webkit-border-start:3px solid var(--line-strong);border-inline-start:3px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface-2)}.learner-missed .rule{font-size:var(--t-sm)}