:root{--paper:#fff;--surface:#fff;--ink:#24292f;--muted:#57606a;--line:#d8dee4;--accent:#0969da;--accent-soft:#ddf4ff;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif}html{background:var(--paper)}body.blog-body{background:var(--paper);color:var(--ink);font-family:var(--sans)}::selection{color:var(--ink);background:#b6e3ff}body.blog-body :focus-visible{outline:2px solid var(--accent);outline-offset:4px}.blog-body .ir-app :focus-visible,.blog-body .ir-dialog :focus-visible,.blog-body .ai-lab :focus-visible,.blog-body .ai-tools :focus-visible,.blog-body .ai-learning :focus-visible{outline-color:var(--accent)}.blog-body .ir-search:focus-within,.blog-body .lab-search:focus-within,.blog-body .at-search:focus-within,.blog-body .course-search:focus-within{outline:2px solid var(--accent);outline-offset:2px}.blog-body .ir-search input:focus-visible,.blog-body .lab-search input:focus-visible,.blog-body .at-search input:focus-visible,.blog-body .course-search input:focus-visible{outline:0}.blog-body .blog-header{border:0;border-bottom:1px solid var(--line);padding:0 40px;display:block}.blog-navigation{border:0;gap:32px;max-width:1200px;min-height:68px;padding:0}.blog-brand{font-family:var(--sans);letter-spacing:-.65px;flex-shrink:0;font-size:21px;font-weight:650;line-height:1.4;display:block}.blog-navigation-links{flex-wrap:wrap;align-self:stretch;gap:24px}.blog-navigation .nav-link{min-height:44px;color:var(--muted);background:0 0;border-bottom:2px solid #0000;border-radius:0;margin-bottom:-1px;padding:0;font-size:14px}.blog-navigation .nav-link:hover{color:var(--ink);background:0 0}.blog-navigation .nav-link.active{color:var(--accent);border-bottom-color:var(--accent);background:0 0}.blog-body>.blog-main{width:100%;max-width:1280px;margin:0 auto;padding:32px 40px 64px}.blog-body>.blog-footer{border-color:var(--line);width:calc(100% - 80px);max-width:1200px;padding:24px 0;display:flex}.footer-note,.footer-links{font-size:12px}.footer-links{gap:18px}.footer-signoff{color:var(--muted);margin-left:0}.text-link,.entry-tags,.section-dot{color:var(--accent)}.text-link:hover{color:var(--ink)}.eyebrow{color:var(--muted);letter-spacing:1px;font-size:12px}.page-heading{padding-bottom:16px}.page-heading h1{font:650 28px/1.4 var(--sans);letter-spacing:-.5px;margin:0 0 12px}.page-heading p{color:var(--muted);max-width:620px}.page-heading .section-dot{display:none}.content-tabs{gap:24px}.content-tab{font-size:14px}.article-entry{padding:32px 0}.entry-list h3{font:600 21px/1.5 var(--sans)}.entry-meta{font-size:12px}.entry-summary{color:var(--muted);max-width:740px;font-size:15px}.entry-list h3 svg{color:var(--accent)}.entry-tags{color:var(--muted);gap:14px}.article-detail{max-width:800px}.editorial-article-feature{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:32px;padding:28px 0;display:grid}.editorial-feature-copy h2{font:600 23px/1.55 var(--sans);letter-spacing:-.35px;margin:10px 0 12px}.editorial-feature-copy h2 a{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.editorial-feature-copy h2 svg{color:var(--accent);flex-shrink:0;margin-top:10px}.editorial-feature-copy>p{color:var(--muted);font-size:15px;line-height:1.8}.editorial-feature-copy>.text-link{margin:8px 0 0;font-size:14px}.editorial-article-image{aspect-ratio:16/10;border:1px solid var(--line);background:#f6f8fa;border-radius:4px;display:block;position:relative;overflow:hidden}.editorial-article-image img{-o-object-fit:cover;object-fit:cover;-o-object-position:top;object-position:top}.editorial-article-image:focus-visible{outline-offset:5px}.editorial-archive-heading{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:baseline;margin:32px 0 0;padding-bottom:10px;display:flex}.editorial-archive-heading h2{font:600 20px/1.5 var(--sans)}.editorial-archive-heading>span{color:var(--muted);font-size:12px}.ir-directory[id]{scroll-margin-top:24px}.article-heading h1{font:650 clamp(26px, 3vw, 32px)/1.5 var(--sans);letter-spacing:-.4px}.blog-prose{color:var(--ink);font-size:16px;line-height:1.95}.blog-prose blockquote{border-color:var(--accent);background:#f6f8fa}.blog-prose pre,.blog-prose code{background:#f6f8fa;border-radius:2px}.blog-prose img{border-radius:2px}.moment-entry{padding:26px 0;display:block}.moment-prose{font-size:15px}.empty-content{text-align:left;align-items:flex-start;padding:36px 0}.empty-content h3{color:var(--ink);font:600 18px/1.5 var(--sans)}.empty-content p{margin:12px 0 0;font-size:14px}.empty-illustration,.empty-footnote{display:none}.about-copy h2{font:600 21px/1.5 var(--sans)}.about-copy p{color:var(--ink);max-width:720px;font-size:16px}.about-signature{color:var(--ink);font-style:normal}.about-links a{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:20px 0}.about-links a:hover{color:var(--ink);background:0 0}.not-found h1{font-family:var(--sans)}.blog-body .ir-app{min-height:0;color:var(--ink);--ir-ink:var(--ink);--ir-muted:var(--muted);--ir-line:var(--line);--ir-orange:var(--accent);--ir-green:#546549;background:0 0;font-family:inherit;display:block}.blog-body .ir-main{max-width:none;margin:0;padding:0}.blog-body .ir-workspace{width:100%}.ir-catalog-updated{color:var(--muted);padding-top:20px;font-size:12px;line-height:1.8}.edition-nav{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:24px;margin-bottom:26px;display:flex}.design-preview-note{border:1px solid var(--line);color:var(--muted);background:#f6f8fa;border-radius:4px;margin-bottom:20px;padding:9px 12px;font-size:12px;line-height:1.8}.edition-nav button{min-height:44px;color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-1px;padding:0 0 10px;font-size:14px;display:inline-flex}.edition-nav button.active{color:var(--accent);border-bottom-color:var(--accent)}.edition-nav .ir-count{color:inherit;background:0 0;border:0;min-width:0;margin-left:0;padding:0}.blog-body .ir-section-heading h2{font-size:20px;font-weight:600}.blog-body .ir-section-heading p{color:var(--muted);margin-top:8px;font-size:13px}.blog-body .ir-heading-count{color:var(--muted);background:0 0;padding:0}.blog-body .ir-button,.blog-body .ir-search,.blog-body .ir-select,.blog-body .ir-view-toggle{border-color:var(--line);background:var(--surface);box-shadow:none;min-height:44px;color:var(--ink);border-radius:2px}.blog-body .ir-button.primary{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:none}.blog-body .ir-button.primary:hover{background:var(--accent);border-color:var(--accent)}.blog-body .ir-filter-tabs button{min-height:44px;color:var(--muted);background:0 0;border-radius:0;padding:10px 12px}.blog-body .ir-filter-tabs button.active{color:var(--accent);background:var(--accent-soft)}.blog-body .ir-table-wrap{border:1px solid var(--line);background:0 0;border-radius:4px}.blog-body .ir-table th{color:var(--muted);background:#f6f8fa;height:44px;font-size:12px}.blog-body .ir-table td{border-color:var(--line);padding-top:18px;padding-bottom:18px}.blog-body .ir-product strong{color:var(--ink);font-size:15px}.blog-body .ir-product small,.blog-body .ir-undisclosed,.blog-body .ir-undisclosed small{color:var(--muted)}.blog-body .ir-revenue small,.blog-body .ir-undisclosed small{color:var(--muted);font-size:11px;line-height:1.6}.blog-body .ir-save,.blog-body .lab-save.is-compact{min-width:44px;min-height:44px}.blog-body .ir-save:hover,.blog-body .ir-save.saved,.blog-body .lab-save.is-saved{color:var(--accent);background:var(--accent-soft)}.blog-body .ir-product-mark{color:var(--ink);background:#f6f8fa;border-radius:2px}.blog-body .ir-pill,.blog-body .ir-status{color:var(--muted);background:0 0;border-radius:0}.blog-body .ir-status.reviewed{color:#546549}.blog-body .ir-table tbody tr:hover{background:#f6f8fa}.blog-body .ir-project-card{border-color:var(--line);box-shadow:none;background:var(--surface);border-radius:0}.blog-body .ir-card-title{color:var(--ink);font-size:20px}.blog-body .ir-bottom-note{color:var(--muted);margin-top:20px;font-size:11px}.blog-body .ir-bottom-note button{color:var(--accent);min-height:44px}.blog-body .ir-sources-page h1{font:650 28px/1.4 var(--sans)}.blog-body .ir-source-card{border-color:var(--line);box-shadow:none;background:var(--surface);border-radius:0}.ir-dialog{--ir-orange:var(--accent);--ir-green:#546549;border-color:var(--line);background:var(--paper);color:var(--ink);border-radius:3px}.ir-dialog .ir-button.primary{background:var(--ink);border-color:var(--ink);box-shadow:none}.ir-dialog .ir-profile-section,.ir-dialog .ir-evidence-card{background:var(--surface);border-radius:2px}.ir-dialog input,.ir-dialog select{border-radius:2px}.blog-body .ai-lab{--lab-accent:var(--accent);--lab-muted:var(--muted);--lab-line:var(--line);--ink:#24292f;--lab-sage:#f6f8fa;--lab-peach:#f6f8fa;--lab-lavender:#f6f8fa;--lab-blue:#f6f8fa}.blog-body .lab-hero{padding:0 0 20px;display:block}.blog-body .lab-hero h1{font:650 28px/1.4 var(--sans);letter-spacing:-.5px;margin:0 0 12px}.blog-body .lab-hero h1>span{color:var(--muted);letter-spacing:0;margin-top:20px;font:14px/1.9 Arial,Microsoft YaHei,sans-serif}.blog-body .lab-hero-copy>p{color:var(--muted);max-width:760px;font-size:14px}.blog-body .lab-button{background:var(--ink);box-shadow:none;border-radius:2px;min-height:44px}.blog-body .lab-button:hover{background:var(--accent)}.blog-body .lab-starter-picker{border-color:var(--line);background:0 0;border-radius:0}.blog-body .lab-section-heading h2{font-size:20px;font-weight:600}.blog-body .lab-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 32px}.blog-body .lab-card{border:0;border-top:1px solid var(--line);box-shadow:none;background:0 0;border-radius:0;padding:18px 0 0}.blog-body .lab-card:hover{border-color:var(--ink);box-shadow:none;background:0 0}.blog-body .lab-card-number{color:var(--muted);letter-spacing:0;font-size:12px}.blog-body .lab-card h3{font:600 19px/1.5 var(--sans)}.blog-body .lab-card>p{color:var(--muted);font-size:14px;line-height:1.9}.blog-body .lab-card-facts{color:var(--muted);font-size:12px}.blog-body .lab-card-bottom{color:var(--muted);background:0 0;border:0;margin:0;padding:16px 0 24px}.blog-body .lab-card-bottom a{color:var(--accent)}.blog-body .lab-category-filters button{border-radius:0;min-height:44px}.blog-body .lab-category-filters button.is-active{background:var(--accent-soft);color:var(--accent)}.blog-body .lab-search{border-color:var(--line);background:var(--surface);border-radius:2px;min-height:44px}.blog-body .lab-search input{font-size:13px}.blog-body .lab-start-note{background:#f6f8fa;border:0;border-radius:0;padding:23px}.blog-body .lab-source-note p{color:var(--muted);font-size:12px}.blog-body .lab-source-note h2{font:600 20px/1.5 var(--sans)}.blog-body .lab-detail-header{border:0;border-bottom:1px solid var(--ink);background:0 0;border-radius:0;padding:14px 0 30px}.blog-body .lab-detail-header h1{font:650 clamp(26px, 3vw, 32px)/1.5 var(--sans)}.blog-body .lab-detail-header>p{color:var(--muted);max-width:760px;font-size:15px}.blog-body .lab-guide h2{font:600 23px/1.5 var(--sans)}.blog-body .lab-guide{background:0 0;border:0;border-radius:0;padding:0}.blog-body .lab-guide-heading{color:var(--accent)}.blog-body .lab-tools{background:#f6f8fa;border-radius:2px}.blog-body .lab-project-start{background:#f6f8fa;border:0;border-radius:2px}.blog-body .lab-fit-grid>div{padding:18px}.blog-body .lab-fit-grid>div>span,.blog-body .lab-tools>span{color:var(--accent)}.blog-body .lab-guide p{font-size:14px;line-height:2}.blog-body .lab-toc{border:0;border-left:1px solid var(--line);background:0 0;border-radius:0;padding:0 0 0 24px}.blog-body .lab-toc nav a{min-height:38px;color:var(--muted);font-size:12px}.blog-body .lab-toc-note{display:none}.blog-body .lab-fit-grid>div,.blog-body .lab-experiment,.blog-body .lab-calculator,.blog-body .lab-project-panel,.blog-body .lab-project-gate,.blog-body .lab-source-item,.blog-body .lab-plan-panel,.blog-body .lab-pitfalls,.blog-body .lab-project-status,.blog-body .lab-step-output{border-color:var(--line);background:#f6f8fa;border-radius:2px}.blog-body .lab-related>div:last-child>a{border-color:var(--line);background:0 0;border-radius:0}.blog-body .ai-learning{--course-green:var(--accent);--course-muted:var(--muted);--course-line:var(--line);--course-soft:#f6f8fa;--learn-green:var(--accent);--learn-muted:var(--muted);--learn-line:var(--line);--learn-soft:#f6f8fa}.blog-body .course-hero{padding:0 0 24px;display:block}.blog-body .course-hero h1{font:650 28px/1.4 var(--sans);letter-spacing:-.5px;margin:0 0 12px}.blog-body .course-hero h1>span{color:var(--ink)}.blog-body .course-hero p{font-size:14px;line-height:1.9}.blog-body .course-eyebrow{color:var(--accent);letter-spacing:.5px;font-size:11px}.blog-body .status-dot{display:none}.blog-body .course-featured-video{background:0 0;border:0;border-radius:0;padding:0}.blog-body .course-player{background:var(--ink);border-radius:2px}.blog-body .course-video-start{color:#fff;background:#24292f}.blog-body .course-video-start:hover{background:#32383f}.blog-body .course-play-circle{color:#fff;background:0 0;border-color:#8c959f}.blog-body .course-button{background:var(--ink);border-color:var(--ink);border-radius:2px;font-size:12px}.blog-body .course-button:hover{background:var(--accent);border-color:var(--accent)}.blog-body .course-path-strip a{min-height:44px}.blog-body .course-path-strip span{color:var(--accent)}.blog-body .course-continue{background:#f6f8fa;border:0;border-radius:2px}.blog-body .course-continue-icon{color:var(--accent);background:0 0}.blog-body .course-section-heading h2,.blog-body .course-source-library h2{font:600 23px/1.4 var(--sans)}.blog-body .course-format-filters button{border-radius:0}.blog-body .course-format-filters button.is-selected{background:var(--accent-soft);color:var(--accent)}.blog-body .course-chapter{border:0;border-top:1px solid var(--ink);background:0 0;border-radius:0}.blog-body .course-chapter-heading{border-color:var(--line);background:0 0;padding:22px 0}.blog-body .course-chapter-number{color:var(--muted);font:500 19px/1.4 var(--sans);border:0}.blog-body .course-chapter-heading h3{font:600 20px/1.5 var(--sans)}.blog-body .course-chapter-heading p{font-size:12px}.blog-body .course-chapter-output{color:var(--muted);font-size:12px}.blog-body .course-lesson-list{padding:0}.blog-body .course-lesson-row{border-color:var(--line);padding:23px 0}.blog-body .course-lesson-info h4{font-size:17px}.blog-body .course-lesson-info>p{font-size:13px}.blog-body .course-search{background:var(--surface);border-color:var(--line);border-radius:2px}.blog-body .course-outline{border:0;border-right:1px solid var(--line);background:0 0;border-radius:0}.blog-body .course-reader-hero h1{font-family:var(--sans)}.blog-body .course-reading-article{color:var(--ink)}.blog-body .course-lesson-heading h1{font-family:var(--sans)}.blog-body .course-objectives,.blog-body .course-mobile-outline-toggle{border-color:var(--line);background:#f6f8fa;border-radius:2px}.blog-body .course-prose{color:var(--ink)}.blog-body .course-prose pre,.blog-body .course-prose code{color:var(--ink);border-color:var(--line);background:#f6f8fa;border-radius:2px}.blog-body .course-prose pre code{background:0 0}.blog-body .course-outline li a.is-current{background:var(--accent-soft);color:var(--accent)}.blog-body .learn-detail-hero{border-width:0 0 1px;border-color:var(--ink);background:0 0;border-radius:0;padding:15px 0 30px}.blog-body .learn-detail-hero h1{font-family:var(--sans);font-weight:500}.blog-body .learn-detail-mark{display:none}.blog-body .learn-button{background:var(--ink);border-radius:2px}.blog-body .learn-section-heading h2{font-family:var(--sans)}.blog-body .learn-task,.blog-body .course-source-grid a,.blog-body .course-watch-points,.blog-body .course-exercise{border-color:var(--line);background:#f6f8fa;border-radius:2px}.blog-body .ai-tools{--at-ink:var(--ink);--at-accent:var(--accent);--at-muted:var(--muted);--at-line:var(--line);--at-paper:var(--paper);background:0 0}.blog-body .at-hero{background:0 0;border:0;border-radius:0;padding:0 0 24px;display:block}.blog-body .at-hero-copy{padding:0}.blog-body .at-hero h1{font:650 28px/1.4 var(--sans);color:var(--ink);letter-spacing:-.5px;margin:0 0 12px}.blog-body .at-hero-copy>p{color:var(--muted);font-size:14px}.blog-body .at-discovery{border-width:1px 0;border-color:var(--line);background:0 0;border-radius:0}.blog-body .at-filters{border-color:var(--line);background:#f6f8fa;border-radius:4px}.blog-body .at-search,.blog-body .at-select{border-color:var(--line);background:var(--surface);border-radius:2px}.blog-body .at-button{background:var(--ink);border-color:var(--ink);border-radius:2px}.blog-body .at-card{border:0;border-top:1px solid var(--line);box-shadow:none;background:0 0;border-radius:0;padding:20px 0 12px}.blog-body .at-card:hover{border-color:var(--ink);box-shadow:none;transform:none}.blog-body .at-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 32px}.blog-body .at-mark{color:var(--ink);background:#f6f8fa;border-radius:2px}.blog-body .at-card-description{color:var(--muted);font-size:14px;line-height:1.9}.blog-body .at-card-head h3{font-size:18px;line-height:1.5}.blog-body .at-card-foot a{min-height:44px;font-size:12px}.blog-body .at-result-meta,.blog-body .at-coverage{font-size:12px}.blog-body .ir-search input,.blog-body .ir-select select,.blog-body .at-search input,.blog-body .at-select select{font-size:13px}.blog-body .at-card-category{color:var(--accent);background:0 0;border-radius:0;padding-left:0}.blog-body .at-detail-header{border-width:0 0 1px;border-color:var(--ink);background:0 0;border-radius:0}.blog-body .at-detail-header h1{font-family:var(--sans)}.blog-body .at-detail-hero{border:0;border-bottom:1px solid var(--ink);background:0 0;border-radius:0;padding:15px 0 30px}.blog-body .at-detail-title h1{font-family:var(--sans);font-weight:500}.blog-body .at-detail-content{background:0 0;border:0;border-radius:0;padding:0}.blog-body .at-detail-title .at-mark{border-radius:2px}.blog-body .at-detail-hero>p,.blog-body .at-detail-section>p,.blog-body .at-feature-list li{color:var(--muted);font-size:14px}.blog-body .at-detail-section{border-color:var(--line)}.blog-body .at-detail-section h2{font:600 23px/1.5 var(--sans);color:var(--ink)}.blog-body .at-detail-tags>a,.blog-body .at-detail-tags>.at-price{border-color:var(--line);color:var(--muted);background:#f6f8fa;border-radius:0}.blog-body .at-category-grid>a{border-color:var(--line);background:0 0;border-radius:0}.blog-body .at-visit-panel,.blog-body .at-practice-panel,.blog-body .at-audience,.blog-body .at-plan-grid>div,.blog-body .at-faq details{border-color:var(--line);background:#f6f8fa;border-radius:2px}.blog-body .at-detail-aside h2{font:600 18px/1.5 var(--sans);color:var(--ink)}.blog-body .at-discovery a{border-color:var(--line);color:var(--muted);background:0 0;border-radius:0}.blog-body .at-discovery a:hover{color:var(--accent)}.blog-body .at-detail-main>section,.blog-body .at-detail-aside>div,.blog-body .at-category-card{border-color:var(--line);background:var(--surface);border-radius:2px}.blog-body .stats-login,.blog-body .stats-grid section,.blog-body .stats-cards article{background:var(--surface);border-color:var(--line);border-radius:2px}.blog-body .stats-button{border-radius:2px}.blog-body .stats-button.primary{background:var(--ink);border-color:var(--ink)}.blog-body .stats-heading h1{font-family:var(--sans)}.blog-reading-page{max-width:960px;margin:0 auto}.about-page{max-width:760px}.blog-body .ir-section-heading h1{font:650 28px/1.4 var(--sans);letter-spacing:-.5px;align-items:center;gap:10px;display:flex}.blog-body .lab-catalog{margin-top:24px}.blog-body .lab-starter-picker{margin-top:0}.blog-body .lab-card-top{margin-bottom:4px}.blog-body .lab-card-bottom{padding:8px 0 16px}.blog-body .lab-card-facts{margin-top:12px}.blog-body .lab-save,.blog-body .lab-save-button{border-radius:4px}.blog-body .course-breadcrumb{margin-bottom:16px}.blog-body .course-hero>p{color:var(--muted);font-size:14px;line-height:1.9}.course-video-preview{margin-top:12px}.course-video-preview>summary{width:fit-content;min-height:44px;color:var(--accent);cursor:pointer;padding:11px 0;font-size:13px}.course-video-preview>.course-featured-video{max-width:560px;margin:8px 0 0}.blog-body .course-hero-facts{margin-top:16px;font-size:12px}.blog-body .course-hero-facts strong,.blog-body .course-completion strong,.blog-body .course-path-strip span,.blog-body .course-lesson-number{font-family:var(--sans);font-style:normal;font-size:inherit;color:var(--muted)}.blog-body .course-hero-actions{margin-top:18px}.blog-body .course-featured-caption{color:var(--muted);font-size:12px}.blog-body .course-featured-video .course-player{min-height:0}.blog-body .course-path-strip{margin-bottom:20px;padding:8px 0}.blog-body .course-curriculum{margin-top:28px}.blog-body .course-section-heading h2{margin-top:0}.blog-body .course-prose h2,.blog-body .course-prose h3,.blog-body .course-reader-hero h1,.blog-body .course-lesson-heading h1,.blog-body .learn-detail-hero h1{font-family:var(--sans)}.blog-body .course-reader-hero h1,.blog-body .course-lesson-heading h1,.blog-body .learn-detail-hero h1,.blog-body .at-detail-title h1,.blog-body .at-detail-header h1,.blog-body .stats-heading h1{font-size:clamp(26px,3vw,32px);font-weight:650}.blog-body .course-video-kicker,.blog-body .course-video-start>span:not(.course-play-circle):not(.course-video-kicker){color:#d0d7de}.blog-body .at-hero-meta{margin-top:14px;font-size:12px}.blog-body .at-hero-meta strong{font:inherit;color:var(--muted)}.blog-body .at-section-heading h2{font-size:20px}.blog-body .at-section-heading{margin-bottom:16px}.blog-body .at-discovery{margin-bottom:24px}.blog-body .at-price{color:var(--muted);background:0 0;padding:0}.blog-body .at-mark{font:600 18px/1 var(--sans)}.blog-body .at-card-head h3 a:hover,.editorial-feature-copy h2 a:hover,.entry-list h3 a:hover{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.blog-body .text-link,.blog-body .course-text-link,.blog-body .at-card-foot a,.blog-body .lab-card-bottom a{color:var(--accent)}@media (max-width:1000px){.blog-body .blog-header{padding:0 28px}.blog-navigation{flex-wrap:wrap;gap:0 28px;padding-top:16px}.blog-navigation-links{gap:22px}.blog-body>.blog-main{padding:28px 28px 48px}.blog-body>.blog-footer{flex-wrap:wrap;width:calc(100% - 56px)}.blog-body .ir-toolbar{flex-wrap:wrap}.blog-body .ir-search{flex-basis:100%}.blog-body .at-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.blog-body .blog-header{padding:0 20px}.blog-navigation{padding:18px 0 0;display:block}.blog-brand{font-size:20px}.blog-navigation-links{flex-wrap:nowrap;gap:14px;margin-top:8px}.blog-navigation .nav-link{white-space:nowrap;flex-shrink:0;min-height:44px;font-size:12px}.blog-body>.blog-main{padding:24px 20px 40px}.blog-body>.blog-footer{gap:12px;width:calc(100% - 40px);padding:20px 0}.blog-footer>div:first-child{flex-wrap:wrap;gap:8px 18px}.footer-links{gap:16px}.page-heading h1,.blog-body .ir-section-heading h1,.blog-body .lab-hero h1,.blog-body .at-hero h1,.blog-body .course-hero h1{font-size:25px}.entry-list h3{font-size:20px}.editorial-article-feature{grid-template-columns:1fr;gap:20px;padding-top:24px}.editorial-feature-copy h2{font-size:21px}.editorial-feature-copy>p{font-size:14px}.editorial-article-image{aspect-ratio:16/9}.edition-nav{gap:19px;margin-bottom:22px}.edition-nav button{font-size:12px}.blog-body .ir-section-heading{flex-wrap:wrap;align-items:flex-start}.blog-body .ir-heading-actions{width:100%}.blog-body .ir-heading-actions .ir-button{flex:1}.blog-body .ir-filter-row{flex-direction:column;align-items:flex-start;gap:10px}.blog-body .ir-filter-tabs{gap:0}.blog-body .ir-filter-tabs button{padding:10px;font-size:11px}.blog-body .ir-search{min-width:0}.blog-body .ir-select{padding:0 8px}.blog-body .ir-table{table-layout:fixed}.blog-body .ir-table th:first-child{width:auto}.blog-body .ir-table th:nth-child(3){width:28%}.blog-body .ir-table td:first-child{padding-left:10px}.blog-body .ir-product{gap:9px}.blog-body .ir-product strong{white-space:normal;overflow-wrap:anywhere;line-height:1.5;display:block}.blog-body .ir-product strong svg{margin-left:3px;display:inline-block}.blog-body .ir-product small{white-space:normal;font-size:12px;line-height:1.7}.blog-body .ir-revenue strong{font-size:12px}.blog-body .ir-revenue strong span{color:var(--muted);font-size:10px}.blog-body .ir-table-footer{flex-wrap:wrap;gap:12px}.blog-body .ir-bottom-note{flex-wrap:wrap;align-items:flex-start}.blog-body .lab-card-grid,.blog-body .at-grid{grid-template-columns:1fr;gap:0}.blog-body .lab-card h3{font-size:19px}.blog-body .lab-detail-header{padding:8px 0 22px}.blog-body .lab-toc{border:0;border-bottom:1px solid var(--line);padding:0 0 20px}.blog-body .lab-guide h2{font-size:22px}.blog-body .course-hero{grid-template-columns:1fr;gap:24px}.blog-body .course-continue{grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:16px;display:grid}.blog-body .course-continue-icon{display:none}.blog-body .course-continue>div:nth-child(2){grid-column:1/-1;min-width:0}.blog-body .course-completion{min-width:0;max-width:100px}.blog-body .course-section-heading,.blog-body .course-chapter-heading{flex-wrap:wrap;gap:12px}.blog-body .course-chapter-output{flex-basis:100%;max-width:none;margin-left:0}.blog-body .course-lesson-row{gap:10px}.blog-body .course-outline{border-right:0;border-bottom:1px solid var(--line)}.blog-body .course-player{min-height:180px}}@media (max-width:360px){.blog-navigation-links{grid-template-columns:repeat(4,1fr);gap:0 12px;display:grid}.blog-navigation .nav-link{justify-content:flex-start;min-height:40px}.edition-nav{flex-wrap:nowrap;gap:14px}.edition-nav button{white-space:nowrap;gap:5px;font-size:11px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.blog-body *,.blog-body :before,.blog-body :after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.brand-period{color:var(--accent)}.mobile-menu-button{display:none}.article-entry.has-image{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:32px;display:grid}.entry-copy{min-width:0}.entry-list h2{font:600 23px/1.55 var(--sans);letter-spacing:-.4px;margin:12px 0}.entry-list h2 a{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.entry-list h2 a:hover{color:var(--accent)}.entry-list h2 svg{color:var(--accent);flex-shrink:0;margin-top:8px}.entry-image{aspect-ratio:16/10;border:1px solid var(--line);background:#f6f8fa;border-radius:3px;display:block;position:relative;overflow:hidden}.entry-image img{-o-object-fit:cover;object-fit:cover;-o-object-position:top;object-position:top}.blog-body .ir-icon-button{min-width:44px;min-height:44px}.blog-body .ir-dialog{font-family:var(--sans);border-radius:4px;max-width:min(520px,100vw - 32px)}.blog-body .ir-dialog.wide{max-width:min(800px,100vw - 32px)}.blog-body .ir-profile-source{color:var(--accent)}.blog-body .at-button{border-color:var(--ink);font-size:14px}.blog-body .at-filters:focus-within{border-color:var(--line);box-shadow:none}@media (max-width:760px){.blog-body .blog-navigation{flex-flow:wrap;align-items:center;gap:0;min-height:68px;padding:12px 0;display:flex}.mobile-menu-button{min-width:44px;min-height:44px;color:var(--muted);background:0 0;border:0;align-items:center;gap:8px;margin-left:auto;padding-left:12px;font-size:13px;display:inline-flex}.blog-body .blog-navigation-links{gap:0 16px;width:100%;padding:8px 0 0;display:none;overflow:visible}.blog-body .blog-navigation-links.is-open{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.blog-body .blog-navigation-links .nav-link{justify-content:flex-start;min-height:44px}.article-entry.has-image{grid-template-columns:minmax(0,1fr) 220px;gap:22px}.blog-body .ir-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.blog-body .ir-search{grid-column:1/-1;width:100%}.blog-body .ir-toolbar .ir-select{width:100%;min-width:0}.blog-body .ir-view-toggle{justify-self:end}.blog-body .ir-select select,.blog-body .ir-search input,.blog-body .at-search input,.blog-body .at-select select{font-size:16px}.blog-body .at-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.blog-body .at-search{grid-column:1/-1;width:100%}.blog-body .at-filters .at-button{grid-column:1/-1;width:100%;min-height:44px}.blog-body .at-select,.blog-body .at-select select{width:100%;min-width:0}}@media (max-width:640px){.article-entry.has-image{grid-template-columns:1fr;gap:20px}}@media (max-width:360px){.blog-body .edition-nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;display:grid}}.blog-body .ir-source-mark.github{color:var(--ink);background:#eef1f4}.ir-repository-filters{border-bottom:1px solid var(--line);color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px 24px;margin:0 0 18px;padding:12px 0;font-size:13px;display:flex}.ir-repository-filters label{align-items:center;gap:10px;min-height:44px;display:inline-flex}.ir-repository-filters select{border:1px solid var(--line);min-height:44px;color:var(--ink);background:#fff;border-radius:3px;padding:0 12px}.ir-repository-filters input{accent-color:var(--accent)}.ir-repository-filters button{min-height:44px;color:var(--accent);align-items:center;gap:6px;display:inline-flex}.ir-repository-cell{gap:6px;display:grid}.ir-repository-cell strong{color:var(--ink);font-size:13px;font-weight:550}.ir-repository-cell small{color:var(--muted);font-size:12px}.ir-repository-card-meta{color:var(--muted);flex-wrap:wrap;gap:6px 12px;padding:10px 0;font-size:12px;display:flex}.ir-repository-panel{border:1px solid var(--line);background:#f6f8fa;border-radius:3px;margin:24px 0;padding:20px}.ir-repository-panel>div{flex-wrap:wrap;gap:8px 16px;font-size:13px;display:flex}.ir-repository-panel a{color:var(--accent);overflow-wrap:anywhere;align-items:center;gap:6px;display:inline-flex}.ir-repository-panel dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:20px 0;display:grid}.ir-repository-panel dt{color:var(--muted);margin-bottom:6px;font-size:12px}.ir-repository-panel dd{color:var(--ink);font-size:15px}.ir-repository-panel>p{color:var(--muted);margin-top:12px;font-size:12px;line-height:1.9}.ir-detail-loading{min-height:140px;color:var(--muted);flex-wrap:wrap;align-items:center;gap:16px;padding:36px 24px;display:flex}.ir-index-status{color:var(--muted);padding:12px 0;font-size:13px}.blog-body .ir-workspace-status{color:var(--muted)}.blog-body .ir-workspace-status h3{color:var(--ink);font-size:16px}.blog-body .ir-workspace-status p{color:var(--muted);font-size:15px;line-height:1.95}.blog-body .ir-workspace-status>.ir-spin{margin:0 auto 12px}.ir-index-issue{color:#86542d;flex-wrap:wrap;align-items:center;gap:16px;padding:12px 0;font-size:13px;display:flex}@media (max-width:760px){.ir-repository-filters{gap:4px 16px}.ir-repository-filters select{font-size:16px}.ir-repository-cell small{font-size:11px}.ir-repository-panel{padding:18px}}.ir-advanced-filters{border:1px solid var(--line);border-radius:3px;margin:0 0 18px}.ir-advanced-filters summary{min-height:44px;color:var(--muted);cursor:pointer;align-items:center;gap:10px;padding:12px 16px;font-size:13px;list-style:none;display:flex}.ir-advanced-filters summary::-webkit-details-marker{display:none}.ir-advanced-filters summary>svg:last-child{margin-left:auto}.ir-advanced-filters summary>span{color:var(--accent);font-size:12px}.ir-advanced-filters[open] summary{border-bottom:1px solid var(--line)}.ir-advanced-content{padding:16px}.ir-advanced-selects{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.ir-advanced-selects .ir-select,.ir-advanced-selects select{width:100%;min-width:0}.ir-advanced-content .ir-repository-filters{border:0;margin:8px 0 0;padding-bottom:0}@media (max-width:760px){.blog-body .ir-toolbar{gap:10px;display:flex}.blog-body .ir-toolbar .ir-search{flex:1;width:auto;min-width:0}.blog-body .ir-toolbar .ir-view-toggle{flex-shrink:0}.ir-advanced-selects{grid-template-columns:1fr}.ir-advanced-filters summary{font-size:13px}.ir-advanced-content{padding:12px}.ir-advanced-content .ir-reviewed{width:100%}}.ir-active-filters{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 20px;font-size:12px;display:flex}.ir-active-filters>span{margin-right:4px}.ir-active-filters button{border:1px solid var(--line);background:var(--paper);max-width:100%;min-height:36px;color:var(--ink);border-radius:3px;align-items:center;gap:8px;padding:6px 10px;display:inline-flex}.ir-active-filters button>span{overflow-wrap:anywhere;text-align:left;min-width:0}.ir-active-filters button svg{color:var(--muted);flex-shrink:0}.ir-active-filters button:hover{border-color:var(--accent);color:var(--accent)}.ir-active-filters .ir-clear-filters{color:var(--accent);border-color:#0000}.ir-mobile-project-meta{display:none}.blog-body .ir-dialog-heading{min-height:64px;color:var(--muted);border-color:var(--line);background:var(--paper);gap:10px;padding:8px 16px}.ir-dialog-heading>span{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.ir-dialog-heading .ir-icon-button{flex-shrink:0;place-items:center;width:44px;height:44px;display:grid}.ir-copy-project{min-height:44px;color:var(--accent);white-space:nowrap;justify-content:center;align-items:center;gap:7px;padding:0 8px;font-size:12px;display:inline-flex}.ir-project-share-status{color:var(--muted);margin:0;padding:10px 24px 0;font-size:12px}.ir-dialog .ir-detail{padding-top:24px}.ir-dialog .ir-detail-actions{background:var(--paper);flex-wrap:wrap;margin:20px 0 0;padding:10px 0;position:static}.ir-dialog .ir-detail-actions .ir-button{min-height:44px}.ir-dialog .ir-detail-actions>*{white-space:nowrap}.ir-detail-reading-nav{z-index:1;scrollbar-width:thin;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--paper);gap:20px;padding:4px 0;display:flex;position:sticky;top:64px;overflow-x:auto}.ir-detail-reading-nav button{min-height:44px;color:var(--accent);flex-shrink:0;font-size:13px}.ir-detail [data-detail-section]{scroll-margin-top:136px}.ir-detail [data-detail-section]:focus{outline:none}.ir-dialog .ir-detail-description,.ir-dialog .ir-profile-section>p,.ir-dialog .ir-team-description>p{color:var(--ink);font-size:16px;line-height:1.95}.ir-dialog .ir-feature-list{color:var(--ink);font-size:15px;line-height:1.95}.ir-dialog .ir-detail h3{color:var(--ink);margin-top:30px;font-size:16px}.ir-dialog .ir-evidence-list strong{color:var(--ink);overflow-wrap:anywhere;font-size:13px;line-height:1.7}.ir-dialog .ir-evidence-list small{color:var(--muted);font-size:12px}@media (max-width:760px){.ir-active-filters button{min-height:44px}.ir-active-filters>span{display:none}.ir-mobile-project-meta{color:var(--muted);flex-wrap:wrap;gap:4px 10px;margin-top:8px;font-size:11px;line-height:1.6;display:flex}.ir-mobile-project-meta .ir-status{padding:0;font-size:11px}.ir-mobile-project-meta .ir-status.candidate{color:#86542d}.ir-dialog .ir-detail{padding:20px}.ir-dialog .ir-detail-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.ir-dialog .ir-detail-actions .ir-button,.blog-body .ir-dialog .ir-detail-actions .ir-compare-button{justify-content:center;min-width:0;min-height:44px;padding:8px 6px;font-size:12px}.ir-dialog .ir-detail-tags{gap:4px 8px;margin-top:16px}.ir-dialog .ir-detail-tags .ir-pill{padding:2px 0;font-size:12px}}.at-active-filters{flex-wrap:wrap;gap:8px;margin:14px 0 0;display:flex}.at-active-filters a{border:1px solid var(--line);max-width:100%;min-height:36px;color:var(--ink);border-radius:3px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:inline-flex}.at-active-filters a>span{overflow-wrap:anywhere;min-width:0}.at-active-filters svg{color:var(--muted);flex-shrink:0}.at-active-filters a:hover{color:var(--accent);border-color:var(--accent)}.at-record-scope{color:var(--muted);flex-shrink:0;margin-left:auto;font-size:12px}.blog-body .at-card .at-price{font-size:12px;line-height:1.7}.blog-body .at-detail-title h1{overflow-wrap:anywhere;font-size:30px;font-weight:650;line-height:1.4}.at-detail-actions{flex-wrap:wrap;align-items:center;gap:8px 24px;margin:22px 0;font-size:13px;display:flex}.at-detail-actions>a{align-items:center;gap:8px;min-height:44px;display:inline-flex}.at-detail-actions>a:not(.at-button){color:var(--accent)}.at-detail-actions>span{color:var(--muted)}.at-record-meta{color:var(--muted);flex-wrap:wrap;gap:6px 20px;margin:16px 0;font-size:12px;line-height:1.8;display:flex}.blog-body .at-detail-hero>p{overflow-wrap:anywhere;max-width:800px;font-size:16px;line-height:1.95}.blog-body .at-detail-tags{align-items:flex-start;gap:8px}.at-extra-categories{width:100%;color:var(--muted);font-size:12px}.at-extra-categories summary{cursor:pointer;min-height:44px;color:var(--accent);align-items:center;display:flex}.at-extra-categories>div{flex-wrap:wrap;gap:6px 14px;padding:0 0 10px;display:flex}.at-extra-categories a{min-height:36px;color:var(--accent);align-items:center;display:inline-flex}.at-reader-nav{z-index:4;border-bottom:1px solid var(--line);background:var(--paper);align-items:center;gap:20px;padding:8px 0;font-size:13px;display:flex;position:sticky;top:0}.at-reader-nav>span{color:var(--muted);flex-shrink:0}.at-reader-nav>div{scrollbar-width:thin;gap:6px 24px;min-width:0;display:flex;overflow-x:auto}.at-reader-nav a{white-space:nowrap;min-height:44px;color:var(--accent);align-items:center;display:inline-flex}.at-reading-layout{max-width:800px;margin:0 auto;padding-top:28px}.blog-body .at-reading-layout .at-detail-section{scroll-margin-top:84px}.blog-body .at-reading-layout .at-detail-section>p,.blog-body .at-reading-layout .at-feature-list li,.blog-body .at-reading-layout .at-use-cases p{overflow-wrap:anywhere;font-size:16px;line-height:1.95}.blog-body .at-reading-layout .at-detail-section h2{font-size:23px;line-height:1.6}.blog-body .at-reading-layout .at-plan-grid>div{background:var(--paper)}.at-reading-end{border-top:1px solid var(--line);max-width:800px;color:var(--accent);flex-wrap:wrap;justify-content:space-between;gap:12px 24px;margin:20px auto 0;padding:20px 0;font-size:13px;display:flex}.at-reading-end a,.at-crumbs a{align-items:center;gap:7px;min-height:36px;display:inline-flex}#at-results-title{scroll-margin-top:24px}@media (max-width:760px){.at-active-filters a{min-height:44px}.blog-body .at-detail-title h1{font-size:26px}.at-detail-actions{gap:8px 16px;margin:18px 0}.at-detail-actions .at-button{min-height:44px;font-size:13px}.at-reader-nav{gap:0;padding:4px 0}.at-reader-nav>span{display:none}.at-reader-nav>div{gap:20px;width:100%}.at-reader-nav a{font-size:12px}.at-reading-layout{padding-top:20px}.blog-body .at-reading-layout .at-detail-section{scroll-margin-top:72px}.blog-body .at-reading-layout .at-detail-section h2{font-size:21px}}.blog-body .ir-heading-actions .ir-topic-link{min-height:44px;color:var(--accent);white-space:nowrap;justify-content:center;align-items:center;display:inline-flex}.ir-row-actions{justify-content:flex-end;align-items:center;gap:4px;display:flex}.blog-body .ir-compare-button{min-width:40px;min-height:40px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:3px;justify-content:center;align-items:center;gap:5px;padding:6px;font-size:12px;display:inline-flex}.blog-body .ir-compare-button.is-selected{color:var(--accent);border-color:var(--line);background:var(--accent-soft)}.blog-body .ir-table th:last-child{width:128px}.ir-comparison-tray{z-index:3;border-top:1px solid var(--ink);border-bottom:1px solid var(--line);background:var(--paper);justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;padding:14px 0;font-size:13px;display:flex;position:sticky;top:0}.ir-comparison-tray>div:first-child{min-width:0}.ir-comparison-tray strong{margin-bottom:6px;font-weight:600;display:block}.ir-comparison-tray strong>span{color:var(--muted);margin-left:8px;font-size:12px;font-weight:400}.ir-comparison-tray>div>div{flex-wrap:wrap;gap:4px 12px;display:flex}.ir-comparison-tray button,.ir-comparison-tray a{min-height:40px;color:var(--accent);align-items:center;gap:6px;display:inline-flex}.ir-comparison-actions{flex-wrap:wrap;flex-shrink:0;gap:8px 20px;display:flex}.blog-body .ir-related-projects{border-top:1px solid var(--line);margin-top:32px;padding-top:24px}.ir-related-projects>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.ir-related-projects button{text-align:left;min-width:0;color:var(--ink);flex-direction:column;align-items:flex-start;gap:8px;padding:12px 0;display:flex}.ir-related-projects button strong{color:var(--accent);font-size:14px}.ir-related-projects button span{overflow-wrap:anywhere;font-size:13px;line-height:1.8}.ir-related-projects button small{color:var(--muted);font-size:12px}.topics-page,.topic-page{max-width:960px;margin:0 auto}.collection-heading{border-bottom:1px solid var(--ink);margin-bottom:30px;padding-bottom:24px}.collection-heading h1{margin:0 0 12px;font-size:28px;font-weight:650;line-height:1.5}.collection-heading p{max-width:760px;color:var(--muted);font-size:15px;line-height:1.95}.reading-back{min-height:44px;color:var(--accent);align-items:center;gap:8px;margin-bottom:18px;font-size:13px;display:inline-flex}.topic-list>article{border-bottom:1px solid var(--line);align-items:center;gap:24px;padding:28px 0;display:flex}.topic-number{color:var(--muted);font-variant-numeric:tabular-nums;align-self:flex-start;padding-top:5px;font-size:12px}.topic-list h2{margin-bottom:10px;font-size:22px;font-weight:600;line-height:1.5}.topic-list h2 a,.topic-projects h3 a{align-items:center;gap:8px;display:inline-flex}.topic-list p,.topic-projects p{color:var(--muted);font-size:15px;line-height:1.9}.topic-read{min-height:44px;color:var(--accent);flex-shrink:0;align-items:center;gap:6px;margin-left:auto;font-size:13px;display:inline-flex}.topic-editorial-note{color:var(--muted);margin:24px 0;font-size:13px;line-height:1.9}.topic-page h2{font-size:22px;font-weight:600;line-height:1.6}.topic-questions{max-width:760px;padding-bottom:30px}.topic-questions ol{margin-top:18px;padding-left:24px;font-size:16px;line-height:1.95}.topic-questions li+li{margin-top:10px}.topic-section-heading{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:20px 0;display:flex}.topic-section-heading a{min-height:44px;color:var(--accent);flex-shrink:0;align-items:center;gap:8px;font-size:13px;display:inline-flex}.topic-projects article{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;padding:22px 0;display:flex}.topic-projects h3{margin-bottom:6px;font-size:19px;font-weight:600;line-height:1.6}.topic-projects article>a{color:var(--accent);flex-shrink:0;align-items:center;min-height:44px;font-size:13px;display:flex}.topic-project-meta{color:var(--muted);flex-wrap:wrap;gap:6px 16px;margin-top:12px;font-size:12px;display:flex}.topic-next{border-top:1px solid var(--ink);margin-top:30px;padding-top:24px}.topic-next>a{border-bottom:1px solid var(--line);flex-direction:column;gap:8px;padding:22px 0;display:flex}.topic-next strong{color:var(--accent);align-items:center;gap:8px;font-size:16px;font-weight:500;display:flex}.topic-next span{color:var(--muted);font-size:14px;line-height:1.9}.reading-end{border-top:1px solid var(--line);color:var(--accent);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;margin-top:30px;padding:20px 0;font-size:13px;display:flex}.reading-end a{align-items:center;gap:8px;min-height:44px;display:inline-flex}.comparison-page{min-width:0}.comparison-issues,.comparison-help{color:var(--muted);margin:20px 0;font-size:14px;line-height:1.95}.comparison-issues{border-left:2px solid var(--line);background:var(--surface);padding:14px 18px}.comparison-issues a,.comparison-help a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.comparison-scroll-note{color:var(--muted);margin-bottom:14px;font-size:12px;display:none}.comparison-scroll{scrollbar-width:thin;max-width:100%;overflow-x:auto}.comparison-project-nav{display:none}.comparison-table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;font-size:14px;line-height:1.95}.comparison-table th,.comparison-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);border-right:1px solid var(--line);overflow-wrap:anywhere;width:250px;min-width:250px;padding:22px}.comparison-table tr>:first-child{z-index:1;background:var(--surface);width:126px;min-width:126px;color:var(--muted);padding-left:12px;font-size:13px;font-weight:500;position:sticky;left:0}.comparison-table thead th[id]{scroll-margin-top:64px}.comparison-table thead th{background:var(--paper);border-top:1px solid var(--line);font-weight:400}.comparison-table th:last-child,.comparison-table td:last-child{border-right:0}.comparison-table h2{margin-bottom:12px;padding-right:24px;font-size:21px;font-weight:600;line-height:1.5}.comparison-table thead p{color:var(--muted);font-size:14px}.comparison-table th>div{position:relative}.compare-remove{width:32px;min-height:32px;color:var(--muted);place-items:center;display:grid;position:absolute;top:-6px;right:-6px}.comparison-table td a{color:var(--accent);margin-top:8px;display:block}.comparison-table .compare-website{color:var(--accent);align-items:center;gap:4px;min-height:44px;margin-top:10px;display:inline-flex}.compare-profile{color:var(--accent);font-size:13px;display:block}.comparison-table td p{margin-top:8px}.comparison-table td small{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.9;display:block}.comparison-table ul{margin:0;padding-left:18px}.comparison-table li+li{margin-top:10px}.collection-empty{padding:40px 0}.collection-empty h2{font-size:22px;font-weight:600}.collection-empty p{color:var(--muted);margin:16px 0;line-height:1.9}.collection-empty a{min-height:44px;color:var(--accent);align-items:center;gap:8px;display:inline-flex}@media (max-width:760px){.blog-body .ir-heading-actions .ir-topic-link{font-size:12px}.blog-body .ir-table th:last-child{width:40px}.ir-table .ir-row-actions{flex-direction:column}.ir-table .ir-compare-button span{display:none}.ir-comparison-tray{flex-direction:column;align-items:stretch;gap:4px}.ir-comparison-tray>div>div{gap:2px 16px}.ir-comparison-actions{justify-content:space-between}.ir-related-projects>div{grid-template-columns:1fr;gap:0}.ir-related-projects button+button{border-top:1px solid var(--line)}.collection-heading h1{font-size:26px}.topic-list>article{flex-wrap:wrap;gap:10px 16px}.topic-list article>div{flex:1;min-width:0}.topic-list h2{font-size:20px}.topic-list .topic-read{margin-left:32px}.topic-section-heading,.topic-projects article{flex-direction:column;align-items:flex-start;gap:4px}.topic-page h2{font-size:21px}.comparison-table{width:max-content}.comparison-table th,.comparison-table td{width:max(170px,100vw - 128px);min-width:max(170px,100vw - 128px);padding:16px}.comparison-table tr>:first-child{width:88px;min-width:88px;padding:16px 10px;font-size:12px}.comparison-scroll-note{display:block}.comparison-project-nav{z-index:3;scrollbar-width:thin;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--paper);gap:18px;display:flex;position:sticky;top:0;overflow-x:auto}.comparison-project-nav a{min-height:48px;color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;flex-shrink:0;align-items:center;font-size:13px;display:flex}.comparison-project-nav a[aria-current=true]{color:var(--accent);border-bottom-color:var(--accent)}.comparison-table h2{font-size:19px}.compare-remove{width:40px;min-height:40px;top:-10px;right:-10px}}.lab-active-filters{flex-wrap:wrap;align-items:center;gap:6px 10px;padding:0 0 16px;font-size:12px;display:flex}.lab-active-filters>span{color:var(--muted)}.lab-active-filters button{border:1px solid var(--line);background:var(--paper);max-width:100%;min-height:36px;color:var(--ink);overflow-wrap:anywhere;text-align:left;border-radius:3px;align-items:center;gap:8px;padding:5px 10px;display:inline-flex}.lab-active-filters svg{flex-shrink:0}.lab-active-filters .lab-clear-filters{color:var(--accent);border-color:#0000}.blog-body .lab-filter-meta,.blog-body .lab-filter-meta select,.blog-body .lab-saved-filter{font-size:12px}.blog-body .lab-detail-layout{grid-template-columns:minmax(0,760px) 224px;justify-content:center;gap:48px}.blog-body .lab-guide p,.blog-body .lab-check-list li,.blog-body .lab-experiment dd,.blog-body .lab-pitfalls li,.blog-body .lab-prompt pre{overflow-wrap:anywhere;font-size:16px;line-height:1.95}.blog-body .lab-step-list h3{font-size:18px}.blog-body .lab-step-output,.blog-body .lab-task-check,.blog-body .lab-fit-grid>div>span,.blog-body .lab-tools>span,.blog-body .lab-acquisition span,.blog-body .lab-experiment dt{font-size:13px;line-height:1.85}.blog-body .lab-toc h2{margin-top:6px}.blog-body .lab-toc nav a{min-height:44px;font-size:13px}.blog-body .lab-toc>a{border-top:1px solid var(--line);min-height:44px;margin-top:20px;padding-top:16px;font-size:13px}.lab-reading-nav{display:none}.lab-reading-return{border-top:1px solid var(--line);max-width:1032px;color:var(--accent);flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin:20px auto 0;padding:20px 0;font-size:13px;display:flex}.lab-reading-return a{align-items:center;gap:8px;min-height:44px;display:inline-flex}@media (max-width:1100px){.blog-body .lab-detail-layout{display:block}.blog-body .lab-detail-aside{display:none}.lab-reading-nav{z-index:4;border-bottom:1px solid var(--line);background:var(--paper);align-items:center;gap:18px;padding:4px 0;font-size:13px;display:flex;position:sticky;top:0}.lab-reading-nav>span{color:var(--muted);flex-shrink:0}.lab-reading-nav>div{scrollbar-width:thin;gap:24px;min-width:0;display:flex;overflow-x:auto}.lab-reading-nav a{white-space:nowrap;min-height:44px;color:var(--accent);align-items:center;display:inline-flex}.blog-body .lab-guide{max-width:760px;margin:0 auto}.blog-body .lab-guide>section{scroll-margin-top:76px}}@media (max-width:760px){.lab-active-filters button{min-height:44px}.lab-reading-nav{gap:14px}.lab-reading-nav>div{gap:20px}.lab-reading-nav>span{font-size:12px}.blog-body .lab-search input{font-size:16px}.blog-body .lab-fit-grid,.blog-body .lab-acquisition{grid-template-columns:1fr;gap:14px}.blog-body .lab-fit-grid>div{padding:0 0 12px}.blog-body .lab-guide p,.blog-body .lab-check-list li,.blog-body .lab-experiment dd{line-height:1.95}}.blog-navigation .nav-link{position:relative}.nav-pending{background:var(--accent);opacity:0;height:2px;position:absolute;bottom:0;left:0;right:0}.nav-pending.is-pending{opacity:1;animation:1s ease-in-out infinite alternate nav-wait}@keyframes nav-wait{to{opacity:.3}}.article-reading-tools{margin:0 0 28px}.article-contents{border-top:1px solid var(--line);border-bottom:1px solid var(--line);scroll-margin-top:24px}.article-contents summary{min-height:48px;color:var(--ink);cursor:pointer;padding:12px 0;font-size:14px}.article-contents summary span{color:var(--muted);margin-left:10px;font-size:12px}.article-contents nav{padding:0 0 12px}.article-contents ol{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;margin:0;padding:0;list-style:none;display:grid}.article-contents li{min-width:0}.article-contents li.is-subsection{padding-left:14px}.article-contents a{min-height:44px;color:var(--accent);overflow-wrap:anywhere;align-items:center;padding:7px 0;font-size:14px;display:flex}.article-contents a[aria-current]{text-underline-offset:4px;font-weight:650;text-decoration:underline}.article-storage-note{color:var(--muted);flex-wrap:wrap;align-items:center;gap:0 16px;margin-top:8px;font-size:12px;display:flex}.article-resume,.article-continue{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding:16px 0;font-size:14px;display:flex}.article-resume a{color:var(--accent);overflow-wrap:anywhere}.article-continue{padding:18px 0}.article-continue>div{gap:5px;min-width:0;display:grid}.article-continue span,.article-continue small{color:var(--muted);font-size:12px}.article-continue a{color:var(--accent);font-size:16px;line-height:1.6}.article-resume button,.article-continue button,.article-storage-note button{min-height:44px;color:var(--muted);text-underline-offset:4px;flex-shrink:0;text-decoration:underline}.article-body h2[id],.article-body h3[id]{scroll-margin-top:28px}.article-body img{-o-object-fit:contain;object-fit:contain;max-height:680px;margin-left:auto;margin-right:auto;display:block}.article-related{border-top:1px solid var(--line);padding-top:24px}.article-related h2{margin-bottom:12px;font-size:20px;font-weight:600}.article-related article{border-bottom:1px solid var(--line);padding:16px 0 20px}.article-related h3 a{justify-content:space-between;align-items:center;gap:16px;min-height:44px;font-size:18px;font-weight:600;line-height:1.6;display:flex}.article-related svg{color:var(--accent);flex-shrink:0}.article-related p{color:var(--muted);margin:8px 0;font-size:14px;line-height:1.8}.article-related span{color:var(--muted);font-size:12px}.recovery-links{flex-wrap:wrap;gap:8px 24px;margin-top:24px;display:flex}.recovery-links a{min-height:44px;color:var(--accent);align-items:center;font-size:14px;display:inline-flex}@media (max-width:760px){.blog-body .blog-navigation-links.is-open{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}.blog-body .blog-navigation-links .nav-link{white-space:normal;overflow-wrap:anywhere;padding:8px 0;line-height:1.6}.article-contents ol{grid-template-columns:minmax(0,1fr)}.article-resume,.article-continue{align-items:flex-start;gap:10px}.article-resume button,.article-continue button{font-size:12px}.article-body img{max-height:560px}}@media (prefers-reduced-motion:reduce){.nav-pending.is-pending{animation:none}}.native-mobile-menu{display:none}@media (max-width:760px){.blog-body .blog-navigation{position:relative}.blog-body .desktop-navigation-links{display:none}.native-mobile-menu{width:100%;display:block}.native-mobile-menu>.mobile-menu-button{cursor:pointer;margin:0;list-style:none;position:absolute;top:12px;right:0}.native-mobile-menu>summary::-webkit-details-marker{display:none}.native-mobile-menu .menu-open{display:none}.native-mobile-menu[open] .menu-open{display:inline}.native-mobile-menu[open] .menu-closed{display:none}.blog-body .native-mobile-menu[open] .blog-navigation-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;display:grid}}.blog-body :is(.at-empty,.lab-empty,.ir-empty){color:#57606a;background:#fff;border:1px solid #d8dee4;border-radius:4px;padding:32px 22px}.blog-body :is(.at-empty,.lab-empty,.ir-empty) h3{color:#24292f;font-size:17px}.blog-body :is(.at-empty,.lab-empty,.ir-empty) p{color:#57606a;font-size:14px;line-height:1.7}.blog-body .search-recovery{flex-wrap:wrap;justify-content:center;gap:10px;max-width:760px;margin:20px auto;display:flex}.blog-body .search-recovery :is(a,button){color:#0969da;max-width:100%;min-height:44px;font:inherit;overflow-wrap:anywhere;background:#fff;border:1px solid #d8dee4;border-radius:4px;justify-content:center;align-items:center;gap:8px;margin:0;padding:10px 14px;font-size:14px;line-height:1.5;text-decoration:none;display:inline-flex}.blog-body .search-recovery span{color:#57606a;white-space:nowrap;font-size:12px}.blog-body .search-recovery svg{flex-shrink:0}.blog-body .search-recovery :is(a,button):hover{background:#f6f7f8;border-color:#0969da}.blog-body .search-recovery :is(a,button):focus-visible{outline-offset:3px;outline:2px solid #0969da}.blog-body .lab-empty>button{color:#0969da;background:#f6f7f8;border:1px solid #d8dee4;border-radius:4px;min-height:44px;margin-top:4px;font-size:14px}@media (max-width:600px){.blog-body .search-recovery{flex-direction:column}.blog-body .search-recovery :is(a,button){width:100%}}.blog-body .content-provenance{color:#57606a;overflow-wrap:anywhere;border-top:1px solid #d8dee4;flex-wrap:wrap;gap:6px 14px;margin:18px 0 0;padding-top:12px;font-size:13px;line-height:1.8;display:flex}.blog-body .content-provenance a{color:#0969da}.blog-body .editorial-standards{border-top:1px solid #d8dee4;margin-top:30px;padding-top:8px;scroll-margin-top:28px}.blog-body .editorial-standards h3{margin:22px 0 8px;font-size:16px}
