.article-page .progress-sr-only,.library-page .progress-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}.article-page .progress-link,.library-page .progress-link{display:inline-flex;align-items:center;gap:var(--cf-space-150);flex-shrink:0;border:1px solid var(--cf-color-border);background:var(--cf-color-surface);color:var(--cf-color-text-secondary);font-size:var(--cf-font-size-300);font-weight:var(--cf-font-weight-semibold);white-space:nowrap;cursor:pointer;transition:color var(--cf-duration-fast),border-color var(--cf-duration-fast),background-color var(--cf-duration-fast)}.article-page .progress-link svg,.library-page .progress-link svg{width:14px;height:14px;flex-shrink:0}.article-page .progress-link:hover,.library-page .progress-link:hover{color:var(--cf-color-text);border-color:var(--cf-color-primary-border);background:var(--cf-color-surface-hover)}.article-page .progress-link:focus-visible,.library-page .progress-link:focus-visible{outline:2px solid var(--cf-color-focus-ring);outline-offset:2px}.article-page .progress-link[aria-busy=true],.library-page .progress-link[aria-busy=true]{cursor:progress}.article-page .progress-link-count,.library-page .progress-link-count{min-width:18px;padding:0 var(--cf-space-100);border-radius:var(--cf-radius-full);background:var(--cf-color-success-subtle);color:var(--cf-color-success);font-size:var(--cf-font-size-250);text-align:center}.article-page .progress-link.is-header,.library-page .progress-link.is-header{min-height:32px;padding:0 var(--cf-space-300);border-radius:var(--cf-radius-full)}@media(max-width:768px){.article-page .progress-link.is-header,.library-page .progress-link.is-header{padding:0 var(--cf-space-200)}.article-page .progress-link.is-header .progress-link-count,.article-page .progress-link.is-header .progress-link-label,.library-page .progress-link.is-header .progress-link-count,.library-page .progress-link.is-header .progress-link-label{display:none}}@media(max-width:1200px){.article-page .shell-header .progress-link.is-header,.library-page .shell-header .progress-link.is-header{padding:0 var(--cf-space-200)}.article-page .shell-header .progress-link.is-header .progress-link-label,.library-page .shell-header .progress-link.is-header .progress-link-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}}@media(max-width:768px){.article-page .shell-header .progress-link.is-header,.library-page .shell-header .progress-link.is-header{display:none}}.article-page .progress-link.is-sidebar,.library-page .progress-link.is-sidebar{width:100%;gap:var(--cf-space-250);padding:var(--cf-space-200) var(--cf-space-250);border:0;border-radius:var(--cf-radius-150);background:none;font:inherit;font-size:var(--cf-font-size-300);text-align:left}.article-page .progress-link.is-sidebar .progress-link-count,.library-page .progress-link.is-sidebar .progress-link-count{margin-left:auto}.article-page .progress-link.is-sidebar:hover,.library-page .progress-link.is-sidebar:hover{background:var(--cf-color-surface-raised)}.article-page .progress-sign-in-wrap,.library-page .progress-sign-in-wrap{display:inline-flex;flex-direction:column;gap:var(--cf-space-100)}.article-page .progress-button,.article-page .progress-sign-in,.library-page .progress-button,.library-page .progress-sign-in{display:inline-flex;align-items:center;gap:var(--cf-space-200);min-height:34px;padding:0 var(--cf-space-400);border:1px solid var(--cf-color-primary-border);border-radius:var(--cf-radius-full);background:var(--cf-color-primary-subtle);color:var(--cf-color-primary);font-size:var(--cf-font-size-300);font-weight:var(--cf-font-weight-strong);white-space:nowrap;cursor:pointer;transition:background-color var(--cf-duration-fast),border-color var(--cf-duration-fast)}.article-page .progress-button svg,.article-page .progress-sign-in svg,.library-page .progress-button svg,.library-page .progress-sign-in svg{width:14px;height:14px;flex-shrink:0}.article-page .progress-button:hover,.article-page .progress-sign-in:hover,.library-page .progress-button:hover,.library-page .progress-sign-in:hover{background:var(--cf-color-primary-subtle-hover);border-color:var(--cf-color-primary-border-hover)}.article-page .progress-button:focus-visible,.article-page .progress-sign-in:focus-visible,.library-page .progress-button:focus-visible,.library-page .progress-sign-in:focus-visible{outline:2px solid var(--cf-color-focus-ring);outline-offset:2px}.article-page .progress-sign-in-error,.library-page .progress-sign-in-error{font-size:var(--cf-font-size-250);color:var(--cf-color-danger)}.article-page .progress-text-button,.library-page .progress-text-button{padding:var(--cf-space-100) var(--cf-space-150);border:0;border-radius:var(--cf-radius-100);background:none;color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-275);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.article-page .progress-text-button:hover,.library-page .progress-text-button:hover{color:var(--cf-color-text)}.article-page .progress-text-button:focus-visible,.library-page .progress-text-button:focus-visible{outline:2px solid var(--cf-color-focus-ring)}.article-page .progress-meter,.library-page .progress-meter{width:100%;height:4px;display:block;border:0;border-radius:var(--cf-radius-100);background:var(--cf-color-border);accent-color:var(--cf-color-success);-webkit-appearance:none;-moz-appearance:none;appearance:none}.article-page .progress-meter::-webkit-progress-bar,.library-page .progress-meter::-webkit-progress-bar{background:var(--cf-color-border);border-radius:var(--cf-radius-100)}.article-page .progress-meter::-webkit-progress-value,.library-page .progress-meter::-webkit-progress-value{background:var(--cf-color-success);border-radius:var(--cf-radius-100)}.article-page .progress-meter::-moz-progress-bar,.library-page .progress-meter::-moz-progress-bar{background:var(--cf-color-success);border-radius:var(--cf-radius-100)}.article-page .save-row,.library-page .save-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--cf-space-200) var(--cf-space-300)}.article-page .save-row>:first-child,.library-page .save-row>:first-child{min-width:0}.article-page .lesson-save,.library-page .lesson-save{position:relative;margin-left:auto}.article-page .lesson-save-button,.library-page .lesson-save-button{display:inline-flex;align-items:center;gap:var(--cf-space-150);min-height:30px;padding:0 var(--cf-space-350) 0 var(--cf-space-300);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-full);background:var(--cf-color-surface);color:var(--cf-color-text-secondary);font-size:var(--cf-font-size-300);font-weight:var(--cf-font-weight-semibold);white-space:nowrap}.article-page .lesson-save-button svg,.library-page .lesson-save-button svg{width:15px;height:15px;flex-shrink:0;transition:transform var(--cf-duration-normal) var(--cf-ease-emphasized)}.article-page .lesson-save-button:hover:not(:disabled),.library-page .lesson-save-button:hover:not(:disabled){border-color:var(--cf-color-primary-border-hover);color:var(--cf-color-text-strong)}.article-page .lesson-save-button:disabled,.library-page .lesson-save-button:disabled{color:var(--cf-color-text-muted);cursor:default}.article-page .lesson-save-button.is-saved,.library-page .lesson-save-button.is-saved{border-color:var(--cf-color-primary-border);background:var(--cf-color-primary-subtle);color:var(--cf-color-primary)}.article-page .lesson-save-button.is-saved svg,.library-page .lesson-save-button.is-saved svg{fill:currentColor;transform:scale(1.1)}.article-page .lesson-save-button.is-saved:hover,.library-page .lesson-save-button.is-saved:hover{background:var(--cf-color-primary-subtle-hover);color:var(--cf-color-primary-hover)}.article-page .lesson-save-banner,.library-page .lesson-save-banner{position:absolute;top:calc(100% + var(--cf-space-300));right:0;z-index:var(--cf-z-popover);display:flex;align-items:flex-start;gap:var(--cf-space-350);width:min(340px,100vw - 32px);padding:var(--cf-space-400) var(--cf-space-1000) var(--cf-space-400) var(--cf-space-400);border:1px solid var(--cf-color-border-strong);border-radius:var(--cf-radius-300);background:var(--cf-color-surface-overlay);box-shadow:var(--cf-shadow-lg);font-size:var(--cf-font-size-325);animation:lesson-save-in var(--cf-duration-normal) var(--cf-ease-emphasized)}.article-page .lesson-save-banner:before,.library-page .lesson-save-banner:before{content:"";position:absolute;top:-6px;right:26px;width:10px;height:10px;border-top:1px solid var(--cf-color-border-strong);border-left:1px solid var(--cf-color-border-strong);background:var(--cf-color-surface-overlay);transform:rotate(45deg)}.article-page .lesson-save-tuto,.library-page .lesson-save-tuto{flex-shrink:0}.article-page .lesson-save-body,.library-page .lesson-save-body{min-width:0}.article-page .lesson-save-body strong,.library-page .lesson-save-body strong{display:block;color:var(--cf-color-text-strong);font-size:var(--cf-font-size-350);font-weight:var(--cf-font-weight-semibold);line-height:var(--cf-line-height-140)}.article-page .lesson-save-body p,.library-page .lesson-save-body p{margin:var(--cf-space-100) 0 var(--cf-space-350);color:var(--cf-color-text-secondary);line-height:var(--cf-line-height-150)}.article-page .lesson-save-body .progress-sign-in-error,.library-page .lesson-save-body .progress-sign-in-error{display:block;margin-top:var(--cf-space-200)}.article-page .lesson-save-sign-in:disabled,.library-page .lesson-save-sign-in:disabled{cursor:progress}.article-page .lesson-save-close,.library-page .lesson-save-close{position:absolute;top:var(--cf-space-200);right:var(--cf-space-200);display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:var(--cf-radius-150);background:none;color:var(--cf-color-text-tertiary)}.article-page .lesson-save-close svg,.library-page .lesson-save-close svg{width:14px;height:14px}.article-page .lesson-save-close:hover,.library-page .lesson-save-close:hover{background:var(--cf-color-surface-hover);color:var(--cf-color-text-strong)}@media(prefers-reduced-motion:reduce){.article-page .lesson-save-banner,.library-page .lesson-save-banner{animation:none}}.article-page .lesson-progress-status{display:flex;align-items:center;gap:var(--cf-space-200);margin:var(--cf-space-250) var(--cf-space-150) 0;font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}.article-page .lesson-progress-status.is-finished{color:var(--cf-color-success)}.article-page .lesson-progress-status.is-waiting{color:var(--cf-color-warning)}.article-page .lesson-progress-dot{width:6px;height:6px;flex-shrink:0;border-radius:var(--cf-radius-round);border:1px solid}.is-finished>.article-page .lesson-progress-dot,.is-waiting>.article-page .lesson-progress-dot{background:currentColor}.article-page .lesson-finish{margin-top:var(--cf-space-900);padding:var(--cf-space-450) var(--cf-space-500);border:1px solid var(--cf-color-border);border-left:3px solid var(--cf-color-border-strong);border-radius:var(--cf-radius-250);background:var(--cf-color-surface)}.article-page .lesson-finish p{margin:var(--cf-space-150) 0 0;max-width:640px;font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-170);color:var(--cf-color-text-secondary)}.article-page .lesson-finish strong{color:var(--cf-color-text-strong);font-weight:var(--cf-font-weight-semibold)}.article-page .lesson-finish.is-finished{border-left-color:var(--cf-color-success)}.article-page .lesson-finish.is-finished .lesson-finish-kicker{color:var(--cf-color-success)}.article-page .lesson-finish.is-waiting{border-color:var(--cf-color-warning-border);border-left-color:var(--cf-color-warning);background:var(--cf-color-warning-subtle)}.article-page .lesson-finish.is-waiting .lesson-finish-kicker{color:var(--cf-color-warning)}.article-page .lesson-finish.is-loading{min-height:120px;border-style:dashed;background:none}.article-page .lesson-finish.is-celebrating{animation:lesson-finish-cheer .7s cubic-bezier(.3,1.5,.5,1)}.article-page .lesson-finish.is-celebrating .lesson-finish-kicker{animation:lesson-finish-kicker .9s ease-out}@media(max-width:768px){.article-page .lesson-finish{margin-top:var(--cf-space-700);padding:var(--cf-space-400)}}.article-page .lesson-finish-kicker{font:var(--cf-font-size-225)/var(--cf-line-height-160) var(--cf-font-mono);letter-spacing:var(--cf-letter-spacing-wider);color:var(--cf-color-text-tertiary)}.article-page .lesson-finish-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cf-space-300);margin-top:var(--cf-space-400)}.article-page .nav-lesson.is-finished .nav-lesson-index{color:var(--cf-color-success)}.article-page .nav-lesson-done{display:flex;align-self:center;flex-shrink:0;margin-left:auto;color:var(--cf-color-success)}.article-page .nav-lesson-done svg{width:12px;height:12px}.library-page .progress-loading{min-height:160px;margin:0;font-size:var(--cf-font-size-300);color:var(--cf-color-text-tertiary)}.library-page .progress-overview{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);grid-gap:var(--cf-space-350);gap:var(--cf-space-350)}@media(max-width:768px){.library-page .progress-overview{grid-template-columns:minmax(0,1fr)}}.library-page .progress-kicker,.library-page .progress-stage-kicker{font:var(--cf-font-size-225)/var(--cf-line-height-160) var(--cf-font-mono);letter-spacing:var(--cf-letter-spacing-wider);color:var(--cf-color-text-tertiary)}.library-page .progress-resume,.library-page .progress-summary{display:flex;flex-direction:column;gap:var(--cf-space-150);padding:var(--cf-space-450);border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-250);background:var(--cf-color-surface)}.library-page .progress-resume{border-color:var(--cf-color-primary-border);transition:background-color var(--cf-duration-fast),border-color var(--cf-duration-fast)}.library-page .progress-resume>strong{font-size:var(--cf-font-size-450);font-weight:var(--cf-font-weight-semibold);line-height:var(--cf-line-height-140)}.library-page .progress-resume:hover:not(.is-empty){background:var(--cf-color-surface-raised);border-color:var(--cf-color-primary-border-hover)}.library-page .progress-resume.is-upcoming{max-width:640px;border-style:dashed}.library-page .progress-resume.is-empty{border-style:dashed;border-color:var(--cf-color-border-control)}.library-page .progress-resume.is-empty .progress-kicker{color:var(--cf-color-text-tertiary)}.library-page .progress-resume-summary{font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-170);color:var(--cf-color-text-secondary)}.library-page .progress-resume-cta{display:flex;align-items:center;gap:var(--cf-space-200);margin-top:auto;padding-top:var(--cf-space-200);font-size:var(--cf-font-size-275);color:var(--cf-color-primary)}.library-page .progress-resume-cta svg{width:13px;height:13px}.library-page .progress-count{font-size:var(--cf-font-size-700);font-weight:var(--cf-font-weight-semibold);line-height:var(--cf-line-height-130);color:var(--cf-color-text-strong)}.library-page .progress-count span{font-size:var(--cf-font-size-300);font-weight:var(--cf-font-weight-regular);color:var(--cf-color-text-tertiary)}.library-page .progress-summary>.progress-meter{margin:var(--cf-space-100) 0 var(--cf-space-150)}.library-page .progress-guest{display:flex;flex-direction:column;align-items:flex-start;gap:var(--cf-space-300);padding-top:var(--cf-space-300);border-top:1px dashed var(--cf-color-border-control)}.library-page .progress-guest p{margin:0;font-size:var(--cf-font-size-300);line-height:var(--cf-line-height-160);color:var(--cf-color-text-secondary)}.library-page .progress-guest strong{color:var(--cf-color-text);font-weight:var(--cf-font-weight-strong)}.library-page .progress-insights{position:relative;margin-top:var(--cf-space-350)}.library-page .progress-insights.is-locked{max-height:360px;overflow:hidden}.library-page .progress-insights-preview{filter:blur(5px);opacity:.55;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.library-page .progress-lock{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--cf-space-250);padding:var(--cf-space-500);text-align:center}.library-page .progress-lock>strong{font-size:var(--cf-font-size-450);font-weight:var(--cf-font-weight-semibold);color:var(--cf-color-text-strong)}.library-page .progress-lock p{max-width:460px;margin:0;font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-170);color:var(--cf-color-text-secondary)}.library-page .progress-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--cf-space-250);gap:var(--cf-space-250);margin:0 0 var(--cf-space-350)}.library-page .progress-stats>div{padding:var(--cf-space-350) var(--cf-space-400);border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-200);background:var(--cf-color-surface)}.library-page .progress-stats dt{font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}.library-page .progress-stats dd{margin:var(--cf-space-100) 0 0;font-size:var(--cf-font-size-400);font-weight:var(--cf-font-weight-semibold);color:var(--cf-color-text-strong)}.library-page .progress-stats dd span{font-size:var(--cf-font-size-250);font-weight:var(--cf-font-weight-regular);color:var(--cf-color-text-tertiary)}@media(max-width:560px){.library-page .progress-stats{grid-template-columns:minmax(0,1fr)}}.library-page .progress-stages{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));grid-gap:var(--cf-space-250);gap:var(--cf-space-250)}.library-page .progress-stages a{height:100%;display:flex;flex-direction:column;gap:var(--cf-space-100);padding:var(--cf-space-300) var(--cf-space-350);border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-200);background:var(--cf-color-surface);transition:border-color var(--cf-duration-fast)}.library-page .progress-stages a:hover{border-color:var(--cf-color-primary-border-hover)}.library-page .progress-stages strong{font-size:var(--cf-font-size-325);font-weight:var(--cf-font-weight-strong);line-height:var(--cf-line-height-140)}.library-page .progress-stages .progress-meter{margin-top:auto}.library-page .progress-stage-count{padding-top:var(--cf-space-100);font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}.library-page .module-finished{color:var(--cf-color-success);border:1px solid var(--cf-color-success-border);background:var(--cf-color-success-subtle);padding:0 var(--cf-space-150);border-radius:var(--cf-radius-100)}.library-page .lesson-done{display:inline-flex;align-items:center;gap:var(--cf-space-100);color:var(--cf-color-success)}.library-page .lesson-done svg{width:13px;height:13px}.library-page .lesson-row.is-finished .lesson-index{color:var(--cf-color-success)}.library-page .progress-intro p{max-width:640px}.library-page .progress-intro strong{color:var(--cf-color-text-strong);font-weight:var(--cf-font-weight-semibold)}.library-page .progress-intro .progress-sign-in-wrap{margin-top:var(--cf-space-400)}.library-page .progress-settings-link{color:var(--cf-color-primary)}.library-page .progress-settings-link:hover{color:var(--cf-color-primary-hover)}.library-page .progress-empty{margin:0;padding:var(--cf-space-450);border:1px dashed var(--cf-color-border-control);border-radius:var(--cf-radius-250);font-size:var(--cf-font-size-325);color:var(--cf-color-text-secondary)}.library-page .progress-history{list-style:none;margin:0;padding:0;border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-250);background:var(--cf-color-surface);overflow:hidden}.library-page .progress-history li+li{border-top:1px solid var(--cf-color-border)}.library-page .progress-history a{display:flex;align-items:center;gap:var(--cf-space-350);padding:var(--cf-space-300) var(--cf-space-450);transition:background-color var(--cf-duration-fast)}.library-page .progress-history a:hover{background:var(--cf-color-primary-faint)}.library-page .progress-history-index{width:34px;flex-shrink:0;font:var(--cf-font-size-225)/var(--cf-line-height-160) var(--cf-font-mono);color:var(--cf-color-success)}.library-page .progress-history-title{flex:1 1;min-width:0}.library-page .progress-history-title strong{display:block;font-size:var(--cf-font-size-325);font-weight:var(--cf-font-weight-medium)}.library-page .progress-history-title span{font-size:var(--cf-font-size-275);color:var(--cf-color-text-tertiary)}.library-page .progress-history-meta{display:flex;align-items:center;gap:var(--cf-space-300);flex-shrink:0;font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}@media(max-width:560px){.library-page .progress-history-meta{flex-direction:column;align-items:flex-end;gap:var(--cf-space-050)}}.library-page .progress-history-quiz{padding:0 var(--cf-space-150);border:1px solid var(--cf-color-primary-border);border-radius:var(--cf-radius-100);background:var(--cf-color-primary-subtle);color:var(--cf-color-primary)}.library-page .progress-saved li{display:flex;align-items:center}.library-page .progress-saved a{flex:1 1;min-width:0}.library-page .progress-saved .progress-history-index{display:flex;color:var(--cf-color-primary)}.library-page .progress-saved .progress-history-index svg{width:15px;height:15px;fill:currentColor}.library-page .progress-saved-remove{display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;margin-right:var(--cf-space-300);padding:0;border:0;border-radius:var(--cf-radius-150);background:none;color:var(--cf-color-text-tertiary);cursor:pointer}.library-page .progress-saved-remove svg{width:14px;height:14px}.library-page .progress-saved-remove:hover{background:var(--cf-color-surface-hover);color:var(--cf-color-text-strong)}.library-page .progress-saved-remove:focus-visible{outline:2px solid var(--cf-color-focus-ring);outline-offset:-2px}.library-page .progress-saved-prompt{display:flex;align-items:flex-start;gap:var(--cf-space-400)}.library-page .progress-saved-prompt p{margin:0 0 var(--cf-space-300);max-width:560px;line-height:var(--cf-line-height-160)}.library-page .progress-saved-prompt strong{color:var(--cf-color-text-strong)}.library-page .progress-saved-prompt svg{flex-shrink:0}.library-page .progress-settings{border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-250);background:var(--cf-color-surface)}.library-page .progress-setting{display:flex;align-items:center;justify-content:space-between;gap:var(--cf-space-500);padding:var(--cf-space-450)}.library-page .progress-setting+.progress-setting{border-top:1px solid var(--cf-color-border)}.library-page .progress-setting strong{font-size:var(--cf-font-size-350);font-weight:var(--cf-font-weight-strong)}.library-page .progress-setting p{max-width:560px;margin:var(--cf-space-100) 0 0;font-size:var(--cf-font-size-300);line-height:var(--cf-line-height-160);color:var(--cf-color-text-secondary)}@media(max-width:560px){.library-page .progress-setting{flex-direction:column;align-items:flex-start;gap:var(--cf-space-300)}}.library-page .progress-setting .progress-setting-note{color:var(--cf-color-success)}.library-page .progress-setting .progress-setting-error{color:var(--cf-color-danger)}.library-page .progress-button.is-quiet{border-color:var(--cf-color-border-control);background:var(--cf-color-surface-raised);color:var(--cf-color-text-secondary)}.library-page .progress-button.is-quiet:hover{border-color:var(--cf-color-border-hover);background:var(--cf-color-surface-hover);color:var(--cf-color-text)}.library-page .progress-button.is-danger{border-color:var(--cf-color-border-control);background:var(--cf-color-surface-raised);color:var(--cf-color-danger)}.library-page .progress-button.is-danger:hover:not(:disabled),.library-page .progress-button.is-danger[aria-expanded=true]{border-color:var(--cf-color-danger-border);background:var(--cf-color-surface-hover);color:var(--cf-color-danger-hover)}.library-page .progress-button.is-danger-solid{border-color:var(--cf-color-danger);background:var(--cf-color-danger);color:var(--cf-color-on-danger)}.library-page .progress-button.is-danger-solid:hover{background:var(--cf-color-danger-hover);border-color:var(--cf-color-danger-hover)}.library-page .progress-button:disabled{opacity:.5;cursor:not-allowed}.library-page .progress-confirm{margin:0 var(--cf-space-450) var(--cf-space-450);padding:var(--cf-space-400);border:1px solid var(--cf-color-border);border-left:3px solid var(--cf-color-danger);border-radius:var(--cf-radius-200);background:var(--cf-color-surface-raised)}.library-page .progress-confirm strong{font-size:var(--cf-font-size-350);color:var(--cf-color-text-strong)}.library-page .progress-confirm .progress-confirm-title{display:flex;align-items:center;gap:var(--cf-space-200)}.library-page .progress-confirm .progress-confirm-title svg{flex-shrink:0;color:var(--cf-color-danger)}.library-page .progress-confirm p{margin:var(--cf-space-150) 0 0;font-size:var(--cf-font-size-300);line-height:var(--cf-line-height-160);color:var(--cf-color-text-secondary)}.library-page .progress-confirm-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cf-space-300);margin-top:var(--cf-space-400)}@keyframes lesson-save-in{0%{opacity:0;transform:translateY(-4px)}}@keyframes lesson-finish-cheer{0%,to{transform:none}30%{transform:translateY(-10px) scale(1.012)}60%{transform:translateY(2px)}}@keyframes lesson-finish-kicker{0%{opacity:0;filter:blur(4px)}}@media(prefers-reduced-motion:reduce){.lesson-finish.is-celebrating,.lesson-finish.is-celebrating .lesson-finish-kicker{animation:none}}.shell-search{display:inline-flex;align-items:center;gap:var(--cf-space-200);width:280px;height:34px;padding:0 var(--cf-space-200) 0 var(--cf-space-300);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-200);background:var(--cf-color-surface-input);color:var(--cf-color-text-tertiary);font:inherit;font-size:var(--cf-font-size-300);text-align:left;cursor:pointer;transition:border-color var(--cf-duration-fast),color var(--cf-duration-fast)}.shell-search svg{width:15px;height:15px;flex-shrink:0}.shell-search kbd{margin-left:auto}.shell-search:hover{border-color:var(--cf-color-border-hover);color:var(--cf-color-text-secondary)}.shell-search:focus-visible{outline:2px solid var(--cf-color-focus-ring);outline-offset:2px}@media(max-width:1680px){.shell-search{width:220px}}@media(max-width:1020px){.shell-search{width:34px;padding:0;justify-content:center}.shell-search .shell-search-label,.shell-search kbd{display:none}}.article-page .shell-search.is-lesson{width:auto}.article-page .shell-search.is-lesson .shell-search-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}@media(max-width:1020px){.article-page .shell-search.is-lesson{width:34px}}@media(max-width:768px){.article-page .shell-search.is-lesson{display:none}}.shell-search-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.search-dialog kbd,.shell-search kbd{padding:0 var(--cf-space-100);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-100);background:var(--cf-color-surface-raised);color:var(--cf-color-text-tertiary);font:var(--cf-font-size-250)/var(--cf-line-height-160) var(--cf-font-mono)}.search-dialog{width:min(680px,100vw - 32px);max-width:none;margin:10vh auto 0;padding:0;border:0;background:rgba(0,0,0,0);color:var(--cf-color-text);font-family:var(--cf-font-sans)}.search-dialog::-webkit-backdrop{background:var(--cf-color-scrim-strong)}.search-dialog::backdrop{background:var(--cf-color-scrim-strong)}@media(max-width:560px){.search-dialog{width:100vw;height:100dvh;max-height:none;margin:0}}.search-box{display:flex;flex-direction:column;border:1px solid var(--cf-color-border-strong);border-radius:var(--cf-radius-300);background:var(--cf-color-surface-overlay);box-shadow:var(--cf-shadow-xl);overflow:hidden}@media(max-width:560px){.search-box{height:100%;border:0;border-radius:0}}.search-input{display:flex;align-items:center;gap:var(--cf-space-300);padding:var(--cf-space-350) var(--cf-space-400);border-bottom:1px solid var(--cf-color-border);color:var(--cf-color-text-tertiary)}.search-input>svg{width:17px;height:17px;flex-shrink:0}.search-input input{flex:1 1;min-width:0;border:0;background:rgba(0,0,0,0);color:var(--cf-color-text-strong);font:inherit;font-size:var(--cf-font-size-400);outline:none}.search-input input::placeholder{color:var(--cf-color-text-muted)}.search-clear{display:grid;flex-shrink:0;place-items:center;width:var(--cf-space-700);height:var(--cf-space-700);padding:0;border:0;border-radius:var(--cf-radius-full);background:none;color:var(--cf-color-text-muted);cursor:pointer}.search-clear svg{width:14px;height:14px}.search-clear:hover{background:var(--cf-color-surface-hover);color:var(--cf-color-text)}.search-scopes{display:flex;gap:var(--cf-space-150);padding:var(--cf-space-250) var(--cf-space-400) 0;overflow-x:auto;scrollbar-width:none}.search-scopes button{display:inline-flex;flex-shrink:0;align-items:center;gap:var(--cf-space-150);padding:var(--cf-space-100) var(--cf-space-300);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-full);background:none;color:var(--cf-color-text-secondary);font:inherit;font-size:var(--cf-font-size-275);cursor:pointer}.search-scopes button span{color:var(--cf-color-text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.search-scopes button:hover{border-color:var(--cf-color-border-hover)}.search-scopes button[aria-pressed=true]{border-color:var(--cf-color-primary-border);background:var(--cf-color-primary-subtle);color:var(--cf-color-primary)}.search-scopes button[aria-pressed=true] span{color:var(--cf-color-primary-muted)}.search-status{margin:0;padding:var(--cf-space-250) var(--cf-space-500) 0;color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-300)}.search-status:empty{display:none}.search-status strong{color:var(--cf-color-text-strong);font-weight:var(--cf-font-weight-semibold)}.search-results{max-height:min(480px,58vh);margin:0;padding:var(--cf-space-150) var(--cf-space-150) var(--cf-space-200);overflow-y:auto;overscroll-behavior:contain}@media(max-width:560px){.search-results{flex:1 1;max-height:none}}.search-group+.search-group{margin-top:var(--cf-space-200)}.search-group-label{display:flex;align-items:center;justify-content:space-between;padding:var(--cf-space-200) var(--cf-space-300) var(--cf-space-100);color:var(--cf-color-text-muted);font-size:var(--cf-font-size-250);font-weight:var(--cf-font-weight-semibold);letter-spacing:var(--cf-letter-spacing-wide);text-transform:uppercase}.search-group-action,.search-link{padding:0;border:0;background:none;color:var(--cf-color-primary);font:inherit;font-size:var(--cf-font-size-275);letter-spacing:normal;text-transform:none;cursor:pointer}.search-group-action:hover,.search-link:hover{text-decoration:underline}.search-result{display:flex;align-items:center;gap:var(--cf-space-300);padding:var(--cf-space-250) var(--cf-space-300);border-radius:var(--cf-radius-200);color:var(--cf-color-text-tertiary);cursor:pointer}.search-result>svg{width:15px;height:15px;flex-shrink:0}.search-result>svg:last-child{width:13px;height:13px;opacity:0}.search-result[aria-selected=true]{background:var(--cf-color-surface-active);color:var(--cf-color-text-secondary)}.search-result[aria-selected=true]>svg:last-child{opacity:1}.search-result-text{flex:1 1;min-width:0}.search-result-text strong{color:var(--cf-color-text-strong);font-size:var(--cf-font-size-325);font-weight:var(--cf-font-weight-medium)}.search-result-text strong,.search-result-text>span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.search-result-text>span{font-size:var(--cf-font-size-275)}.search-result-text mark{border-radius:var(--cf-radius-050);background:var(--cf-color-primary-subtle);color:var(--cf-color-primary);font-weight:var(--cf-font-weight-semibold)}.search-result.is-soon strong{color:var(--cf-color-text-secondary)}.search-result-soon{flex-shrink:0;padding:0 var(--cf-space-150);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-100);font-size:var(--cf-font-size-250)}.search-more{display:block;width:100%;margin-top:var(--cf-space-050);padding:var(--cf-space-150) var(--cf-space-300) var(--cf-space-150) calc(var(--cf-space-300) + 15px + var(--cf-space-300));border:0;border-radius:var(--cf-radius-200);background:none;color:var(--cf-color-primary);font:inherit;font-size:var(--cf-font-size-275);text-align:left;cursor:pointer}.search-more:hover{background:var(--cf-color-surface-hover)}.search-empty{padding:var(--cf-space-600) var(--cf-space-500);color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-325);text-align:center}.search-empty p{margin:0 0 var(--cf-space-200)}.search-empty strong{color:var(--cf-color-text-strong);font-weight:var(--cf-font-weight-semibold)}@media(max-width:560px){.search-empty{flex:1 1}}.search-empty-links{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--cf-space-200);margin-top:var(--cf-space-400)}.search-empty-links a{padding:var(--cf-space-100) var(--cf-space-300);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-full);color:var(--cf-color-text-secondary);font-size:var(--cf-font-size-300);text-decoration:none}.search-empty-links a:hover{border-color:var(--cf-color-primary-border-hover);color:var(--cf-color-text)}.search-clear:focus-visible,.search-empty-links a:focus-visible,.search-group-action:focus-visible,.search-link:focus-visible,.search-more:focus-visible,.search-scopes button:focus-visible{outline:2px solid var(--cf-color-focus-ring);outline-offset:2px}.search-hint{display:flex;gap:var(--cf-space-400);margin:0;padding:var(--cf-space-250) var(--cf-space-400);border-top:1px solid var(--cf-color-border);color:var(--cf-color-text-muted);font-size:var(--cf-font-size-250)}@media(max-width:768px){.search-hint{display:none}}.search-hint-count{margin-left:auto}.tuto-pulley{--k:1;--rope-light:#d6be96;--rope-dark:#8a7152;--progress:0;--load-high:calc(26px * var(--k));--load-low:calc(100% - 196px * var(--k));--drop:calc(var(--load-high) + (var(--load-low) - var(--load-high)) * (1 - var(--progress)));position:fixed;top:68px;right:0;bottom:max(var(--cf-space-1600),env(safe-area-inset-bottom));z-index:var(--cf-z-decoration);width:calc(96px*var(--k));pointer-events:none;opacity:0;visibility:hidden;transform:translateX(calc(14px * var(--k)));transition:opacity var(--cf-duration-slow) ease,transform var(--cf-duration-slow) ease,visibility 0s linear var(--cf-duration-slow)}.tuto-pulley.is-celebrating,.tuto-pulley[data-mode=peek].is-active,.tuto-pulley[data-mode=rest]{opacity:1;visibility:visible;transform:none;transition:opacity var(--cf-duration-normal) ease,transform var(--cf-duration-normal) ease}.tuto-pulley[data-mode=off]{display:none}.tuto-pulley-rope{position:absolute;top:calc(24px*var(--k));width:calc(3px*var(--k));border-radius:var(--cf-radius-050);background:repeating-linear-gradient(-62deg,var(--rope-light) 0 calc(1.6px * var(--k)),var(--rope-dark) calc(1.6px * var(--k)) calc(3.4px * var(--k)));box-shadow:inset calc(-1px*var(--k)) 0 rgba(0,0,0,.28)}.tuto-pulley-rope.is-kid{right:calc(16px*var(--k));bottom:calc(12px*var(--k));background-position:0 var(--rope-kid,0)}.tuto-pulley-rope.is-page{right:calc(38px*var(--k));height:var(--drop);background-position:0 var(--rope-page,0)}.tuto-pulley[data-mode=peek]{--load-low:calc(120px * var(--k))}.tuto-pulley-load{position:absolute;top:calc(24px*var(--k) + var(--drop) - 1px*var(--k));right:calc(24.5px*var(--k));width:calc(30px*var(--k));height:calc(44px*var(--k));overflow:visible;filter:drop-shadow(0 calc(2px * var(--k)) calc(3px * var(--k)) rgba(0,0,0,.35))}.tuto-pulley-wheel{position:absolute;top:0;right:calc(8.5px*var(--k));width:calc(40px*var(--k));height:calc(46px*var(--k));overflow:visible}.tuto-pulley-kid{position:absolute;right:calc(4.83px*var(--k));bottom:calc(6px*var(--k));width:calc(76px*var(--k));height:calc(107.67px*var(--k));overflow:visible}.tuto-pulley-kid .kid-face{display:none}.tuto-pulley-kid[data-face=effort] .kid-face-effort,.tuto-pulley-kid[data-face=happy] .kid-face-happy,.tuto-pulley-kid[data-face=look] .kid-face-look,.tuto-pulley-kid[data-face=whoa] .kid-face-whoa{display:inline}.tuto-pulley-kid .kid-eyes{transform-box:fill-box;transform-origin:center;animation:tuto-pulley-blink 5.2s ease-in-out infinite}.tuto-pulley-kid .kid-breathe{transform-box:fill-box;transform-origin:50% 100%;animation:tuto-pulley-breathe 3.4s ease-in-out infinite}.tuto-pulley-kid .kid-hand[data-grip="0"] .kid-fingers,.tuto-pulley-kid .kid-sparkles{opacity:0}.tuto-pulley.is-celebrating .kid-figure{animation:tuto-pulley-hop .46s ease-out 3}.tuto-pulley.is-celebrating .kid-sparkles{animation:tuto-pulley-sparkle .7s ease-in-out infinite alternate}@keyframes tuto-pulley-blink{0%,93%,to{transform:scaleY(1)}95.5%{transform:scaleY(.12)}}@keyframes tuto-pulley-breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.02)}}@keyframes tuto-pulley-hop{0%,to{transform:translateY(0)}40%{transform:translateY(-8px)}}@keyframes tuto-pulley-sparkle{0%{opacity:.35}to{opacity:1}}@media(max-width:768px){.tuto-pulley{--k:0.78;top:58px}}@media(min-width:1021px){html.tuto-docked .tuto-pulley{right:var(--tuto-width,400px)}}@media(prefers-reduced-motion:reduce),print{.tuto-pulley{display:none}}.app-shell .shell-body{flex:1 1;display:grid;grid-template-columns:248px minmax(0,1fr)}@media(max-width:1020px){.app-shell .shell-body{grid-template-columns:minmax(0,1fr)}}.app-shell .shell-content{min-width:0;display:flex;flex-direction:column}.app-shell .shell-sidebar{position:-webkit-sticky;position:sticky;top:56px;height:calc(100vh - 56px);display:flex;flex-direction:column;gap:var(--cf-space-500);padding:var(--cf-space-400) var(--cf-space-300);border-right:1px solid var(--cf-color-border);background:var(--cf-color-bg-subtle);overflow-y:auto;overscroll-behavior:contain}@media(max-width:1020px){.app-shell .shell-sidebar{position:fixed;top:56px;bottom:0;left:0;z-index:var(--cf-z-drawer);width:min(300px,100vw - 40px);height:auto;box-shadow:var(--cf-shadow-lg);transform:translateX(-100%);visibility:hidden;transition:transform var(--cf-duration-normal) var(--cf-ease-out),visibility var(--cf-duration-normal)}.app-shell .shell-sidebar.is-open{transform:none;visibility:visible}}.app-shell .shell-backdrop{display:none}@media(max-width:1020px){.app-shell .shell-backdrop{display:block;position:fixed;inset:56px 0 0;z-index:var(--cf-z-drawer-backdrop);border:0;background:var(--cf-color-scrim)}}.app-shell .shell-nav{display:flex;flex-direction:column;gap:var(--cf-space-050)}.app-shell .shell-nav .progress-link.shell-nav-item,.app-shell .shell-nav-item{display:flex;align-items:center;gap:var(--cf-space-250);width:100%;min-height:0;padding:var(--cf-space-200) var(--cf-space-300);border:0;border-radius:var(--cf-radius-200);background:none;color:var(--cf-color-text-secondary);font:inherit;font-size:var(--cf-font-size-325);font-weight:var(--cf-font-weight-medium);text-align:left}.app-shell .shell-nav .progress-link.shell-nav-item svg,.app-shell .shell-nav-item svg{width:16px;height:16px;flex-shrink:0;color:var(--cf-color-text-tertiary)}.app-shell .shell-nav .progress-link.shell-nav-item .progress-link-count,.app-shell .shell-nav-item .progress-link-count{margin-left:auto}.app-shell .shell-nav .progress-link.shell-nav-item:hover,.app-shell .shell-nav-item:hover{background:var(--cf-color-surface-hover);color:var(--cf-color-text-strong)}.app-shell .shell-nav .progress-link.shell-nav-item.is-current,.app-shell .shell-nav .progress-link.shell-nav-item[aria-current=page],.app-shell .shell-nav-item.is-current,.app-shell .shell-nav-item[aria-current=page]{background:var(--cf-color-surface-active);color:var(--cf-color-text-strong)}.app-shell .shell-nav .progress-link.shell-nav-item.is-current svg,.app-shell .shell-nav .progress-link.shell-nav-item[aria-current=page] svg,.app-shell .shell-nav-item.is-current svg,.app-shell .shell-nav-item[aria-current=page] svg{color:var(--cf-color-primary)}.app-shell .shell-nav .progress-link.shell-nav-item.is-section,.app-shell .shell-nav-item.is-section{color:var(--cf-color-text-strong)}.app-shell .shell-nav .progress-link.shell-nav-item.is-section svg,.app-shell .shell-nav-item.is-section svg{color:var(--cf-color-primary)}.app-shell .shell-nav .progress-link.shell-nav-item:focus-visible,.app-shell .shell-nav-item:focus-visible{outline-offset:-2px}.app-shell .shell-nav-row{position:relative}.app-shell .shell-nav-row>.shell-nav-item{padding-right:var(--cf-space-1000)}.app-shell .shell-nav-toggle{position:absolute;top:50%;right:var(--cf-space-100);display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:var(--cf-radius-150);background:none;color:var(--cf-color-text-tertiary);cursor:pointer;transform:translateY(-50%)}.app-shell .shell-nav-toggle svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--cf-duration-fast) var(--cf-ease-out)}.app-shell .shell-nav-toggle:hover{background:var(--cf-color-surface-hover);color:var(--cf-color-text-strong)}.app-shell .shell-nav-toggle:focus-visible{outline:2px solid var(--cf-color-focus-ring);outline-offset:-2px}.app-shell .shell-nav-group.is-open .shell-nav-toggle svg{transform:rotate(180deg)}.app-shell .shell-subnav-frame{display:grid;grid-template-rows:0fr;visibility:hidden;transition:grid-template-rows var(--cf-duration-normal) var(--cf-ease-out),padding var(--cf-duration-normal) var(--cf-ease-out),visibility var(--cf-duration-normal)}.app-shell .shell-nav-group.is-open .shell-subnav-frame{grid-template-rows:1fr;padding-bottom:var(--cf-space-200);visibility:visible}.app-shell .shell-subnav{--branch-width:var(--cf-space-250);--branch-color:var(--cf-color-border-strong);--branch-lit:var(--cf-color-text-secondary);min-height:0;overflow:hidden;margin:0 0 0 var(--cf-space-500);padding:0;list-style:none}.app-shell .shell-subnav li{position:relative;padding:1px 0 1px var(--cf-space-300)}.app-shell .shell-subnav li:before{content:"";position:absolute;top:calc(50% - var(--cf-radius-200));left:0;width:var(--branch-width);height:var(--cf-radius-200);border-bottom:1px solid var(--branch-color);border-left:1px solid var(--branch-color);border-bottom-left-radius:var(--cf-radius-200)}.app-shell .shell-subnav li:after{content:"";position:absolute;top:0;bottom:0;left:0;border-left:1px solid var(--branch-color)}.app-shell .shell-subnav li:last-child:after{bottom:calc(50% + var(--cf-radius-200))}.app-shell .shell-subnav li:hover:before{border-color:var(--cf-color-border-hover)}.app-shell .shell-subnav li.is-current:before{top:0;height:50%;border-color:var(--branch-lit)}.app-shell .shell-subnav li.is-current:after{top:50%}.app-shell .shell-subnav li.is-current:last-child:after{display:none}.app-shell .shell-subnav li:has(~li.is-current):after{border-color:var(--branch-lit)}.app-shell .shell-subnav-item{display:block;padding:var(--cf-space-150) var(--cf-space-250) var(--cf-space-150) var(--cf-space-150);border-radius:var(--cf-radius-200);color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-150)}.app-shell .shell-subnav-item:hover{background:var(--cf-color-surface-hover);color:var(--cf-color-text-strong)}.app-shell .shell-subnav-item[aria-current=page]{background:var(--cf-color-surface-active);color:var(--cf-color-text-strong);font-weight:var(--cf-font-weight-medium)}.app-shell .shell-subnav-item:focus-visible{outline-offset:-2px}.app-shell .shell-subnav-item.is-soon{display:flex;align-items:center;justify-content:space-between;gap:var(--cf-space-200);color:var(--cf-color-text-muted);cursor:default}.app-shell .shell-subnav-item.is-soon:hover{background:none;color:var(--cf-color-text-muted)}@media(prefers-reduced-motion:reduce){.app-shell .shell-nav-toggle svg,.app-shell .shell-subnav-frame{transition:none}}.app-shell .shell-soon{padding:0 var(--cf-space-150);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-full);color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-200);font-weight:var(--cf-font-weight-semibold);letter-spacing:var(--cf-letter-spacing-wide);text-transform:uppercase}.app-shell .shell-path{display:flex;flex-direction:column;gap:var(--cf-space-150)}.app-shell .shell-path-heading{padding:0 var(--cf-space-300);color:var(--cf-color-text-strong);font-size:var(--cf-font-size-300);font-weight:var(--cf-font-weight-semibold)}.app-shell .shell-path-heading:hover{color:var(--cf-color-primary)}.app-shell .shell-stages{display:flex;flex-direction:column;gap:var(--cf-space-050);margin:0;padding:0;list-style:none}.app-shell .shell-stage{display:flex;align-items:center;gap:var(--cf-space-250);padding:var(--cf-space-150) var(--cf-space-300);border-radius:var(--cf-radius-150);color:var(--cf-color-text-secondary);font-size:var(--cf-font-size-300);line-height:var(--cf-line-height-140)}.app-shell .shell-stage:hover{background:var(--cf-color-surface-hover);color:var(--cf-color-text-strong)}.app-shell .shell-stage:focus-visible{outline-offset:-2px}.app-shell .shell-stage-marker{display:grid;place-items:center;width:20px;height:20px;flex-shrink:0;border:1px solid var(--cf-color-border-strong);border-radius:var(--cf-radius-round);color:var(--cf-color-text-tertiary);font:var(--cf-font-size-225)/var(--cf-line-height-100) var(--cf-font-mono)}.app-shell .shell-stage-marker svg{width:12px;height:12px}.app-shell .shell-stage.is-done .shell-stage-marker{border-color:var(--cf-color-success-border);background:var(--cf-color-success-subtle);color:var(--cf-color-success)}.app-shell .shell-stage.is-soon{color:var(--cf-color-text-muted)}.app-shell .shell-stage.is-soon .shell-stage-title{flex:1 1}.app-shell .shell-stage.is-soon .shell-stage-marker{border-style:dashed}.app-shell .shell-stage.is-current{color:var(--cf-color-text-strong)}.app-shell .shell-stage.is-current .shell-stage-marker{border:2px solid var(--cf-color-primary-solid);color:var(--cf-color-primary)}.app-shell .shell-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}.app-shell .shell-help{display:flex;align-items:center;gap:var(--cf-space-250);margin-top:auto;padding:var(--cf-space-300);border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-250);background:var(--cf-color-surface);color:var(--cf-color-text-tertiary);text-align:left}.app-shell .shell-help>svg{width:16px;height:16px;flex-shrink:0}.app-shell .shell-help>svg:last-child{margin-left:auto}.app-shell .shell-help>span{display:flex;flex-direction:column;font-size:var(--cf-font-size-275);line-height:var(--cf-line-height-140)}.app-shell .shell-help strong{color:var(--cf-color-text-strong);font-size:var(--cf-font-size-300);font-weight:var(--cf-font-weight-semibold)}.app-shell .shell-help:hover{border-color:var(--cf-color-border-hover);background:var(--cf-color-surface-hover)}.article-page .site-footer-links,.library-page .site-footer-links{display:flex;flex-wrap:wrap;gap:var(--cf-space-150) var(--cf-space-450)}.article-page .site-footer-links a,.library-page .site-footer-links a{color:var(--cf-color-text-tertiary)}.article-page .site-footer-links a:hover,.library-page .site-footer-links a:hover{color:var(--cf-color-primary)}.library-page .site-footer{position:relative;overflow:hidden;margin-top:var(--cf-space-1600);border-top:1px solid var(--cf-color-border);background:var(--cf-color-bg-subtle)}.library-page .site-footer-inner{position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:var(--cf-space-1200) var(--cf-space-600) var(--cf-space-1600)}@media(max-width:768px){.library-page .site-footer-inner{padding:var(--cf-space-900) var(--cf-space-450) var(--cf-space-1600)}}.library-page .site-footer-top{display:grid;grid-template-columns:minmax(0,1fr) 260px;grid-gap:var(--cf-space-900);gap:var(--cf-space-900)}@media(max-width:1020px){.library-page .site-footer-top{grid-template-columns:minmax(0,1fr)}}.library-page .site-footer-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--cf-space-700);gap:var(--cf-space-700)}@media(max-width:560px){.library-page .site-footer-columns{grid-template-columns:repeat(2,minmax(0,1fr))}}.library-page .site-footer-columns h2{margin:0 0 var(--cf-space-400);color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-325);font-weight:var(--cf-font-weight-medium)}.library-page .site-footer-columns ul{display:grid;grid-gap:var(--cf-space-300);gap:var(--cf-space-300);margin:0;padding:0;list-style:none}.library-page .site-footer-columns a{color:var(--cf-color-text);font-size:var(--cf-font-size-350);transition:color var(--cf-duration-fast)}.library-page .site-footer-columns a:hover{color:var(--cf-color-primary)}.library-page .site-footer-cta{display:flex;flex-direction:column;align-items:flex-start;gap:var(--cf-space-300)}.library-page .site-footer-cta p{margin:0 0 var(--cf-space-100);color:var(--cf-color-text-secondary);font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-160)}.library-page .site-footer-cta p strong{display:block;color:var(--cf-color-text-strong);font-size:var(--cf-font-size-400)}.library-page .site-footer-button{display:inline-flex;align-items:center;gap:var(--cf-space-150);padding:var(--cf-space-250) var(--cf-space-450);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-250);background:var(--cf-color-surface);color:var(--cf-color-text-strong);font-size:var(--cf-font-size-350);font-weight:var(--cf-font-weight-semibold);transition:border-color var(--cf-duration-fast),background-color var(--cf-duration-fast)}.library-page .site-footer-button:hover{border-color:var(--cf-color-primary-border-hover)}.library-page .site-footer-button.is-primary{border-color:var(--cf-color-primary-solid);background:var(--cf-color-primary-solid);color:var(--cf-color-on-primary-solid)}.library-page .site-footer-button.is-primary:hover{border-color:var(--cf-color-primary-solid-hover);background:var(--cf-color-primary-solid-hover)}.library-page .site-footer-bottom{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cf-space-400) var(--cf-space-700);margin-top:var(--cf-space-1000);padding-top:var(--cf-space-500);border-top:1px solid var(--cf-color-border);font-size:var(--cf-font-size-300)}.library-page .site-footer-social{display:flex;align-items:center;gap:var(--cf-space-300)}.library-page .site-footer-social a:not(.site-footer-email){display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-round);background:var(--cf-color-surface);transition:border-color var(--cf-duration-fast)}.library-page .site-footer-social a:not(.site-footer-email):hover{border-color:var(--cf-color-primary-border-hover)}.library-page .site-footer-email{margin-left:var(--cf-space-150);color:var(--cf-color-text-secondary)}.library-page .site-footer-email:hover{color:var(--cf-color-primary)}.library-page .site-footer-legal{display:flex;flex-wrap:wrap;gap:var(--cf-space-150) var(--cf-space-400)}.library-page .site-footer-legal a{color:var(--cf-color-text-tertiary)}.library-page .site-footer-legal a:hover{color:var(--cf-color-primary)}.library-page .site-footer-copy{margin:0 0 0 auto;color:var(--cf-color-text-tertiary)}@media(max-width:768px){.library-page .site-footer-copy{margin-left:0}}