/* GENERATED by scripts/web/extract_chrome.py from the angular-web build.
   Do NOT edit: regenerated on every build, and the _ngcontent scope only
   matches the markup extracted in the same run. */
header[_ngcontent-ng-c2944212461]{position:fixed;top:0;left:0;right:0;z-index:1000;height:var(--header-height);background:#fffffff2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:box-shadow var(--transition-base)}header.scrolled[_ngcontent-ng-c2944212461]{box-shadow:var(--shadow-sm)}.nav[_ngcontent-ng-c2944212461]{display:flex;align-items:center;height:100%;gap:8px}.logo[_ngcontent-ng-c2944212461]{text-decoration:none;margin-right:32px;flex-shrink:0;display:flex;align-items:center}.logo-img[_ngcontent-ng-c2944212461]{height:40px;width:auto}.nav-links[_ngcontent-ng-c2944212461]{display:flex;list-style:none;margin:0;padding:0;gap:4px;flex:1;justify-content:center}.nav-item[_ngcontent-ng-c2944212461]{position:relative}.nav-item.has-dropdown[_ngcontent-ng-c2944212461]   .dropdown[_ngcontent-ng-c2944212461]{display:none;position:absolute;top:100%;left:0;min-width:260px;background:var(--color-white);border-radius:20px;box-shadow:var(--shadow-lg);list-style:none;padding:10px;margin:0;z-index:100}.nav-item.has-dropdown[_ngcontent-ng-c2944212461]   .dropdown[_ngcontent-ng-c2944212461]   li[_ngcontent-ng-c2944212461]   a[_ngcontent-ng-c2944212461]{display:block;padding:10px 16px;border-radius:12px;color:var(--color-text);font-size:14px;transition:background var(--transition-fast)}.nav-item.has-dropdown[_ngcontent-ng-c2944212461]   .dropdown[_ngcontent-ng-c2944212461]   li[_ngcontent-ng-c2944212461]   a[_ngcontent-ng-c2944212461]:hover{background:var(--gray-light);color:var(--blue-primary)}.nav-item.has-dropdown[_ngcontent-ng-c2944212461]:hover   .dropdown[_ngcontent-ng-c2944212461], .nav-item.has-dropdown[_ngcontent-ng-c2944212461]   .dropdown.open[_ngcontent-ng-c2944212461]{display:block}.nav-link[_ngcontent-ng-c2944212461]{display:flex;align-items:center;gap:2px;padding:8px 16px;color:var(--color-text-light);font-size:14.5px;font-weight:500;border-radius:var(--radius-pill);transition:all var(--transition-fast);cursor:pointer}.nav-link[_ngcontent-ng-c2944212461]:hover{color:var(--color-black);background:var(--gray-light)}.nav-link.active[_ngcontent-ng-c2944212461]{color:var(--blue-primary)}.nav-link[_ngcontent-ng-c2944212461]   .arrow[_ngcontent-ng-c2944212461]{font-size:18px}.nav-actions[_ngcontent-ng-c2944212461]{display:flex;align-items:center;gap:16px;margin-left:auto}.lang-wrapper[_ngcontent-ng-c2944212461]{position:relative}.lang-selector[_ngcontent-ng-c2944212461]{display:flex;align-items:center;gap:4px;cursor:pointer;padding:6px 12px;border-radius:var(--radius-pill);transition:background var(--transition-fast)}.lang-selector[_ngcontent-ng-c2944212461]:hover{background:var(--gray-light)}.lang-selector[_ngcontent-ng-c2944212461]   .lang-current[_ngcontent-ng-c2944212461]{font-size:13px;font-weight:600;color:var(--gray-dark)}.lang-selector[_ngcontent-ng-c2944212461]   .arrow[_ngcontent-ng-c2944212461]{font-size:16px;color:var(--gray-dark)}.lang-wrapper.open[_ngcontent-ng-c2944212461]   .lang-dropdown[_ngcontent-ng-c2944212461]{display:block}.lang-dropdown[_ngcontent-ng-c2944212461]{display:none;position:absolute;top:100%;right:0;min-width:150px;background:var(--color-white);border-radius:16px;box-shadow:var(--shadow-lg);list-style:none;padding:8px;margin:4px 0 0}.lang-dropdown[_ngcontent-ng-c2944212461]   li[_ngcontent-ng-c2944212461]{padding:8px 12px;border-radius:10px;font-size:14px;cursor:pointer;transition:background var(--transition-fast)}.lang-dropdown[_ngcontent-ng-c2944212461]   li[_ngcontent-ng-c2944212461]:hover{background:var(--gray-light)}.lang-dropdown[_ngcontent-ng-c2944212461]   li.active[_ngcontent-ng-c2944212461]{color:var(--blue-primary);font-weight:600}.btn-cta[_ngcontent-ng-c2944212461]{padding:10px 24px;font-size:14px;white-space:nowrap}.mobile-toggle[_ngcontent-ng-c2944212461]{display:none;background:none;border:none;cursor:pointer;padding:8px;color:var(--color-text)}@media(max-width:1024px){.nav-links[_ngcontent-ng-c2944212461], .nav-actions[_ngcontent-ng-c2944212461]{display:none}.mobile-toggle[_ngcontent-ng-c2944212461]{display:block;margin-left:auto}}.mobile-menu[_ngcontent-ng-c2944212461]{display:none;position:fixed;top:var(--header-height);left:0;right:0;bottom:0;background:var(--color-white);z-index:999;overflow-y:auto;overscroll-behavior:contain;padding:16px 0;border-top:1px solid var(--gray-medium)}.mobile-menu.open[_ngcontent-ng-c2944212461]{display:block}.mobile-nav[_ngcontent-ng-c2944212461]{display:flex;flex-direction:column;max-width:480px;margin:0 auto;padding:0 20px}.mobile-section-toggle[_ngcontent-ng-c2944212461]{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 0;background:none;border:none;border-bottom:1px solid var(--gray-light);font-size:15px;font-weight:600;color:var(--color-text);cursor:pointer}.mobile-section-toggle[_ngcontent-ng-c2944212461]   .material-symbols-outlined[_ngcontent-ng-c2944212461]{font-size:20px;color:var(--gray-dark)}.mobile-submenu[_ngcontent-ng-c2944212461]{display:none;list-style:none;padding:0;margin:0}.mobile-submenu.open[_ngcontent-ng-c2944212461]{display:block}.mobile-submenu[_ngcontent-ng-c2944212461]   li[_ngcontent-ng-c2944212461]   a[_ngcontent-ng-c2944212461]{display:block;padding:10px 0 10px 16px;font-size:14px;color:var(--color-text-light);text-decoration:none;border-bottom:1px solid var(--gray-light)}.mobile-submenu[_ngcontent-ng-c2944212461]   li[_ngcontent-ng-c2944212461]   a[_ngcontent-ng-c2944212461]:hover{color:var(--blue-primary)}.mobile-link[_ngcontent-ng-c2944212461]{display:block;padding:14px 0;font-size:15px;font-weight:600;color:var(--color-text);text-decoration:none;border-bottom:1px solid var(--gray-light)}.mobile-link[_ngcontent-ng-c2944212461]:hover{color:var(--blue-primary)}.mobile-lang[_ngcontent-ng-c2944212461]{display:flex;flex-wrap:wrap;gap:8px;padding:16px 0}.mobile-lang[_ngcontent-ng-c2944212461]   button[_ngcontent-ng-c2944212461]{padding:6px 12px;border:1px solid var(--gray-medium);border-radius:6px;background:none;font-size:13px;cursor:pointer;color:var(--color-text)}.mobile-lang[_ngcontent-ng-c2944212461]   button.active[_ngcontent-ng-c2944212461]{background:var(--blue-primary);color:var(--color-white);border-color:var(--blue-primary)}.mobile-cta[_ngcontent-ng-c2944212461]{display:block;text-align:center;margin-top:8px;width:100%}
footer[_ngcontent-ng-c1133123752]{background-color:var(--gray-blue);color:var(--color-text-light);padding:56px 0 0;margin-top:80px}.footer-grid[_ngcontent-ng-c1133123752]{display:grid;grid-template-columns:1.5fr repeat(4,1fr);gap:40px;padding-bottom:40px;border-bottom:1px solid var(--gray-medium)}.footer-brand[_ngcontent-ng-c1133123752]   .footer-logo[_ngcontent-ng-c1133123752]{height:40px;width:auto}.footer-brand[_ngcontent-ng-c1133123752]   .footer-tagline[_ngcontent-ng-c1133123752]{margin-top:12px;font-size:14px;line-height:1.6;color:var(--color-text-muted);max-width:300px}.footer-col[_ngcontent-ng-c1133123752]   h4[_ngcontent-ng-c1133123752]{color:var(--color-black);font-size:14px;font-weight:500;margin-bottom:14px}.footer-col[_ngcontent-ng-c1133123752]   ul[_ngcontent-ng-c1133123752]{list-style:none;padding:0;margin:0}.footer-col[_ngcontent-ng-c1133123752]   li[_ngcontent-ng-c1133123752]{margin-bottom:2px}.footer-col[_ngcontent-ng-c1133123752]   a[_ngcontent-ng-c1133123752]{display:inline-block;padding:4px 0;color:var(--color-text-light);font-size:14px;transition:color var(--transition-fast)}.footer-col[_ngcontent-ng-c1133123752]   a[_ngcontent-ng-c1133123752]:hover{color:var(--blue-primary)}.footer-bottom[_ngcontent-ng-c1133123752]{padding:24px 0;text-align:center}.footer-bottom[_ngcontent-ng-c1133123752]   p[_ngcontent-ng-c1133123752]{font-size:13px;color:var(--color-text-muted);margin:0}@media(max-width:768px){.footer-grid[_ngcontent-ng-c1133123752]{grid-template-columns:1fr 1fr;gap:32px}.footer-brand[_ngcontent-ng-c1133123752]{grid-column:span 2}}@media(max-width:480px){.footer-grid[_ngcontent-ng-c1133123752]{grid-template-columns:1fr}.footer-brand[_ngcontent-ng-c1133123752]{grid-column:span 1}}

/* --- blog adaptation, added by scripts/web/extract_chrome.py ---
   The site switches language through the Angular router; the blog uses
   plain links, so the padding and colours of the original <li>/<button>
   move onto the anchor. Values are read back from the rules above. */
.lang-dropdown[_ngcontent-ng-c2944212461]   li[_ngcontent-ng-c2944212461]{padding:0}
.lang-dropdown[_ngcontent-ng-c2944212461]   li[_ngcontent-ng-c2944212461]   a[_ngcontent-ng-c2944212461]{display:block;color:inherit;text-decoration:none;padding:8px 12px;border-radius:10px;font-size:14px;cursor:pointer;transition:background var(--transition-fast)}
.mobile-lang[_ngcontent-ng-c2944212461]   a[_ngcontent-ng-c2944212461]{display:inline-block;text-decoration:none;padding:6px 12px;border:1px solid var(--gray-medium);border-radius:6px;background:none;font-size:13px;cursor:pointer;color:var(--color-text)}
.mobile-lang[_ngcontent-ng-c2944212461]   a.active[_ngcontent-ng-c2944212461]{background:var(--blue-primary);color:var(--color-white);border-color:var(--blue-primary)}

/* The three header icons are inlined SVG on the blog, not glyphs of the
   387 kB Material Symbols subset the site loads. Sizing stays on the
   font-size the surrounding rules already set — .nav-link .arrow and
   .lang-selector .arrow still match, since only the font's own class was
   dropped from the markup — so 1em maps each icon exactly where the glyph
   sat. 24px is the global stylesheet's default icon size, and the only
   value here that is copied rather than read back: it is the fallback for
   the one icon (the hamburger) no rule sizes. */
.fk-icon[_ngcontent-ng-c2944212461]{width:1em;height:1em;font-size:24px;display:inline-block;vertical-align:middle;fill:currentColor;flex:none}
.mobile-section-toggle[_ngcontent-ng-c2944212461]   .fk-icon[_ngcontent-ng-c2944212461]{font-size:20px;color:var(--gray-dark)}
/* Open/closed glyph pair. chrome.js only keeps aria-expanded up to date;
   which of the two paths shows is decided here. */
.fk-icon[_ngcontent-ng-c2944212461]   .fk-icon__open{display:none}
.mobile-toggle[_ngcontent-ng-c2944212461][aria-expanded="true"]   .fk-icon[_ngcontent-ng-c2944212461]   .fk-icon__closed{display:none}
.mobile-toggle[_ngcontent-ng-c2944212461][aria-expanded="true"]   .fk-icon[_ngcontent-ng-c2944212461]   .fk-icon__open{display:inline}
.mobile-section-toggle[_ngcontent-ng-c2944212461][aria-expanded="true"]   .fk-icon[_ngcontent-ng-c2944212461]   .fk-icon__closed{display:none}
.mobile-section-toggle[_ngcontent-ng-c2944212461][aria-expanded="true"]   .fk-icon[_ngcontent-ng-c2944212461]   .fk-icon__open{display:inline}
