:root{--color-paper: #fff;--color-ink: #171b22;--color-muted: #626b79;--color-rule: #e6eaf0;--color-blue: #0067d9;--color-blue-wash: #eaf3ff;--color-code: #f5f7fa;color-scheme:light}:root[data-theme=dark]{--color-paper: #12161d;--color-ink: #f2f5fb;--color-muted: #a7b2c3;--color-rule: #2b3340;--color-blue: #75b2ff;--color-blue-wash: #1a2b43;--color-code: #1b222d;color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--color-ink);background:var(--color-paper);overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.3}p,h1,h2,h3,h4,h5,h6{margin:0 0 1rem}a{color:inherit;text-decoration:none;text-underline-offset:4px}a:hover{color:var(--color-blue)}button,input,select,textarea{font:inherit;color:inherit}button,summary{cursor:pointer}button{touch-action:manipulation}button:disabled{cursor:default;opacity:.5}img,video,iframe{max-width:100%}img{height:auto}svg{flex-shrink:0}[hidden]{display:none !important}:focus-visible{outline:2px solid var(--color-blue);outline-offset:4px}:target,[id]{scroll-margin-top:24px}.skip-link{position:fixed;z-index:100;top:8px;left:8px;padding:12px 18px;color:var(--color-paper);background:var(--color-ink);transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 17px;border:1px solid var(--color-rule);border-radius:6px;color:var(--color-ink);background:var(--color-paper);font-size:13px;text-decoration:none}.button:hover{color:var(--color-blue);border-color:var(--color-blue)}.button--primary{background:var(--color-blue);border-color:var(--color-blue);color:var(--color-paper)}.button--primary:hover{color:var(--color-paper);filter:brightness(0.92)}.social-link{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:10px;border:1px solid var(--color-rule);border-radius:8px;color:var(--color-muted)}.social-link:hover{color:var(--color-blue);border-color:var(--color-blue);background:var(--color-blue-wash)}.social-icon{display:block;width:22px;height:22px}@media(prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none !important;transition:none !important}}@media print{.site-header,.site-footer,.post-share,.comments,.related-posts,.code-copy,.reading-progress,.skip-link{display:none !important}:root{--color-paper: #fff;--color-ink: #000;--color-muted: #444}.site-shell,.prose{width:100% !important;max-width:none !important}}.site-shell{width:calc(100% - 104px);max-width:1140px;margin-right:auto;margin-left:auto}.site-header{display:flex;align-items:center;gap:28px;padding-top:27px;padding-bottom:27px;border-bottom:1px solid var(--color-rule)}.site-wordmark{display:inline-flex;white-space:nowrap;font-size:28px;font-weight:500;line-height:1;letter-spacing:-1.4px}.site-wordmark span{color:var(--color-blue)}.site-wordmark:hover{color:var(--color-ink)}.site-nav{display:flex;align-items:center;gap:25px;margin-left:auto;font-size:13px}.site-nav>a,.site-nav summary{padding:8px 0}.site-nav .site-nav__active{color:var(--color-blue)}.site-tools{position:relative}.site-tools summary{display:flex;align-items:center;gap:4px;list-style:none;cursor:pointer}.site-tools summary::-webkit-details-marker{display:none}.site-tools summary svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.5}.site-tools[open] summary{color:var(--color-blue)}.site-tools[open] summary svg{transform:rotate(180deg)}.site-tools__menu{position:absolute;z-index:10;top:calc(100% + 10px);right:0;min-width:220px;padding:8px;border:1px solid var(--color-rule);border-radius:8px;background:var(--color-paper)}.site-tools__menu a{display:block;padding:11px 12px;font-size:13px;border-radius:4px}.site-tools__menu a:hover{background:var(--color-blue-wash)}.site-controls{display:flex;align-items:center;gap:10px}.icon-button{display:grid;place-items:center;width:36px;height:36px;padding:0;border:1px solid var(--color-rule);border-radius:50%;color:var(--color-muted);background:rgba(0,0,0,0);cursor:pointer}.icon-button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.icon-button:hover{color:var(--color-blue)}.search-button{border-color:rgba(0,0,0,0)}.theme-icon__sun,[data-theme=dark] .theme-icon__moon{display:none}[data-theme=dark] .theme-icon__sun{display:block}.home-intro{display:grid;grid-template-columns:minmax(0, 1fr) auto;align-items:center;gap:60px;padding:52px 0 48px}.home-intro__copy{max-width:650px}.home-eyebrow{margin-bottom:17px;font-size:11px;font-weight:500;line-height:1.6;letter-spacing:1.5px;text-transform:uppercase;color:var(--color-muted)}.home-intro h1{margin:0;font-size:clamp(37px,4.8vw,52px);letter-spacing:-2px;line-height:1.1}.home-description{max-width:575px;margin-top:21px;font-size:16px;line-height:1.75;color:var(--color-muted)}.home-description strong{color:var(--color-ink);font-weight:500}.home-intro__links{display:flex;align-items:center;flex-wrap:wrap;gap:23px;margin-top:24px}.home-intro__secondary{display:flex;align-items:center;gap:23px}.home-about{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--color-blue)}.home-about span{font-size:18px}.home-socials{padding-left:22px;border-left:1px solid var(--color-rule)}.home-socials .social-link{color:var(--color-blue)}.home-intro__profile{display:flex;flex-direction:column;align-items:center;gap:18px;width:248px}.home-portrait{padding:9px;border-radius:50%;background:var(--color-blue-wash)}.home-portrait img{display:block;width:192px;height:192px;border-radius:50%;object-fit:cover}.home-credential{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:1px solid var(--color-rule);border-radius:8px}.home-credential:hover{border-color:var(--color-blue);background:var(--color-blue-wash)}.home-credential>img{flex-shrink:0;width:56px;height:56px;object-fit:contain}.home-credential__copy{display:flex;flex-direction:column;gap:4px;min-width:0}.home-credential__year{color:var(--color-blue);font-size:10px;font-weight:600;letter-spacing:1px}.home-credential__name{font-size:12px;font-weight:500;line-height:1.5}.home-credential__verify{color:var(--color-muted);font-size:11px}.home-articles__header{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:26px 0;border-top:1px solid var(--color-rule)}.home-articles__header h2{margin:0;font-size:24px;line-height:1.25;letter-spacing:-0.7px}.section-link{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--color-muted)}.article-grid{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:44px 28px;padding-bottom:44px}.article-card{min-width:0}.article-cover{display:block;overflow:hidden;border-radius:8px;background:var(--color-blue-wash)}.article-cover img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover}.article-card__meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:17px 0 9px;font-size:11px;line-height:1.5;color:var(--color-muted)}.article-card__topics{color:var(--color-blue);font-weight:500}.article-card__title{margin:0;font-size:20px;line-height:1.4;letter-spacing:-0.4px}.article-card__title a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}.article-card__description{margin-top:11px;font-size:13px;line-height:1.7;color:var(--color-muted)}.site-footer{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:18px;padding:24px 0 30px;border-top:1px solid var(--color-rule);font-size:11px;color:var(--color-muted)}.site-footer__brand{font-weight:500;color:var(--color-ink)}.site-footer__brand span{color:var(--color-blue)}.site-footer__links{display:flex;align-items:center;flex-wrap:wrap;gap:18px}.back-to-top{display:inline-flex;align-items:center;gap:5px}@media(max-width: 820px){.site-shell{width:calc(100% - 56px)}.home-intro{gap:28px}.home-intro__profile{width:220px}.home-portrait img{width:170px;height:170px}.article-grid{grid-template-columns:repeat(2, minmax(0, 1fr))}.site-nav{gap:20px}.site-header{gap:20px}}@media(max-width: 580px){.site-shell{width:calc(100% - 44px)}.site-header{flex-wrap:wrap;gap:17px;padding-top:23px;padding-bottom:17px}.site-wordmark{font-size:26px}.site-nav{order:3;width:100%;margin-left:0;gap:24px;font-size:12px}.site-controls{margin-left:auto}.home-intro{grid-template-columns:1fr;gap:23px;padding:32px 0 35px}.home-intro__profile{grid-row:1;display:grid;grid-template-columns:auto minmax(0, 1fr);gap:20px;width:100%}.home-portrait{justify-self:start;padding:7px}.home-portrait img{width:150px;height:150px}.home-credential{flex-direction:column;align-items:flex-start;gap:7px;padding:0;border:0;border-radius:0}.home-credential:hover{background:rgba(0,0,0,0)}.home-credential:hover .home-credential__verify{color:var(--color-blue);text-decoration:underline}.home-intro h1{font-size:38px;letter-spacing:-1.5px}.home-description{margin-top:17px;font-size:15px}.home-eyebrow{margin-bottom:13px;font-size:11px;letter-spacing:1.2px}.home-articles__header{align-items:flex-start;flex-wrap:wrap;gap:10px;padding:23px 0}.home-articles__header h2{font-size:23px}.article-grid{grid-template-columns:1fr;gap:34px}.article-card__title{font-size:21px}.article-card__description{font-size:14px}.site-footer{align-items:flex-start;flex-direction:column;gap:12px}}@media(pointer: coarse){.site-nav>a,.site-tools summary,.home-socials a,.home-about,.section-link,.site-footer__links a,.back-to-top{display:inline-flex;align-items:center;min-height:44px}.icon-button{width:44px;height:44px}.site-controls{gap:4px}}.archive-heading{padding:50px 0 35px}.archive-heading h1{margin:0;font-size:clamp(36px,4.5vw,48px);line-height:1.15;letter-spacing:-1.7px}.archive-heading>p:last-child{max-width:620px;margin:17px 0 0;font-size:16px;line-height:1.7;color:var(--color-muted)}.archive-filters{display:grid;grid-template-columns:minmax(200px, 1.5fr) minmax(155px, 1fr) minmax(180px, 1.1fr) minmax(125px, 0.8fr) minmax(140px, 0.9fr);gap:18px;padding:25px 0;border-top:1px solid var(--color-rule);border-bottom:1px solid var(--color-rule)}.archive-field{min-width:0}.archive-field label{display:block;margin-bottom:9px;font-size:12px;font-weight:500}.archive-field input,.archive-field select{display:block;width:100%;height:46px;min-height:46px;margin:0;padding:10px 12px;border:1px solid var(--color-rule);border-radius:6px;font:inherit;font-size:14px;line-height:1.4;color:var(--color-ink);background-color:var(--color-paper);color-scheme:light}.archive-field select{-webkit-appearance:none;appearance:none;padding-right:38px;background-image:none;cursor:pointer}.archive-field input::placeholder{color:var(--color-muted);opacity:1}.archive-field input:focus-visible,.archive-field select:focus-visible{outline:2px solid var(--color-blue);outline-offset:2px}.archive-field--select{position:relative}.archive-field--select::after{content:"";position:absolute;right:16px;bottom:20px;width:7px;height:7px;border-right:1.5px solid var(--color-muted);border-bottom:1.5px solid var(--color-muted);transform:rotate(45deg);pointer-events:none}:root[data-theme=dark] .archive-field input,:root[data-theme=dark] .archive-field select{color-scheme:dark}.archive-summary{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;min-height:74px;padding:15px 0}.archive-count{margin:0;font-size:12px;color:var(--color-muted)}.archive-reset{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0;border:0;font:inherit;font-size:12px;color:var(--color-blue);background:rgba(0,0,0,0);cursor:pointer}.archive-noscript{margin-bottom:25px;color:var(--color-muted);font-size:14px}.archive-empty{padding:35px 0 65px;text-align:center}.archive-empty h2{margin:0;font-size:23px;line-height:1.3;letter-spacing:-0.5px}.archive-empty p{margin:13px 0;color:var(--color-muted);font-size:14px}.archive-pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:15px;padding:22px 0 35px;border-top:1px solid var(--color-rule);font-size:12px;color:var(--color-muted)}.archive-pagination button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 13px;border:1px solid var(--color-rule);border-radius:6px;font:inherit;color:var(--color-ink);background:var(--color-paper);cursor:pointer}.archive-pagination button:first-child{justify-self:start}.archive-pagination button:last-child{justify-self:end}.archive-pagination button:hover:enabled{color:var(--color-blue);border-color:var(--color-blue)}.archive-pagination button:disabled{opacity:.45;cursor:default}@media(max-width: 1000px){.archive-filters{grid-template-columns:repeat(4, minmax(0, 1fr))}.archive-field--query{grid-column:1/-1}}@media(max-width: 800px){.archive-filters{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media(max-width: 580px){.archive-heading{padding:32px 0 27px}.archive-heading>p:last-child{font-size:15px}.archive-filters{grid-template-columns:repeat(2, minmax(0, 1fr));gap:18px 14px;padding:22px 0}.archive-field input,.archive-field select{font-size:16px}.archive-pagination{grid-template-columns:1fr 1fr;gap:12px}.archive-pagination>span{grid-column:1/-1;grid-row:1;text-align:center}}@media(max-width: 380px){.archive-filters{grid-template-columns:1fr}}.page-heading{padding:52px 0 35px}.page-heading h1,.post-heading h1{margin:0;font-size:clamp(35px,4.5vw,49px);line-height:1.14;letter-spacing:-1.7px;text-wrap:balance}.page-lead{margin:20px 0 0;max-width:730px;font-size:18px;line-height:1.75;color:var(--color-muted)}.page-layout{max-width:900px;padding-bottom:60px}.about-intro p,.error-page p,.prose p{margin-bottom:1.4em}.about-intro{font-size:17px;line-height:1.85}.about-intro a{color:var(--color-blue);text-decoration:underline}.about-portrait{float:right;width:180px;height:180px;margin:0 0 24px 40px;padding:8px;border-radius:50%;object-fit:cover;background:var(--color-blue-wash)}.about-section-title{clear:both;margin:48px 0 25px;padding-top:27px;border-top:1px solid var(--color-rule);font-size:26px;letter-spacing:-0.6px}.about-contact{clear:both;display:flex;align-items:center;gap:28px;margin-top:35px;padding:28px;border:1px solid var(--color-rule);border-radius:8px}.about-contact h2{margin:0 0 10px;font-size:25px;letter-spacing:-0.6px}.about-contact p{margin:0;max-width:520px;font-size:15px;line-height:1.75;color:var(--color-muted)}.about-contact .button{flex-shrink:0}.about-timeline__item{display:grid;grid-template-columns:175px 1fr;gap:25px;padding:22px 0;border-bottom:1px solid var(--color-rule)}.about-timeline__date{font-size:12px;color:var(--color-blue)}.about-timeline__role{margin-bottom:5px;font-size:17px}.about-timeline__company{font-size:14px;color:var(--color-muted)}.about-badges{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:16px}.about-badge{display:flex;flex-direction:column;align-items:center;gap:14px;padding:24px 16px;border:1px solid var(--color-rule);border-radius:8px;text-align:center}.about-badge:hover{border-color:var(--color-blue);background:var(--color-blue-wash)}.about-badge__img{width:92px;height:92px;object-fit:contain}.about-badge__name{font-size:13px;line-height:1.6}.about-badge__verify{margin-top:auto;font-size:12px;color:var(--color-blue)}.post-layout{padding-top:35px}.breadcrumbs{display:flex;gap:12px;margin-bottom:32px;font-size:12px;color:var(--color-muted)}.post-heading{max-width:940px;margin:0 auto 44px}.post-heading>:not(.post-cover){max-width:740px;margin-right:auto;margin-left:auto}.post-topics{display:flex;flex-wrap:wrap;gap:8px 18px;margin-bottom:16px;font-size:12px;color:var(--color-blue)}.post-topics a:hover{text-decoration:underline}.post-topics__primary{font-weight:600}.post-review-link{margin-top:-12px;margin-bottom:28px;font-size:12px;color:var(--color-muted)}.post-review-link a{text-decoration:underline;text-underline-offset:3px}.post-meta{display:flex;align-items:center;flex-wrap:wrap;gap:10px 22px;margin:28px 0 30px;font-size:12px;color:var(--color-muted)}.post-author{display:flex;align-items:center;gap:12px;color:var(--color-ink)}.post-author img{width:44px;height:44px;border-radius:50%;object-fit:cover}.post-cover{display:block;width:100%;height:auto;max-height:460px;object-fit:cover;border-radius:8px}.prose{max-width:740px;margin-right:auto;margin-left:auto;font-size:17px;line-height:1.85}.prose h2{margin:2em 0 .9em;font-size:28px;line-height:1.3;letter-spacing:-0.6px}.prose h3{margin:1.6em 0 .8em;font-size:22px}.prose h4{margin-top:1.5em;font-size:19px}.prose a:not(.button){color:var(--color-blue);text-decoration:underline}.prose strong{font-weight:600}.prose ul,.prose ol{padding-left:24px;margin:0 0 1.5em}.prose li{margin-bottom:.5em}.prose li>ul,.prose li>ol{margin-bottom:.5em}.prose blockquote{margin:28px 0;padding:16px 22px;border-left:3px solid var(--color-blue);background:var(--color-blue-wash);font-size:16px}.prose blockquote p:last-child{margin-bottom:0}.article-toc{margin:30px 0 38px;padding:19px 23px;border:1px solid var(--color-rule);border-radius:8px;font-size:15px}.article-toc summary{cursor:pointer;font-weight:600}.article-toc>ul{margin:18px 0 0}.article-toc li{margin-bottom:.35em}.article-toc a{text-underline-offset:3px}.editorial-review{margin-top:45px;padding:25px 0 0;border-top:1px solid var(--color-rule);font-size:15px}.editorial-review h2{margin-top:0;font-size:23px}.editorial-review__date{color:var(--color-muted);font-size:13px}.prose img{display:block;margin:28px auto;border:1px solid var(--color-rule);border-radius:6px}.prose iframe,.prose video{display:block;width:100%;aspect-ratio:16/9;height:auto;border:0}.prose table{display:block;max-width:100%;border-collapse:collapse;overflow-x:auto;font-size:14px}.prose td,.prose th{padding:10px 14px;border:1px solid var(--color-rule);text-align:left}code,pre{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.85em}:not(pre)>code{padding:3px 6px;border-radius:4px;background:var(--color-code);overflow-wrap:anywhere}pre{max-width:100%;padding:22px;margin:0 0 28px;border:1px solid var(--color-rule);border-radius:6px;background:var(--color-code);line-height:1.7;overflow-x:auto;tab-size:2}pre code{padding:0;font-size:inherit}.code-block{position:relative;min-width:0}.code-block pre{padding-top:46px}.code-copy{position:absolute;top:9px;right:10px;padding:5px 10px;border:1px solid var(--color-rule);border-radius:4px;background:var(--color-paper);font-size:11px;line-height:1.5}.reading-progress{position:fixed;top:0;left:0;right:0;z-index:30;height:3px;pointer-events:none}.reading-progress__bar{width:100%;height:100%;background:var(--color-blue);transform:scaleX(0);transform-origin:left}.post-share{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:28px 0;margin-top:45px;margin-bottom:40px;border-top:1px solid var(--color-rule);border-bottom:1px solid var(--color-rule);font-size:12px}.post-share>span{width:100%;color:var(--color-muted)}.post-share a.social-link{color:var(--color-muted);text-decoration:none}.post-share a.social-link:hover{color:var(--color-blue)}.text-button{padding:0;border:0;background:rgba(0,0,0,0);color:var(--color-blue);font-size:inherit}.comments{padding:0 0 50px}.comments p{color:var(--color-muted);font-size:14px}.comments h2{font-size:25px}.topics-page{padding-bottom:60px}.topic-directory{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:32px;padding:32px 0 40px;border-top:1px solid var(--color-rule)}.topic-directory__item{display:flex;flex-direction:column;align-items:flex-start}.topic-directory__count{margin-bottom:12px;font-size:12px;color:var(--color-muted)}.topic-directory h2{margin:0 0 14px;font-size:26px;letter-spacing:-0.7px}.topic-directory h2 a:hover{color:var(--color-blue)}.topic-directory__item>p:not(.topic-directory__count){margin-bottom:22px;font-size:15px;line-height:1.8;color:var(--color-muted)}.topic-directory .section-link{margin-top:auto}.technology-directory{padding:30px 0 36px;border-top:1px solid var(--color-rule)}.technology-directory h2{margin:0 0 12px;font-size:27px;letter-spacing:-0.7px}.technology-directory>p{font-size:15px;color:var(--color-muted)}.technology-directory ul{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:0 32px;padding:0;margin:25px 0 0;list-style:none}.technology-directory li{border-bottom:1px solid var(--color-rule)}.technology-directory a{display:flex;align-items:center;gap:10px;min-height:56px;font-size:14px}.technology-directory a:hover{color:var(--color-blue)}.technology-directory a span:first-child{margin-left:auto;color:var(--color-muted);font-size:12px}.technology-directory a span:last-child{color:var(--color-blue)}.error-page{padding-bottom:70px;color:var(--color-muted);font-size:17px}.error-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}dialog{padding:28px;border:1px solid var(--color-rule);border-radius:10px;color:var(--color-ink);background:var(--color-paper)}dialog::backdrop{background:rgba(8,15,25,.7)}html:has(dialog[open]){overflow:hidden}.search-dialog{width:min(700px,100% - 32px);max-height:calc(100dvh - 40px)}.search-dialog__heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.search-dialog__heading h2{margin:0;font-size:27px;letter-spacing:-0.7px}.search-dialog input{width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--color-rule);border-radius:6px;background:var(--color-paper);font-size:16px}.search-dialog input::placeholder{color:var(--color-muted)}.search-status{margin:18px 0;font-size:13px;color:var(--color-muted)}.search-results{margin-bottom:24px}.search-result{display:grid;grid-template-columns:90px 1fr;gap:18px;padding:20px 0;border-bottom:1px solid var(--color-rule)}.search-result img{width:90px;height:66px;border-radius:5px;object-fit:cover}.search-result h3{font-size:17px;line-height:1.45;margin:0}.search-result p{margin:8px 0 0;font-size:13px;color:var(--color-muted)}.image-zoom{display:block;padding:0;margin:28px auto;border:0;background:rgba(0,0,0,0);cursor:zoom-in}.image-zoom img{margin:0}.image-dialog{max-width:calc(100% - 32px);max-height:calc(100dvh - 32px);padding:12px}.image-dialog img{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 100px);margin:12px auto 0;object-fit:contain}.image-dialog button{display:block;margin-left:auto}@media(max-width: 820px){.about-contact{align-items:flex-start;flex-direction:column}.topic-directory{gap:24px}.topic-directory h2{font-size:23px}.technology-directory ul{grid-template-columns:repeat(2, minmax(0, 1fr))}.about-badges{grid-template-columns:repeat(3, minmax(0, 1fr))}.post-meta{gap:12px 18px}.post-author{width:100%}}@media(max-width: 580px){.about-contact{padding:23px}.topic-directory{grid-template-columns:1fr;gap:27px;padding-top:25px}.topic-directory__item+.topic-directory__item{padding-top:27px;border-top:1px solid var(--color-rule)}.technology-directory ul{grid-template-columns:1fr}.article-toc{padding:17px;font-size:14px}.page-heading{padding:34px 0 28px}.page-heading h1,.post-heading h1{font-size:35px;letter-spacing:-1.2px}.page-lead{font-size:16px}.about-portrait{float:none;display:block;width:165px;height:165px;margin:0 0 25px}.about-intro,.prose{font-size:16px}.about-timeline__item{grid-template-columns:1fr;gap:8px}.about-badges{grid-template-columns:repeat(2, minmax(0, 1fr));gap:12px}.about-badge{padding:18px 10px}.post-layout{padding-top:26px}.breadcrumbs{margin-bottom:25px}.post-heading{margin-bottom:30px}.prose h2{font-size:25px}.prose h3{font-size:21px}pre{padding:15px;font-size:12px}.post-share a,.text-button{display:inline-flex;align-items:center;min-height:44px}.search-dialog{padding:22px}.search-result{grid-template-columns:65px 1fr;gap:14px}.search-result img{width:65px;height:52px}}.password-tool{max-width:800px;margin-right:auto;margin-left:auto;border:1px solid var(--color-rule);border-radius:8px;padding:30px}.password-output output{display:block;min-height:66px;padding:10px 0 22px;font:25px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere;user-select:all}.password-actions{display:flex;flex-wrap:wrap;gap:12px}.password-status{min-height:22px;margin:14px 0 8px;font-size:13px;color:var(--color-blue)}.password-strength{height:4px;border-radius:2px;overflow:hidden;background:var(--color-rule)}.password-strength span{display:block;width:0;height:100%;background:var(--color-blue)}.password-strength[data-level="0"] span{width:20%}.password-strength[data-level="1"] span{width:45%}.password-strength[data-level="2"] span{width:75%}.password-strength[data-level="3"] span{width:100%}.password-estimate{margin:10px 0 25px;font-size:12px;color:var(--color-muted)}.password-settings{border-top:1px solid var(--color-rule);padding-top:26px}.password-length{display:grid;grid-template-columns:1fr 75px;align-items:center;gap:15px 24px}.password-length label,.password-characters legend{font-size:14px;font-weight:500}.password-length input[type=number]{width:75px;min-height:44px;padding:8px 10px;border:1px solid var(--color-rule);border-radius:5px;background:var(--color-paper);font-size:16px}.password-length input[type=range]{grid-column:1/-1;width:100%;min-height:32px;margin:0;accent-color:var(--color-blue)}.password-length small{grid-column:1/-1;color:var(--color-muted);font-size:12px}.password-characters{display:flex;flex-direction:column;gap:6px;margin:28px 0 0;padding:0;border:0}.password-characters legend{margin-bottom:14px}.password-characters label{display:flex;align-items:center;gap:10px;min-height:44px;font-size:14px;cursor:pointer}.password-characters input{width:18px;height:18px;margin:0;accent-color:var(--color-blue)}.password-characters label span{margin-left:auto;font:12px ui-monospace,monospace;color:var(--color-muted)}.tool-explanation{margin-top:50px;padding-top:28px;border-top:1px solid var(--color-rule)}.tool-explanation>h2{margin-top:0;margin-bottom:25px;font-size:27px;letter-spacing:-0.6px}.tool-facts{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:28px}.tool-facts h3{font-size:19px;margin:10px 0}.tool-facts p{font-size:14px;line-height:1.8;color:var(--color-muted)}.tool-notice{padding:20px;background:var(--color-blue-wash)}@media(max-width: 580px){.password-tool{padding:22px 18px}.password-output output{font-size:21px}.password-characters label{flex-wrap:wrap}.password-characters label span{margin-left:28px}.tool-facts{grid-template-columns:1fr;gap:20px}.password-actions .button{width:100%}}.projects-page,.tools-page{padding-bottom:55px}.project-card{display:grid;grid-template-columns:minmax(0, 1.3fr) minmax(0, 1fr);align-items:center;gap:55px;padding:15px 0 35px}.project-card__visual,.project-detail__visual{display:block;overflow:hidden;border:1px solid var(--color-rule);border-radius:9px;background:var(--color-code)}.project-card__visual img{display:block;width:100%;aspect-ratio:16/9;object-fit:contain}.project-browser{display:flex;align-items:center;gap:5px;height:27px;padding:0 12px;border-bottom:1px solid var(--color-rule);background:var(--color-code)}.project-browser span{width:5px;height:5px;border-radius:50%;background:var(--color-muted);opacity:.45}.project-card__copy .home-eyebrow{font-size:10px}.project-card__copy h2,.project-card__copy h3{margin:0 0 18px;font-size:32px;letter-spacing:-0.9px}.project-card__copy h2 a,.project-card__copy h3 a{display:inline-block}.project-card__copy>p:not(.home-eyebrow){max-width:400px;margin-bottom:26px;font-size:16px;line-height:1.85;color:var(--color-muted)}.project-card+.project-card{padding-top:40px;border-top:1px solid var(--color-rule)}.project-contact{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:15px;margin-top:40px;padding:25px 0;border-top:1px solid var(--color-rule)}.project-contact p{margin:0;font-size:16px}.project-detail{padding-bottom:45px}.project-heading{max-width:900px;margin:0 auto;padding:35px 0}.project-heading h1{margin:0;font-size:clamp(38px,5vw,56px);line-height:1.12;letter-spacing:-1.8px}.project-heading .button{margin-top:24px}.project-detail__visual img{display:block;width:100%;height:auto}.project-facts{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:28px;padding:28px 0;margin:0 0 20px;border-bottom:1px solid var(--color-rule)}.project-facts dt{margin-bottom:9px;font-size:11px;color:var(--color-muted)}.project-facts dd{margin:0;font-size:14px;line-height:1.7}.project-gallery{max-width:900px;margin:44px auto 0}.project-gallery h2{margin:0 0 12px;font-size:28px;letter-spacing:-0.6px}.project-gallery__intro{margin:0 0 25px;font-size:15px;color:var(--color-muted)}.project-gallery__grid{display:grid;grid-template-columns:minmax(0, 1fr) 200px;align-items:start;gap:32px}.project-gallery__item{min-width:0;margin:0}.project-gallery__frame{overflow:hidden;border:1px solid var(--color-rule);border-radius:8px;background:var(--color-code)}.project-gallery__frame img{display:block;width:100%;height:auto}.project-gallery .image-zoom{width:100%;margin:0}.project-gallery__item--mobile .project-gallery__frame{padding:5px;border-radius:17px}.project-gallery figcaption{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:5px 12px;margin-top:12px;font-size:12px;color:var(--color-muted)}.project-gallery figcaption a{display:inline-flex;align-items:center;gap:5px;min-height:44px;color:var(--color-blue)}.project-results{max-width:900px;padding:32px;margin:44px auto 0;border-radius:9px;background:var(--color-blue-wash)}.project-results .home-eyebrow{margin-bottom:10px;color:var(--color-blue)}.project-results h2{margin:0 0 26px;font-size:28px;letter-spacing:-0.6px}.project-results ul{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:28px;padding:0;margin:0;list-style:none}.project-results h3{margin:0 0 10px;font-size:18px;letter-spacing:-0.3px}.project-results li p{margin:0;font-size:14px;line-height:1.8;color:var(--color-muted)}.client-strip{padding:30px 0;border-top:1px solid var(--color-rule)}.client-strip__inner{display:flex;align-items:center;justify-content:space-between;gap:35px}.client-strip .home-eyebrow{margin-bottom:9px}.client-strip h2{margin:0;font-size:22px;letter-spacing:-0.6px}.client-strip__brands{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:16px;padding:0;margin:0;list-style:none}.client-strip__brands a{display:grid;place-items:center;width:156px;min-height:80px;padding:11px 13px;border:1px solid var(--color-rule);border-radius:6px;background:#fff}.client-strip__brands a:hover{outline:1px solid var(--color-blue)}.client-strip__brands img{display:block;width:128px;height:56px;object-fit:contain}.tool-card{display:flex;align-items:center;gap:26px;padding:28px;border:1px solid var(--color-rule);border-radius:9px}.tool-card__icon{display:grid;place-items:center;width:65px;height:65px;flex-shrink:0;border-radius:12px;background:var(--color-blue-wash);color:var(--color-blue)}.tool-card__copy{flex:1}.tool-card .home-eyebrow{margin-bottom:9px;font-size:10px;letter-spacing:1px}.tool-card h2,.tool-card h3{margin:0 0 10px;font-size:22px;letter-spacing:-0.5px}.tool-card p:last-child{margin-bottom:0;font-size:14px;color:var(--color-muted);line-height:1.8}.tool-card .button{flex-shrink:0}@media(max-width: 820px){.project-card{grid-template-columns:1fr;gap:25px}.project-card__copy>p:not(.home-eyebrow){max-width:620px}.project-facts{grid-template-columns:repeat(2, minmax(0, 1fr))}.tool-card{flex-wrap:wrap}.tool-card .button{margin-left:91px}}@media(max-width: 580px){.site-nav{gap:10px;justify-content:space-between}.project-card{padding-top:0}.project-card__copy h2,.project-card__copy h3{font-size:28px}.project-card__copy>p:not(.home-eyebrow){font-size:15px}.project-heading{padding:25px 0}.project-facts{gap:22px 16px}.project-gallery{margin-top:32px}.project-gallery__grid{grid-template-columns:1fr;gap:26px}.project-gallery__item--mobile{width:100%;max-width:240px;justify-self:center}.project-results{padding:25px;margin-top:32px}.project-results ul{grid-template-columns:1fr;gap:22px}.project-results li+li{padding-top:22px;border-top:1px solid var(--color-rule)}.client-strip__inner{align-items:flex-start;flex-direction:column;gap:23px}.client-strip__brands{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));width:100%;max-width:328px}.client-strip__brands a{width:100%}.client-strip__brands img{width:100%;max-width:128px}.tool-card{padding:23px;gap:18px}.tool-card__icon{width:48px;height:48px}.tool-card__copy{flex-basis:calc(100% - 70px)}.tool-card h2,.tool-card h3{font-size:20px}.tool-card .home-eyebrow{font-size:9px}.tool-card .button{margin-left:0}}.home-jump-nav{display:flex;align-items:center;gap:24px;padding:8px 0;border-top:1px solid var(--color-rule)}.home-jump-nav p{margin:0;color:var(--color-muted);font-size:11px;letter-spacing:1px;text-transform:uppercase}.home-jump-nav ul{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:32px;flex:1;padding:0;margin:0;list-style:none}.home-jump-nav a{display:inline-flex;align-items:center;gap:12px;min-height:44px;font-size:13px}.home-jump-nav span{color:var(--color-blue)}.home-section{padding:56px 0}.home-articles{padding-top:36px}.home-section__header{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:34px}.home-section__header h2{margin:0;font-size:clamp(27px,3vw,34px);line-height:1.2;letter-spacing:-1px}.home-section__header .section-link{min-height:44px;flex-shrink:0;color:var(--color-blue)}.home-section__label{display:flex;align-items:center;gap:12px;margin-bottom:14px;color:var(--color-blue);font-size:11px;font-weight:500;letter-spacing:1.4px;text-transform:uppercase}.home-section__label span{font-variant-numeric:tabular-nums}.home-articles .article-grid{padding-bottom:0}.home-projects{border-block:1px solid var(--color-rule);background:var(--color-code)}.home-projects .project-card:last-child{padding-bottom:0}.home-tools{background:var(--color-blue-wash)}.home-tools__inner{display:grid;grid-template-columns:minmax(0, 0.8fr) minmax(0, 1.7fr);align-items:center;gap:64px}.home-tools .home-section__header{flex-direction:column;align-items:flex-start;gap:18px;margin-bottom:0}.home-tools .tool-card{background:var(--color-paper)}.home-tools__list{display:grid;gap:20px;min-width:0}@media(max-width: 1024px){.home-tools__inner{grid-template-columns:1fr;gap:0}.home-tools .home-section__header{flex-direction:row;align-items:flex-end;gap:28px;margin-bottom:34px}}@media(max-width: 580px){.home-jump-nav{gap:0}.home-jump-nav p{display:none}.home-jump-nav ul{justify-content:space-between;gap:8px}.home-jump-nav a{gap:7px;font-size:12px}.home-section{padding:38px 0}.home-articles{padding-top:28px}.home-section__header,.home-tools .home-section__header{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:24px}.home-section__header h2{max-width:340px;font-size:28px;letter-spacing:-0.8px}.home-section__label{margin-bottom:11px;font-size:10px}.home-tools .tool-card{flex-direction:column;align-items:flex-start}.home-tools .tool-card__copy{flex-basis:auto}}.highlight .c,.highlight .c1,.highlight .cm,.highlight .cp,.highlight .cs{color:var(--color-muted);font-style:italic}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt,.highlight .o,.highlight .ow{color:var(--color-blue);font-weight:600}.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#a12b59}.highlight .m,.highlight .mi,.highlight .mf,.highlight .mh,.highlight .mo,.highlight .il,.highlight .na,.highlight .nb,.highlight .nc,.highlight .nf,.highlight .nn,.highlight .nt,.highlight .nv{color:#345b91}.highlight .gd{background:#ffe8e8;color:#9e2020}.highlight .gi{background:#e2f2e7;color:#246333}[data-theme=dark] .highlight .s,[data-theme=dark] .highlight .s1,[data-theme=dark] .highlight .s2,[data-theme=dark] .highlight .sb,[data-theme=dark] .highlight .sc,[data-theme=dark] .highlight .sd,[data-theme=dark] .highlight .se,[data-theme=dark] .highlight .sh,[data-theme=dark] .highlight .si,[data-theme=dark] .highlight .sr,[data-theme=dark] .highlight .ss,[data-theme=dark] .highlight .sx{color:#f5a2c3}[data-theme=dark] .highlight .m,[data-theme=dark] .highlight .mi,[data-theme=dark] .highlight .mf,[data-theme=dark] .highlight .mh,[data-theme=dark] .highlight .mo,[data-theme=dark] .highlight .il,[data-theme=dark] .highlight .na,[data-theme=dark] .highlight .nb,[data-theme=dark] .highlight .nc,[data-theme=dark] .highlight .nf,[data-theme=dark] .highlight .nn,[data-theme=dark] .highlight .nt,[data-theme=dark] .highlight .nv{color:#a7c6f5}