.brand-logo{display:block;width:38px;height:38px;object-fit:contain;flex-shrink:0}
.header-controls{display:flex;align-items:center;gap:9px;margin-left:auto}
.header-controls .header-link{margin-left:0!important}
.preference-button{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 8px;border:1px solid #bdc9bd;border-radius:6px;background:transparent;color:var(--green);font-size:11px;font-weight:600}
.preference-button:hover{background:var(--mint)}
.preference-button svg{width:16px;height:16px}
.theme-sun{display:none}.theme-moon{display:block}
/* GitHub Primer default dark palette. */
html[data-theme="dark"]{color-scheme:dark;--paper:#0d1117;--white:#161b22;--ink:#e6edf3;--muted:#8b949e;--green:#58a6ff;--mint:#21262d;--line:#30363d;--gold:#58a6ff}
html[data-theme="light"]{color-scheme:light}
html[data-theme="dark"] ::selection{background:#1f6feb;color:#fff}
html[data-theme="dark"] .site-header{background:rgba(13,17,23,.95)}
html[data-theme="dark"] .brand-label{border-color:var(--line)}
html[data-theme="dark"] .brand-name>span{color:var(--muted)!important}
html[data-theme="dark"] .header-link,html[data-theme="dark"] .preference-button,html[data-theme="dark"] .menu-button{background:#21262d;border-color:var(--line);color:var(--ink)}
html[data-theme="dark"] .header-link:hover,html[data-theme="dark"] .preference-button:hover,html[data-theme="dark"] .menu-button:hover{background:#30363d;border-color:#8b949e}
html[data-theme="dark"] .reading-progress{background:#58a6ff}
html[data-theme="dark"] .tiny-dot{background:#3fb950}
html[data-theme="dark"] .button{background:#238636;border-color:#ffffff1a;color:#fff}
html[data-theme="dark"] .button:hover{background:#2ea043}
html[data-theme="dark"] .button.secondary{background:#21262d;border-color:var(--line);color:var(--ink)}
html[data-theme="dark"] .button.secondary:hover{background:#30363d;border-color:#8b949e}
html[data-theme="dark"] .pill.green{background:#23863626;border-color:#2ea04366;color:#3fb950}
html[data-theme="dark"] .portal-grid,html[data-theme="dark"] .project-card,html[data-theme="dark"] .project-list,html[data-theme="dark"] .blog-panel,html[data-theme="dark"] .brand-tag,html[data-theme="dark"] .community-link{background:var(--white);border-color:var(--line)}
html[data-theme="dark"] .portal:hover,html[data-theme="dark"] .community-link:hover,html[data-theme="dark"] .brand-tag:hover{background:var(--mint);border-color:#8b949e}
html[data-theme="dark"] .projects{background:#010409}
html[data-theme="dark"] .feature-number,html[data-theme="dark"] .blog-topic>span,html[data-theme="dark"] .skill-item span,html[data-theme="dark"] .pipeline-arrow{color:var(--muted)}
html[data-theme="dark"] .skill-item{border-color:var(--line)}
html[data-theme="dark"] .skill-item:hover{border-color:#58a6ff}
html[data-theme="dark"] .filter-button:hover{border-color:#8b949e}
html[data-theme="dark"] .project-visual,html[data-theme="dark"] .project-visual.dark{background:#0d1117;border-color:var(--line)}
html[data-theme="dark"] .visual-caption,html[data-theme="dark"] .visual-note,html[data-theme="dark"] .project-functions{color:var(--muted)}
html[data-theme="dark"] .daq-devices span{background:var(--white);border-color:var(--line);color:var(--ink)}
html[data-theme="dark"] .daq-core{background:#21262d;border-color:#58a6ff;color:var(--ink);box-shadow:0 8px 25px #01040980}
html[data-theme="dark"] .daq-core span{color:var(--muted)}
html[data-theme="dark"] .vision-frame{border-color:var(--line);background:repeating-linear-gradient(90deg,transparent 0 43px,#21262d 44px),repeating-linear-gradient(0deg,transparent 0 35px,#21262d 36px)}
html[data-theme="dark"] .part{background:#21262d;border-color:#6e7681}
html[data-theme="dark"] .part:nth-child(2)::after{background:#21262d}
html[data-theme="dark"] .defect-box{border-color:#d29922}
html[data-theme="dark"] .defect-box span{background:#0d1117;color:#d29922}
html[data-theme="dark"] .project-functions span+span::before{color:var(--muted)}
html[data-theme="dark"] .filter-button[aria-pressed="true"]{background:#1f6feb;color:#fff}
html[data-theme="dark"] .start-section{background:var(--white);color:var(--ink)}
html[data-theme="dark"] .start-copy .eyebrow,html[data-theme="dark"] .start-copy>p,html[data-theme="dark"] .start-version{color:var(--muted)}
html[data-theme="dark"] .start-copy .section-link{color:#58a6ff}
html[data-theme="dark"] .start-version a{color:#58a6ff}
html[data-theme="dark"] .terminal{background:#0d1117;border-color:var(--line)}
html[data-theme="dark"] .terminal-heading{border-color:var(--line);color:var(--muted)}
html[data-theme="dark"] .terminal-dots i{background:#6e7681}
html[data-theme="dark"] .command-label,html[data-theme="dark"] .command-line .prompt,html[data-theme="dark"] .copy-status{color:var(--muted)}
html[data-theme="dark"] .command-line code{color:var(--ink)}
html[data-theme="dark"] .copy-button{background:#21262d;border-color:var(--line);color:var(--ink)}
html[data-theme="dark"] .copy-button:hover{background:#30363d;border-color:#8b949e}
html[data-theme="dark"] .site-footer{background:#161b22;border-color:var(--line)}
html[data-theme="dark"] .author-avatar{background:#21262d;border-color:var(--line)}
html[data-theme="dark"] .faq-list summary::after{color:var(--muted)}
html[data-theme="dark"] .hero-art::before{background:radial-gradient(circle,#161b22 0,transparent 70%)}
html[data-theme="dark"] .hero-art svg circle[fill="#ced9c7"]{fill:#30363d}
html[data-theme="dark"] .hero-art svg circle[fill="none"],html[data-theme="dark"] .hero-art svg path[stroke="#c5d3bd"],html[data-theme="dark"] .hero-art svg rect[stroke="#588067"]{stroke:#30363d}
html[data-theme="dark"] .hero-art svg g[fill="#fbfcf8"]{fill:#161b22;stroke:#30363d}
html[data-theme="dark"] .hero-art svg g[stroke="#94ad8e"]{stroke:#58a6ff}
html[data-theme="dark"] .hero-art svg g[fill="#8da783"]{fill:#58a6ff}
html[data-theme="dark"] .hero-art svg rect[fill="#1b5142"]{fill:#21262d;stroke:#58a6ff}
html[data-theme="dark"] .hero-art svg text[fill="#f4f6ea"]{fill:#e6edf3}
html[data-theme="dark"] .hero-art svg text[fill="#c1d5bc"]{fill:#8b949e}
html[data-theme="dark"] .hero-art svg circle[fill="#a9874e"]{fill:#58a6ff}
html[data-theme="dark"] .diagram-label{fill:#e6edf3}
html[data-theme="dark"] .diagram-en{fill:#8b949e}
html[data-theme="dark"] .theme-moon{display:none}
html[data-theme="dark"] .theme-sun{display:block}
html[data-theme="dark"] .skip-link{background:#1f6feb;color:#fff}
html[data-theme="dark"] .section-link:hover,html[data-theme="dark"] .text-link:hover{color:#79c0ff}
html[lang="en"] .hero h1{letter-spacing:-2px;line-height:1.2}
html[lang="en"] .hero-description{font-size:15px;line-height:1.85}
html[lang="en"] h2{letter-spacing:-1px}
html[lang="en"] .portal p{min-height:64px}
html[lang="en"] .project-subtitle{font-size:14px}
html[lang="en"] .project-row{grid-template-columns:155px 1fr 155px 25px}
html[lang="en"] .project-row .row-tag{font-size:9px}
html[lang="en"] .pipeline-step strong{font-size:13px}
html[lang="en"] .pipeline-step span{font-size:10px}
@media(max-width:1100px){.header-inner{gap:18px}.main-nav{gap:20px}.header-controls{gap:7px}html[lang="en"] .project-row{grid-template-columns:135px 1fr 120px 20px;gap:17px}}
@media(max-width:900px){.header-inner{position:relative}.main-nav{order:4;position:absolute;top:72px;left:-28px;right:-28px;gap:0;background:var(--paper);border-bottom:1px solid var(--line);justify-content:space-around;padding:9px 15px;font-size:12px}.js .main-nav{display:none;flex-direction:column;align-items:stretch;padding:10px 28px;box-shadow:0 15px 25px #10241418}.js .main-nav.open{display:flex}.js .main-nav a{padding:12px 4px;border-bottom:1px solid var(--line)}.js .main-nav a:last-child{border:0}.js .menu-button{display:flex;align-items:center;justify-content:center;border:1px solid #bdc9bd;border-radius:6px;background:transparent;height:36px;width:36px;color:var(--green)}.menu-button svg{width:17px;height:17px}.brand-label{display:none}}
@media(max-width:820px){html[lang="en"] .project-row{grid-template-columns:120px 1fr 20px}.header-inner{gap:12px}html[lang="en"] .overview-copy h2{font-size:31px}html[lang="en"] .hero h1{font-size:39px}}
@media(max-width:640px){.brand-logo{width:33px;height:33px}.header-inner{gap:9px;flex-wrap:nowrap}.header-controls{gap:6px}.main-nav{top:66px;left:-20px;right:-20px}.js .main-nav{padding-inline:20px}.brand{gap:6px}.preference-button{height:34px;min-width:34px}.header-link{padding:6px 9px}.js .menu-button{height:34px;width:34px}.brand-name{font-size:23px}html[lang="en"] .hero h1{font-size:clamp(37px,9.2vw,54px)}html[lang="en"] .hero-description{font-size:14px}html[lang="en"] .hero-buttons .button{font-size:12px;padding:11px 16px;gap:11px}html[lang="en"] .portal p{min-height:64px}html[lang="en"] .portal-heading{align-items:flex-start;gap:15px}html[lang="en"] .portal-heading h2{font-size:15px;max-width:180px}html[lang="en"] .portal-heading .eyebrow{max-width:130px;text-align:right}html[lang="en"] .project-row{grid-template-columns:1fr 24px}html[lang="en"] .skill-item h3{font-size:13px}html[lang="en"] .start-copy h2{font-size:29px}}
@media(max-width:360px){.header-link{display:none}.header-controls{gap:5px}.hero-footnote span{font-size:10px}.brand-name{font-size:22px}}
@media(max-width:640px){.vision-frame{width:100%;max-width:260px}.part:nth-child(1){left:11.54%}.part:nth-child(2){left:41.15%}.part:nth-child(3){left:70.77%}.defect-box{left:36.54%;width:26.15%}.daq-diagram{gap:clamp(5px,2vw,15px)}.daq-core{width:82px}.daq-core span{font-size:8px;text-align:center;padding:0 5px}.daq-devices span{font-size:9px;padding:5px 7px}}
@media(max-width:640px){.header-controls .header-link{display:none}.preference-button{height:44px;min-width:44px}.js .menu-button{height:44px;width:44px;flex-shrink:0}.filter-button{min-height:44px}.copy-button{min-height:44px;min-width:44px}}
@media print{.header-controls,.menu-button{display:none!important}}

.icon-sprite{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.ui-icon{display:inline-block;width:20px;height:20px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.portal .portal-icon{width:44px;height:44px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--mint);color:var(--green);transition:transform .3s,color .3s}
.feature-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-bottom:14px;border:1px solid var(--line);border-radius:10px;background:var(--mint);color:var(--green)}
.heading-icon{margin-right:9px;color:var(--green)}
.project-content h3{display:flex;align-items:center;gap:10px;overflow-wrap:anywhere}
.project-content .project-title-icon{width:24px;height:24px;color:var(--green)}
.project-name{min-width:0}
.project-name h3 a{display:inline-flex;align-items:center;gap:8px;max-width:100%;overflow-wrap:anywhere}
.project-name .project-title-icon{width:18px;height:18px;color:var(--green)}
.repo-stats{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-variant-numeric:tabular-nums}
.project-content .repo-stats{margin-top:-12px;margin-bottom:22px}
.project-name .repo-stats{margin-top:9px}
.repo-stat{display:inline-flex;align-items:center;gap:5px;min-height:28px;padding:4px 7px;border:1px solid var(--line);border-radius:6px;font-size:10px;line-height:1.4;white-space:nowrap;color:var(--muted);transition:color .2s,border-color .2s,background .2s}
.repo-stat .ui-icon{width:14px;height:14px}
.repo-stat [data-stat-count]{font-weight:600;color:var(--ink)}
.repo-stat[href$="/stargazers"] .ui-icon{color:#a9874e}
html[data-theme="dark"] .repo-stat[href$="/stargazers"] .ui-icon{color:#d29922}
.repo-stat:hover{color:var(--green);border-color:var(--green);background:var(--mint)}
.doc-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border-radius:9px;background:var(--mint);color:var(--green)}
.doc-row>div{flex:1;min-width:0}
.skill-icon{display:block;margin-bottom:14px;color:var(--green)}
.community-link{column-gap:10px}
.community-icon{width:19px;height:19px;color:var(--green)}
.community-link .community-label{flex:1;min-width:0;color:inherit;font-size:inherit}
.footer-links a{display:inline-flex;align-items:center;gap:6px}
.footer-links .ui-icon{width:15px;height:15px;color:var(--green)}
.hero-buttons .button{gap:11px}
.header-link .ui-icon{width:15px;height:15px}

:root{--motion-ease:cubic-bezier(.22,1,.36,1)}
.motion-reveal{opacity:0;transform:translateY(18px);transition:opacity .6s var(--motion-ease) var(--reveal-delay,0ms),transform .6s var(--motion-ease) var(--reveal-delay,0ms)}
.motion-reveal.is-visible,.motion-reveal:focus-within{opacity:1;transform:translateY(0)}
.spotlight{position:relative;isolation:isolate;overflow:hidden}
.spotlight::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:radial-gradient(260px circle at var(--pointer-x,50%) var(--pointer-y,0%),rgba(27,81,66,.12),transparent 70%);opacity:0;transition:opacity .3s}
html[data-theme="dark"] .spotlight::before{background:radial-gradient(260px circle at var(--pointer-x,50%) var(--pointer-y,0%),rgba(88,166,255,.13),transparent 70%)}
.spotlight.motion-reveal{transition:opacity .6s var(--motion-ease) var(--reveal-delay,0ms),transform .35s var(--motion-ease),border-color .25s,background .25s}
.spotlight:focus-within{border-color:var(--green)}
.button:active,.preference-button:active,.copy-button:active,.filter-button:active{transform:scale(.98)}
.diagram-connections path{stroke-dasharray:5 8;animation:diagram-flow 2.8s linear infinite;animation-play-state:paused}
.diagram-hub{transform-box:fill-box;transform-origin:center;animation:diagram-breathe 4s ease-in-out infinite;animation-play-state:paused}
.hero-art.motion-active .diagram-connections path,.hero-art.motion-active .diagram-hub{animation-play-state:running}
@keyframes diagram-flow{to{stroke-dashoffset:-52}}
@keyframes diagram-breathe{50%{transform:scale(1.035);opacity:.85}}
@media(hover:hover) and (pointer:fine){.spotlight:hover::before{opacity:1}.spotlight:hover{transform:translateY(-4px)}.portal:hover .portal-icon{transform:translateY(-2px) rotate(-5deg)}.doc-row:hover .doc-icon,.skill-item:hover .skill-icon{transform:translateX(3px)}.doc-icon,.skill-icon{transition:transform .3s var(--motion-ease)}}
@media(max-width:640px){.portal .portal-icon{width:38px;height:38px;padding:8px}.feature-icon{width:32px;height:32px;margin-bottom:12px}.repo-stat{min-height:36px}.doc-row{gap:12px}.doc-icon{width:30px;height:30px}.footer-links{gap:16px}}
@media(prefers-reduced-motion:reduce){.motion-reveal{opacity:1!important;transform:none!important;transition:none!important}.spotlight:hover,.button:hover,.button:active,.preference-button:active,.copy-button:active,.filter-button:active,.portal:hover .portal-icon,.doc-row:hover .doc-icon,.skill-item:hover .skill-icon{transform:none}.spotlight::before{display:none}.diagram-connections path,.diagram-hub{animation:none}.diagram-connections path{stroke-dasharray:none}}
@media print{.motion-reveal{opacity:1!important;transform:none!important}.spotlight::before{display:none}.diagram-connections path,.diagram-hub{animation:none}}
