.library-page{min-height:100vh;display:flex;flex-direction:column;background:var(--cf-color-bg);color:var(--cf-color-text);font-family:var(--cf-font-sans);font-size:var(--cf-font-size-350);line-height:var(--cf-line-height-170);-webkit-font-smoothing:antialiased}.library-page a{color:inherit;text-decoration:none}.library-page a,.library-page button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.library-page button{font:inherit;cursor:pointer}.library-page a:focus-visible,.library-page button:focus-visible{outline:2px solid var(--cf-color-focus-ring);outline-offset:4px}.library-page .library-header{position:-webkit-sticky;position:sticky;top:0;z-index:var(--cf-z-header);height:68px;border-bottom:1px solid var(--cf-color-border);background:var(--cf-color-bg-subtle)}.library-page .library-header-inner{height:100%;max-width:1080px;margin:0 auto;padding-inline:var(--cf-space-600);display:flex;align-items:center}.library-page .library-brand{display:flex;align-items:center;gap:var(--cf-space-250);margin-right:auto;font-size:var(--cf-font-size-350);font-weight:var(--cf-font-weight-bold);letter-spacing:var(--cf-letter-spacing-snug)}.library-page .brand-mark{display:grid;grid-template-columns:auto auto;align-content:center;justify-content:center;width:33px;height:33px;border:1px solid var(--cf-color-primary-border);background:var(--cf-color-primary-subtle);border-radius:var(--cf-radius-200);font-size:var(--cf-font-size-550);line-height:var(--cf-line-height-100);font-weight:var(--cf-font-weight-heavy);letter-spacing:var(--cf-letter-spacing-tighter)}.library-page .brand-mark span{color:var(--cf-color-primary)}.library-page .library-header .theme-toggle{margin-right:var(--cf-space-200)}.library-page .library-editor-link{display:inline-flex;align-items:center;gap:var(--cf-space-150);min-height:32px;margin-right:var(--cf-space-300);padding:0 var(--cf-space-300);border:1px solid var(--cf-color-border);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);transition:color var(--cf-duration-fast),border-color var(--cf-duration-fast)}.library-page .library-editor-link:hover{border-color:var(--cf-color-border-hover);color:var(--cf-color-text-strong)}@media(max-width:560px){.library-page .library-editor-link{padding:0;width:32px;justify-content:center}.library-page .library-editor-link span{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}}.library-page .brand-light{font-weight:var(--cf-font-weight-regular);color:var(--cf-color-brand-soft)}.library-page .library-main{flex:1 1;width:100%;max-width:1080px;margin:0 auto;padding:var(--cf-space-1200) var(--cf-space-600) var(--cf-space-800)}.library-page .library-intro{max-width:640px;padding-bottom:var(--cf-space-700)}.library-page .library-label{display:flex;align-items:center;gap:var(--cf-space-200);font:var(--cf-font-size-225)/var(--cf-line-height-160) var(--cf-font-mono);letter-spacing:var(--cf-letter-spacing-widest);color:var(--cf-color-text-tertiary)}.library-page .library-label>span{font-size:var(--cf-font-size-400);letter-spacing:var(--cf-letter-spacing-tight)}.library-page h1{font-size:var(--cf-font-size-700);line-height:var(--cf-line-height-140);font-weight:var(--cf-font-weight-bold);letter-spacing:var(--cf-letter-spacing-snug);margin:var(--cf-space-400) 0 0;text-wrap:balance}.library-page .library-intro p{color:var(--cf-color-text-secondary);line-height:var(--cf-line-height-170);margin:var(--cf-space-250) 0 0}.library-page .library-intro-link{display:inline-flex;align-items:center;gap:var(--cf-space-150);margin-top:var(--cf-space-400);color:var(--cf-color-primary);font-weight:var(--cf-font-weight-semibold)}.library-page .library-intro-link:hover{color:var(--cf-color-primary-hover)}.library-page .library-section{padding-top:var(--cf-space-700);border-top:1px solid var(--cf-color-border);scroll-margin-top:84px}.library-page .library-section+.library-section{margin-top:var(--cf-space-900)}.library-page h2{font-size:var(--cf-font-size-500);font-weight:var(--cf-font-weight-strong);letter-spacing:var(--cf-letter-spacing-slight);line-height:var(--cf-line-height-150);margin:0}.library-page .section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--cf-space-300);flex-wrap:wrap;margin-bottom:var(--cf-space-400)}.library-page .section-heading>span{font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}.library-page .topic-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));grid-gap:var(--cf-space-350);gap:var(--cf-space-350)}.library-page .topic-card{height:100%;display:flex;flex-direction:column;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 .topic-card h3{font-size:var(--cf-font-size-400);font-weight:var(--cf-font-weight-strong);line-height:var(--cf-line-height-150);margin:var(--cf-space-350) 0 var(--cf-space-100)}.library-page .topic-card p{margin:0;font-size:var(--cf-font-size-300);line-height:var(--cf-line-height-170);color:var(--cf-color-text-secondary)}.library-page .topic-card.is-available{border-color:var(--cf-color-primary-border);transition:background-color var(--cf-duration-fast),border-color var(--cf-duration-fast)}.library-page .topic-card.is-available:hover{background:var(--cf-color-surface-raised);border-color:var(--cf-color-primary-border-hover)}.library-page .topic-card.is-available:hover .topic-cta{color:var(--cf-color-primary-hover)}.library-page .topic-card.is-locked{background:var(--cf-color-bg-subtle)}.library-page .topic-card.is-locked h3{color:var(--cf-color-text-secondary)}.library-page .topic-card.is-locked p{color:var(--cf-color-text-tertiary)}.library-page .topic-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--cf-space-250)}.library-page .topic-logo{display:grid;place-items:center;width:40px;height:40px;flex-shrink:0;border-radius:var(--cf-radius-200);background:var(--cf-color-surface-raised);border:1px solid var(--cf-color-border-control)}.library-page .topic-logo svg{display:block}.library-page .topic-card.is-available .topic-logo{border-color:var(--cf-color-primary-border)}.library-page .topic-status{font-size:var(--cf-font-size-200);font-weight:var(--cf-font-weight-strong);letter-spacing:var(--cf-letter-spacing-wide);color:var(--cf-color-text-tertiary);border:1px solid var(--cf-color-border-control);padding:var(--cf-space-050) var(--cf-space-150);border-radius:var(--cf-radius-100);white-space:nowrap}.library-page .topic-cta{display:flex;align-items:center;gap:var(--cf-space-200);margin-top:auto;padding-top:var(--cf-space-400);font-size:var(--cf-font-size-275);color:var(--cf-color-primary)}.library-page .topic-cta svg{width:13px;height:13px}.library-page .library-breadcrumb{display:flex;flex-wrap:wrap;gap:var(--cf-space-200);margin-bottom:var(--cf-space-600);font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}.library-page .library-breadcrumb a:hover{color:var(--cf-color-primary)}.library-page .library-breadcrumb>span:last-child{color:var(--cf-color-text)}.library-page .technology-intro{display:flex;align-items:flex-start;gap:var(--cf-space-500);max-width:720px}.library-page .technology-intro .topic-logo{width:56px;height:56px;border-radius:var(--cf-radius-300);border-color:var(--cf-color-primary-border)}.library-page .technology-intro .topic-logo svg{width:32px;height:32px}.library-page .author-highlights,.library-page .technology-meta{display:flex;flex-wrap:wrap;gap:var(--cf-space-200);margin-top:var(--cf-space-400)}.library-page .author-highlights>span,.library-page .technology-meta>span{font-size:var(--cf-font-size-250);color:var(--cf-color-text-secondary);border:1px solid var(--cf-color-border-control);background:var(--cf-color-surface-raised);padding:var(--cf-space-050) var(--cf-space-200);border-radius:var(--cf-radius-100)}.library-page .featured-lesson{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--cf-space-600);padding:var(--cf-space-500);border:1px solid var(--cf-color-primary-border);border-radius:var(--cf-radius-250);background:var(--cf-color-surface);transition:background-color var(--cf-duration-fast),border-color var(--cf-duration-fast)}.library-page .featured-lesson h3{font-size:var(--cf-font-size-450);font-weight:var(--cf-font-weight-semibold);line-height:var(--cf-line-height-140);margin:var(--cf-space-150) 0 var(--cf-space-100)}.library-page .featured-lesson p{max-width:580px;margin:0;font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-170);color:var(--cf-color-text-secondary)}.library-page .featured-lesson:hover{background:var(--cf-color-surface-raised);border-color:var(--cf-color-primary-border-hover)}.library-page .featured-lesson:hover .featured-cta{color:var(--cf-color-primary-hover)}.library-page .featured-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-primary)}.library-page .lesson-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cf-space-150) var(--cf-space-300);margin-top:var(--cf-space-300);font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}.library-page .lesson-meta>span{display:flex;align-items:center;gap:var(--cf-space-150)}.library-page .lesson-meta svg{width:13px;height:13px}.library-page .featured-cta{display:flex;align-items:center;gap:var(--cf-space-200);flex-shrink:0;font-size:var(--cf-font-size-275);color:var(--cf-color-primary)}.library-page .featured-cta svg{width:13px;height:13px}.library-page .lesson-list,.library-page .module-list{list-style:none;margin:0;padding:0}.library-page .module-list{display:flex;flex-direction:column;gap:var(--cf-space-250)}.library-page .module{border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-250);background:var(--cf-color-surface);overflow:hidden}.library-page .module-heading{display:grid;grid-template-columns:22px minmax(0,1fr) auto;grid-column-gap:var(--cf-space-350);column-gap:var(--cf-space-350);align-items:baseline;padding:var(--cf-space-350) var(--cf-space-450);cursor:pointer;list-style:none;transition:background-color var(--cf-duration-fast)}.library-page .module-heading::-webkit-details-marker{display:none}.library-page .module-heading:hover{background:var(--cf-color-surface-raised)}.library-page .module-heading:focus-visible{outline:2px solid var(--cf-color-focus-ring);outline-offset:-2px;border-radius:var(--cf-radius-250)}.library-page .module-heading h4{grid-column:2;font-size:var(--cf-font-size-350);font-weight:var(--cf-font-weight-strong);line-height:var(--cf-line-height-150);margin:0}.library-page .module-heading>.module-number{grid-column:1;grid-row:1}.library-page .module-heading>.module-count{grid-column:3;grid-row:1}.library-page .module-description,.library-page .module-preview{grid-column:2;display:block}.library-page .module-description{margin-top:1px;font-size:var(--cf-font-size-300);line-height:var(--cf-line-height-170);color:var(--cf-color-text-secondary)}.library-page .module-preview{margin-top:var(--cf-space-150);font-size:var(--cf-font-size-275);line-height:var(--cf-line-height-170);color:var(--cf-color-text-tertiary)}.library-page .module-count{display:flex;align-items:center;gap:var(--cf-space-200);font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary);white-space:nowrap}.library-page .module-count svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--cf-duration-fast)}.library-page .module-published{color:var(--cf-color-primary);border:1px solid var(--cf-color-primary-border);background:var(--cf-color-primary-subtle);padding:0 var(--cf-space-150);border-radius:var(--cf-radius-100)}.library-page details[open]>.module-heading{border-bottom:1px solid var(--cf-color-border)}.library-page details[open]>.module-heading .module-count svg{transform:rotate(180deg)}.library-page .lesson-index,.library-page .module-number{flex-shrink:0;font:var(--cf-font-size-225)/var(--cf-line-height-160) var(--cf-font-mono);color:var(--cf-color-text-tertiary)}.library-page .lesson-list>li+li{border-top:1px solid var(--cf-color-border)}.library-page .lesson-row{display:flex;align-items:baseline;gap:var(--cf-space-350);padding:var(--cf-space-300) var(--cf-space-450)}.library-page .lesson-index{width:22px}.library-page .lesson-text{flex:1 1;min-width:0}.library-page .lesson-text strong{display:block;font-size:var(--cf-font-size-325);font-weight:var(--cf-font-weight-medium)}.library-page .lesson-text>span{display:block;font-size:var(--cf-font-size-275);line-height:var(--cf-line-height-170);color:var(--cf-color-text-tertiary)}.library-page .lesson-text>.lesson-topics{margin-top:var(--cf-space-050);font-size:var(--cf-font-size-250);line-height:var(--cf-line-height-170);color:var(--cf-color-text-muted)}.library-page .lesson-row.is-available{background:var(--cf-color-primary-subtle);transition:background-color var(--cf-duration-fast)}.library-page .lesson-row.is-available .lesson-index{color:var(--cf-color-primary)}.library-page .lesson-row.is-available:hover{background:var(--cf-color-primary-subtle-hover)}.library-page .lesson-row.is-locked .lesson-text strong{color:var(--cf-color-text-secondary)}.library-page .lesson-aside{display:flex;align-items:center;gap:var(--cf-space-200);flex-shrink:0;font-size:var(--cf-font-size-250);color:var(--cf-color-primary);white-space:nowrap}.library-page .lesson-aside svg{width:13px;height:13px}.library-page .section-intro{max-width:640px;margin:calc(-1*var(--cf-space-150)) 0 var(--cf-space-450);font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-170);color:var(--cf-color-text-secondary)}.library-page .stage-overview{list-style:none;margin:0 0 var(--cf-space-700);padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,190px),1fr));grid-gap:var(--cf-space-250);gap:var(--cf-space-250)}.library-page .stage-card{height:100%;display:flex;flex-direction:column;gap:var(--cf-space-050);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:background-color var(--cf-duration-fast),border-color var(--cf-duration-fast)}.library-page .stage-card strong{font-size:var(--cf-font-size-325);font-weight:var(--cf-font-weight-strong);line-height:var(--cf-line-height-140)}.library-page .stage-card:hover{background:var(--cf-color-surface-raised);border-color:var(--cf-color-primary-border-hover)}.library-page .stage-card-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-primary)}.library-page .stage-card-count{margin-top:auto;padding-top:var(--cf-space-150);font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}.library-page .curriculum-toolbar{position:-webkit-sticky;position:sticky;top:68px;z-index:5;display:flex;align-items:center;gap:var(--cf-space-250);padding:var(--cf-space-250) 0;background:var(--cf-color-bg)}.library-page .curriculum-search{position:relative;flex:1 1;min-width:0}.library-page .curriculum-search>svg{position:absolute;left:11px;top:50%;width:15px;height:15px;transform:translateY(-50%);fill:none;stroke:var(--cf-color-text-tertiary);stroke-width:1.8;stroke-linecap:round;pointer-events:none}.library-page .curriculum-search input{width:100%;height:38px;padding:0 var(--cf-space-900) 0 var(--cf-space-800);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-200);background:var(--cf-color-surface);color:var(--cf-color-text);font:inherit;font-size:var(--cf-font-size-325)}.library-page .curriculum-search input::placeholder{color:var(--cf-color-text-muted)}.library-page .curriculum-search input::-webkit-search-cancel-button{display:none}.library-page .curriculum-search input:focus-visible{outline:2px solid var(--cf-color-focus-ring);outline-offset:1px}.library-page .curriculum-clear{position:absolute;right:5px;top:50%;display:grid;place-items:center;width:28px;height:28px;transform:translateY(-50%);border:0;border-radius:var(--cf-radius-150);background:rgba(0,0,0,0);color:var(--cf-color-text-tertiary)}.library-page .curriculum-clear:hover{color:var(--cf-color-text);background:var(--cf-color-surface-raised)}.library-page .curriculum-clear svg{width:14px;height:14px}.library-page .curriculum-empty button,.library-page .curriculum-toggle-all{flex-shrink:0;border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-200);background:var(--cf-color-surface-raised);color:var(--cf-color-text-secondary);font-size:var(--cf-font-size-275);transition:color var(--cf-duration-fast),border-color var(--cf-duration-fast)}.library-page .curriculum-empty button:hover:not(:disabled),.library-page .curriculum-toggle-all:hover:not(:disabled){color:var(--cf-color-text);border-color:var(--cf-color-primary-border-hover)}.library-page .curriculum-empty button:disabled,.library-page .curriculum-toggle-all:disabled{opacity:.5;cursor:default}.library-page .curriculum-toggle-all{height:38px;padding:0 var(--cf-space-350)}.library-page .curriculum-status{margin:var(--cf-space-050) 0 0;font-size:var(--cf-font-size-275);color:var(--cf-color-text-tertiary)}.library-page .curriculum-empty{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cf-space-200);margin-top:var(--cf-space-350);font-size:var(--cf-font-size-300);color:var(--cf-color-text-secondary)}.library-page .curriculum-empty button{padding:var(--cf-space-100) var(--cf-space-250)}.library-page .curriculum-stage{margin-top:var(--cf-space-700);scroll-margin-top:136px}.library-page .stage-heading{margin-bottom:var(--cf-space-350)}.library-page .stage-heading h3{font-size:var(--cf-font-size-450);font-weight:var(--cf-font-weight-semibold);line-height:var(--cf-line-height-140);letter-spacing:var(--cf-letter-spacing-slight);margin:var(--cf-space-100) 0 var(--cf-space-050)}.library-page .stage-heading p{max-width:640px;margin:0;font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-170);color:var(--cf-color-text-secondary)}.library-page .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-primary)}.library-page .stage-count{display:block;margin-top:var(--cf-space-100);font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}.library-page .library-intro .process-byline{margin-top:var(--cf-space-400);font-size:var(--cf-font-size-300);color:var(--cf-color-text-tertiary)}.library-page .library-intro .process-byline a{color:var(--cf-color-text-secondary)}.library-page .library-intro .process-byline a:hover{color:var(--cf-color-primary)}.library-page .process-section h2{margin-bottom:var(--cf-space-400)}.library-page .process-section p{max-width:720px;margin:0 0 var(--cf-space-400);font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-180);color:var(--cf-color-text-secondary)}.library-page .process-section strong{color:var(--cf-color-text);font-weight:var(--cf-font-weight-semibold)}.library-page .process-section a{color:var(--cf-color-primary)}.library-page .process-section a:hover{color:var(--cf-color-primary-hover)}.library-page .process-section code{font-family:var(--cf-font-mono);font-size:.92em;padding:0 var(--cf-space-100);border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-100);background:var(--cf-color-surface-raised)}.library-page .process-list{display:grid;grid-gap:var(--cf-space-300);gap:var(--cf-space-300);max-width:720px;margin:0 0 var(--cf-space-400);padding-left:var(--cf-space-500);font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-180);color:var(--cf-color-text-secondary)}.library-page .process-steps{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));grid-gap:var(--cf-space-250);gap:var(--cf-space-250);margin:0 0 var(--cf-space-500);padding:0}.library-page .process-steps>li{display:flex;gap:var(--cf-space-300);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 .process-steps strong{display:block;font-size:var(--cf-font-size-300)}.library-page .process-steps div>span{display:block;margin-top:var(--cf-space-100);font-size:var(--cf-font-size-275);line-height:var(--cf-line-height-170);color:var(--cf-color-text-secondary)}.library-page .process-step-number{flex-shrink:0;font:var(--cf-font-size-225)/var(--cf-line-height-180) var(--cf-font-mono);color:var(--cf-color-primary)}.library-page .author-card{display:flex;align-items:center;gap:var(--cf-space-600);padding:var(--cf-space-500);border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-250);background:var(--cf-color-surface)}.library-page .author-photo{flex-shrink:0;width:160px;height:200px;object-fit:cover;object-position:45% 30%;border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-200)}.library-page .author-text{min-width:0;max-width:620px}.library-page .author-text h3{font-size:var(--cf-font-size-450);font-weight:var(--cf-font-weight-semibold);line-height:var(--cf-line-height-140);margin:0}.library-page .author-text p{margin:var(--cf-space-250) 0 0;font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-180);color:var(--cf-color-text-secondary)}.library-page .author-role{display:block;margin-top:var(--cf-space-050);font-size:var(--cf-font-size-275);color:var(--cf-color-primary)}.library-page .author-links{display:flex;flex-wrap:wrap;gap:var(--cf-space-250);margin-top:var(--cf-space-400)}.library-page .author-links a{display:inline-flex;align-items:center;gap:var(--cf-space-200);padding:var(--cf-space-150) var(--cf-space-300);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-150);background:var(--cf-color-surface-raised);font-size:var(--cf-font-size-275);color:var(--cf-color-text-secondary);transition:color var(--cf-duration-fast),border-color var(--cf-duration-fast)}.library-page .author-links a:hover{color:var(--cf-color-text);border-color:var(--cf-color-primary-border-hover)}.library-page .author-links svg{flex-shrink:0}.library-page .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.library-page .library-footer{width:100%;max-width:1080px;margin:0 auto;display:flex;justify-content:space-between;gap:var(--cf-space-250);flex-wrap:wrap;padding:var(--cf-space-600) var(--cf-space-600) var(--cf-space-700);font-size:var(--cf-font-size-250);color:var(--cf-color-text-tertiary)}.library-page .library-footer>span{color:var(--cf-color-text-muted)}@media(max-width:768px){.library-page .library-header{height:58px}.library-page .library-header-inner{padding-inline:var(--cf-space-450)}.library-page .library-brand{font-size:var(--cf-font-size-325)}.library-page .library-main{padding:var(--cf-space-800) var(--cf-space-450) var(--cf-space-600)}.library-page .library-footer{padding-inline:var(--cf-space-450);font-size:var(--cf-font-size-225)}.library-page h1{font-size:var(--cf-font-size-650)}.library-page h2{font-size:var(--cf-font-size-475)}.library-page .library-intro p{font-size:var(--cf-font-size-325)}.library-page .featured-lesson{flex-direction:column;align-items:flex-start;gap:var(--cf-space-400);padding:var(--cf-space-400)}.library-page .curriculum-toolbar{top:58px}.library-page .curriculum-stage{scroll-margin-top:124px}}@media(max-width:560px){.library-page .technology-intro{flex-direction:column;gap:var(--cf-space-400)}.library-page .stage-overview{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--cf-space-200)}.library-page .stage-card{padding:var(--cf-space-250) var(--cf-space-300)}.library-page .curriculum-toggle-all{padding:0 var(--cf-space-250)}.library-page .module-heading{grid-template-columns:22px minmax(0,1fr);padding:var(--cf-space-350);column-gap:var(--cf-space-250)}.library-page .module-heading>.module-count{grid-column:2;grid-row:auto;margin-top:var(--cf-space-150)}.library-page .lesson-row{flex-wrap:wrap;gap:var(--cf-space-150) var(--cf-space-300);padding:var(--cf-space-300) var(--cf-space-350)}.library-page .lesson-text{flex-basis:calc(100% - 34px)}.library-page .lesson-aside,.library-page .lesson-row>.topic-status{margin-left:var(--cf-space-800)}.library-page .author-card{flex-direction:column;align-items:flex-start;gap:var(--cf-space-400);padding:var(--cf-space-400)}.library-page .author-photo{width:120px;height:150px}}@media(prefers-reduced-motion:reduce){.library-page *,.library-page :after,.library-page :before{transition:none!important}}.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}}