:root{--font-body: "Inter", "Inter Fallback", -apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display: var(--font-body);--font-polaroid: var(--font-body);--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-receipt: "VT323", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--type-size-body: .875rem;--type-size-mini: .75rem;--type-size-label: var(--type-size-mini);--type-size-big: var(--type-size-body);--type-size-heading: clamp(1.25rem, 5.5vw, 1.875rem);--type-tracking-heading: -.035em;--type-line-height-heading: 1.2;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-strong: 600;--font-weight-light: var(--font-weight-normal);--font-weight-semibold: var(--font-weight-medium);--font-weight-bold: var(--font-weight-medium);--font-weight-display: var(--font-weight-normal);--type-weight-regular: var(--font-weight-normal);--type-weight-bold: var(--font-weight-medium);--type-weight-heavy: var(--font-weight-medium);--font-letter-spacing-tight: -.031em;--type-letter-spacing-tight: var(--font-letter-spacing-tight);--line-height-tight: 1.4;--line-height-normal: 1.4;--line-height-relaxed: 1.55;--type-line-height-big: 1.2;--type-line-height-body: var(--line-height-relaxed);--type-line-height-title: var(--type-line-height-big)}.markdown-viewer pre code span[class~=token]{color:var(--color-syntax-variable, #24292f)!important;font-style:normal!important;font-weight:400!important}.markdown-viewer pre code .token.comment,.markdown-viewer pre code .token.prolog,.markdown-viewer pre code .token.doctype,.markdown-viewer pre code .token.cdata{color:var(--color-syntax-comment, #6e7781)!important;font-style:italic!important}.markdown-viewer pre code .token.punctuation{color:var(--color-syntax-punctuation, #57606a)!important}.markdown-viewer pre code .token.keyword,.markdown-viewer pre code .token.operator,.markdown-viewer pre code .token.atrule,.markdown-viewer pre code .token.control,.markdown-viewer pre code .token.directive,.markdown-viewer pre code .token.directive-hash,.markdown-viewer pre code .token.macro,.markdown-viewer pre code .token.macro.property,.markdown-viewer pre code .token.important{color:var(--color-syntax-keyword, #cf222e)!important;font-weight:var(--font-weight-medium, 500)!important}.markdown-viewer pre code .token.string,.markdown-viewer pre code .token.char,.markdown-viewer pre code .token.attr-value,.markdown-viewer pre code .token.regex,.markdown-viewer pre code .token.entity,.markdown-viewer pre code .token.url{color:var(--color-syntax-string, #0a3069)!important}.markdown-viewer pre code .token.number,.markdown-viewer pre code .token.boolean,.markdown-viewer pre code .token.constant{color:var(--color-syntax-number, #0550ae)!important}.markdown-viewer pre code .token.function,.markdown-viewer pre code .token.class-name,.markdown-viewer pre code .token.builtin{color:var(--color-syntax-function, #8250df)!important}.markdown-viewer pre code .token.property,.markdown-viewer pre code .token.tag,.markdown-viewer pre code .token.selector,.markdown-viewer pre code .token.attr-name,.markdown-viewer pre code .token.variable,.markdown-viewer pre code .token.parameter{color:var(--color-syntax-tag, #116329)!important}.markdown-viewer pre code .token.inserted{color:var(--color-syntax-inserted, #116329)!important}.markdown-viewer pre code .token.deleted{color:var(--color-syntax-deleted, #82071e)!important}:root{--media-image-bg: color-mix(in srgb, var(--color-text-muted) 12%, var(--color-bg));--media-image-shimmer-mid: color-mix(in srgb, var(--color-text-muted) 24%, var(--color-bg))}.media-image{position:relative;display:block;overflow:hidden;box-sizing:border-box}.media-image:not(.media-image--loaded):not(.media-image--error):not(.media-image--dismissed){background:var(--media-image-bg)}.media-image--loaded,.media-image--dismissed{background:transparent}.media-image--fill{position:absolute;inset:0;width:100%;height:100%}.media-image--inline{display:inline-block;vertical-align:inherit;line-height:0;min-width:1.5rem;min-height:1em}.media-image__shimmer{position:absolute;inset:0;z-index:1;pointer-events:none;background:var(--media-image-shimmer-mid)}@media(hover:hover)and (pointer:fine)and (min-width:861px){.media-image__shimmer{background:linear-gradient(90deg,var(--media-image-bg) 0%,var(--media-image-shimmer-mid) 45%,var(--media-image-bg) 90%);background-size:200% 100%;animation:media-image-shimmer 1.35s ease-in-out infinite}}.media-image--loaded .media-image__shimmer,.media-image--error .media-image__shimmer,.media-image--dismissed .media-image__shimmer{display:none}.media-image--loading .media-image__shimmer{display:block}.media-image__error{position:absolute;inset:0;z-index:3;display:none;align-items:center;justify-content:center;box-sizing:border-box;margin:0;padding:.75rem;border:none;border-radius:0;background:var(--media-image-bg);color:var(--color-text);font:inherit;font-family:var(--font-body);font-size:var(--type-size-mini);font-weight:var(--type-weight-medium);line-height:1.25;text-align:center;letter-spacing:.01em;pointer-events:none;-webkit-user-select:none;user-select:none}.media-image--error .media-image__error{display:flex;min-height:100%}.media-image--error{cursor:pointer}.media-image__error[hidden]{display:none!important}.media-image--error:focus-visible{outline:2px solid var(--color-secondary);outline-offset:2px}.media-image--inline .media-image__error{font-size:var(--type-size-body);padding:.25rem}.media-image__img{display:block;width:auto;height:auto;max-width:100%;opacity:1}.media-image--fill .media-image__img{width:100%;height:100%}.media-image--inline .media-image__img{width:auto;height:100%}.media-image--error .media-image__img,.media-image--dismissed .media-image__img{opacity:0;pointer-events:none}@keyframes media-image-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media(prefers-reduced-motion:reduce){.media-image__shimmer{animation:none!important}}.media-image--decorative-bg:not(.media-image--loaded){background:transparent!important}.media-image--decorative-bg .media-image__shimmer{display:none!important}.media-image--decorative-bg .media-image__img{opacity:0;transition:opacity var(--dur-deliberate) ease-out}.media-image--decorative-bg.media-image--loaded .media-image__img{opacity:var(--decorative-bg-opacity, .18)}@media(prefers-reduced-motion:reduce){.media-image--decorative-bg .media-image__img{transition:none}}@media(hover:none),(pointer:coarse),(max-width:860px){html body :is(button,a.ed3__appbar-link,a.ed3__social,a.ed3-footer__channel,button.ui-link-action,a.ui-link-action.no-magnet,a.highlight-load-more-btn,button.highlight-load-more-btn,.btn-text){-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;touch-action:manipulation}html body :is(button,a.ed3__appbar-link,a.ed3__social,a.ed3-footer__channel,button.ui-link-action,a.ui-link-action.no-magnet,a.highlight-load-more-btn,button.highlight-load-more-btn){user-select:none;-webkit-user-select:none}html body :is([role=button],[role=switch],[role=tab],[role=menuitem],[role=img],summary,label,a:not(:is(p,li,blockquote,td,th,dd,figcaption) a),.ed3-acc__row,.idx__grid,.ed3-evo-eras,.ed3-evo__version-label,.ed3-evo__head,.tkt-card,.mhint,.ed3-live-viewers,.ed3-footer__channels,.ed3__section-tabs,.ed3-blog-tabs,.ed3-tip-trigger,.expand-section-actions){user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}html body .chrome-sandwich-menu-item:is(:hover,:focus,:focus-visible,:active){background:var(--color-bg)!important;background-color:var(--color-bg)!important;outline:none!important;color:var(--type-link-color)!important}html body button.ui-link-action:is(:hover,:focus,:focus-visible,:active),html body a.ui-link-action.no-magnet:is(:hover,:focus,:focus-visible,:active),html body :is(button,a).highlight-load-more-btn:is(:hover,:focus,:focus-visible,:active){background:transparent!important;background-color:transparent!important;outline:none!important;box-shadow:none!important}html body :is(.hero-highlight-link,a.hero-highlight-link,span.hero-highlight-link){-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}html body :is(.hero-highlight-link,a.hero-highlight-link,span.hero-highlight-link):is(:hover,:focus,:focus-visible,:active,.link-highlight-active),html body :is(a,button):is(:hover,:focus,:focus-visible,:active) .hero-highlight-link:not(.link-highlight-active){outline:none!important;filter:none!important}html body .magnetic-hover,html body .global-magnetic-hover,html body button.magnetic-hover,html body a.magnetic-hover{transform:none!important;will-change:auto!important}html body .magnetic-hover:hover,html body .magnetic-hover:focus:not(:focus-visible),html body .global-magnetic-hover:hover,html body .global-magnetic-hover:focus:not(:focus-visible),html body button.magnetic-hover:hover,html body button.magnetic-hover:focus:not(:focus-visible),html body a.magnetic-hover:hover,html body a.magnetic-hover:focus:not(:focus-visible){background-color:transparent!important;background:transparent!important}.polaroid-wrapper:hover{transform:scale(var(--polaroid-live-wrapper-scale, 1))!important}.polaroid-wrapper:hover .polaroid-frame{transform:rotate(var(--polaroid-live-rotation, var(--polaroid-rotation, 0deg))) scale(var(--polaroid-live-frame-scale, 1))!important;box-shadow:var(--polaroid-card-shadow)!important}.polaroid-wrapper:hover .polaroid-frame.polaroid-loaded{transform:rotate(var(--polaroid-live-rotation, var(--polaroid-rotation, 0deg))) scale(var(--polaroid-live-frame-scale, 1))!important}html body :is(button,a).highlight-load-more-btn:hover,html body :is(button,a).highlight-load-more-btn:focus-visible{background:transparent!important;background-color:transparent!important}.markdown-viewer tbody tr:hover{background-color:transparent!important}}@media(hover:hover)and (pointer:fine)and (min-width:861px){html body :is(.magnetic-hover,a.magnetic-hover,button.magnetic-hover,.global-magnetic-hover,a.global-magnetic-hover,button.global-magnetic-hover){transform:translate(var(--magnet-x, 0px),var(--magnet-y, 0px))!important;transition:color var(--link-transition-duration) var(--link-transition-ease),background-color 0s,transform 0s,scale var(--dur-fast) var(--ease-out)!important}html body :is(.magnetic-hover,a.magnetic-hover,button.magnetic-hover,.global-magnetic-hover,a.global-magnetic-hover,button.global-magnetic-hover):not(.appbar-pill):not(.no-magnet):not(.highlight-load-more-btn):not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.link-preview-trigger.hero-highlight-link):is(:hover,:focus-visible){background:var(--type-link-hover-bg)!important;background-color:var(--type-link-hover-bg)!important;border-radius:var(--radius-magnet-hit)!important}html body a.ed3__appbar-link.magnetic-hover,html body a.ed3__appbar-link.magnetic-hover:is(:hover,:focus-visible,:active),html body a.ed3__social.magnetic-hover,html body a.ed3__social.magnetic-hover:is(:hover,:focus-visible,:active),html body a.ed3-footer__channel.magnetic-hover,html body a.ed3-footer__channel.magnetic-hover:is(:hover,:focus-visible,:active),html body a.ed3-orb.magnetic-hover,html body a.ed3-orb.magnetic-hover:is(:hover,:focus-visible,:active),html body button.ed3-orb.magnetic-hover,html body button.ed3-orb.magnetic-hover:is(:hover,:focus-visible,:active){--radius-magnet-hit: var( --ed3-radius-magnet, var(--ed3-appbar-magnet-radius, var(--ed3-appbar-glass-radius, 1.35rem)) );border-radius:var(--radius-magnet-hit)!important;corner-shape:initial}html body :is(.no-magnet,button.no-magnet):is(:hover,:focus-visible),html body :is(button,a).highlight-load-more-btn:is(:hover,:focus-visible){background:transparent!important;background-color:transparent!important}html body :is(a,button):has(.hero-highlight-hit):is(:hover,:focus-visible),html body :is(a,button):has(.hero-highlight-link):not(.hero-highlight-link):is(:hover,:focus-visible),html body :is(a,button).highlight-load-more-btn:is(:hover,:focus-visible){background:transparent!important;background-color:transparent!important}html body :is(a.hero-highlight-link,span.hero-highlight-link,button.hero-highlight-link):is(:hover,:focus-visible,.link-highlight-active),html body :is(a.hero-highlight-link,span.hero-highlight-link,button.hero-highlight-link):is(:hover,:focus-visible,.link-highlight-active):visited,html body :is(a,button):focus-visible:has(.hero-highlight-hit) .hero-highlight-link,html body :is(a,button):focus-visible:has(.hero-highlight-link):not(.hero-highlight-link) .hero-highlight-link{color:var(--hero-highlight-ink, var(--color4))!important;-webkit-text-fill-color:var(--hero-highlight-ink, var(--color4))!important;background:var(--hero-highlight-bg)!important;background-color:var(--hero-highlight-bg)!important;border-radius:0!important;filter:none!important;opacity:1!important;text-decoration:none!important}}@media(hover:none),(pointer:coarse),(max-width:860px){html body a:hover:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn):not(.ed3__appbar-link--current):not(.ed3__nav-row--current),html body a:focus-visible:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn):not(.ed3__appbar-link--current):not(.ed3__nav-row--current),html body a[class]:hover:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn):not(.ed3__appbar-link--current):not(.ed3__nav-row--current),html body a[class]:focus-visible:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn):not(.ed3__appbar-link--current):not(.ed3__nav-row--current),html body button:hover:not([data-view-selected=true]),html body button:focus-visible:not([data-view-selected=true]){background:transparent!important;background-color:transparent!important}html body a.ui-link-action:hover:not(:focus-visible),html body button.ui-link-action:hover:not(:focus-visible){background-color:transparent!important}html body :is(a,button):has(.hero-highlight-hit):is(:hover,:focus-visible),html body :is(a,button):has(.hero-highlight-link):not(.hero-highlight-link):is(:hover,:focus-visible),html body :is(a,button).highlight-load-more-btn:is(:hover,:focus-visible){background:transparent!important;background-color:transparent!important}html body .hero-highlight-link:hover,html body a.hero-highlight-link:hover,html body a.hero-highlight-link.link-highlight-active,html body a.hero-highlight-link:visited.link-highlight-active{filter:none!important}html body a.hero-highlight-link.link-highlight-active:not(:focus-visible){color:var(--color1)!important;-webkit-text-fill-color:var(--color1)!important;background-color:var(--hero-highlight-bg)!important}html body a.global-magnetic-hover:hover,html body a.global-magnetic-hover:focus-visible,html body button.global-magnetic-hover:hover,html body button.global-magnetic-hover:focus-visible,html body .magnetic-hover:hover,html body .magnetic-hover:focus-visible{transform:none!important;--magnet-x: 0px !important;--magnet-y: 0px !important;background-color:transparent!important}html body :is(a,button):has(.hero-highlight-hit):not(:has(.hero-highlight-link)),html body :is(a,button).hero-highlight-link:not(:has(.hero-highlight-hit)){color:var(--color-text)!important;background-color:transparent!important}html body a.hero-highlight-link:is(:hover,:focus,:focus-visible,:active):not(.link-highlight-active),html body :is(.hero-highlight-link,span.hero-highlight-link):is(:hover,:focus,:focus-visible,:active):not(.link-highlight-active),html body :is(a,button):is(:hover,:focus,:focus-visible,:active) .hero-highlight-link:not(:hover):not(:focus-visible):not(.link-highlight-active){color:var(--hero-highlight-ink, var(--color1))!important;-webkit-text-fill-color:var(--hero-highlight-ink, var(--color1))!important;background:var(--hero-highlight-bg)!important;background-color:var(--hero-highlight-bg)!important;filter:none!important;opacity:1!important}}@media(hover:none),(pointer:coarse),(max-width:860px){html body .credits-link:hover,html body .credits-link:focus:not(:focus-visible){opacity:1!important}html body a.imessage-source-link:hover,html body a.imessage-source-link:focus:not(:focus-visible){background:transparent!important;opacity:1!important}}@media(hover:none),(pointer:coarse),(max-width:860px){html body a.global-magnetic-hover:active,html body button.global-magnetic-hover:active,html body a.magnetic-hover:active,html body button.magnetic-hover:active,html body .magnetic-hover:active{scale:1!important}html body .visitors:not(.visitors--glass-embed) .visitors-marker:not(.visitors-marker--tip-open) .visitors-marker-pin:active .visitors-marker-avatar{transform:none!important}}:root{--palette-appbar-glass-bg: color-mix(in srgb, var(--color4) 28%, transparent);--palette-appbar-glass-border: color-mix(in srgb, var(--color3) 22%, var(--color4) 78%);--palette-appbar-glass-highlight: color-mix(in srgb, var(--color4) 62%, transparent);--palette-appbar-pill-bg: #ffffff;--palette-imessage-blue: #007aff;--palette-imessage-on-blue: #ffffff;--palette-imessage-yellow: #ffcc00;--palette-imessage-on-yellow: #000000;--palette-imessage-outgoing: var(--highlight-red);--palette-imessage-on-outgoing: var(--color4);--palette-imessage-gray: color-mix(in srgb, var(--color3) 82%, var(--color1) 10%);--palette-imessage-on-gray: var(--color1);--palette-imessage-gray-border: color-mix(in srgb, var(--color3) 62%, var(--color1) 16%);--palette-imessage-gray-highlight: var(--color1);--palette-imessage-highlight: var(--color1);--palette-imessage-highlight-ink: var(--color4);--palette-browser-bg: var(--color4);--palette-browser-bar: color-mix(in srgb, var(--color1) 8%, var(--color4) 92%);--palette-card-glass: color-mix(in srgb, var(--color4) 84%, transparent);--palette-card-shadow: 0 14px 34px color-mix(in srgb, var(--color1) 14%, transparent);--palette-live-dot: var(--highlight-red);--palette-traffic-close: #ff5f57;--palette-traffic-minimize: #febc2e;--palette-traffic-maximize: #28c840;--palette-globe-space: color-mix(in srgb, var(--color3) 28%, var(--color4) 72%)}.ed3-dock{--ed3-max: 800px;--ed3-pad: 2rem;--ed3-rail-gap: .375rem;--ed3-pad-text: calc(var(--ed3-pad) + var(--ed3-rail-gap))}.ed3__chrome .ed3__appbar,.ed3-dock{--ed3-bg: #fafafa;--ed3-ink: #0e0e0e;--ed3-soft: #666666;--ed3-meta: #9f9f9f;--ed3-surface: #ffffff;--ed3-accent: var(--color2, #fd010c);--ed3-size: var(--type-size-mini);--ed3-leading: 1.571;--ed3-font: var(--font-body);--ed3-radius-glass: 1.35rem;--ed3-radius-magnet: .35rem;--ed3-radius-pill: 999px;--ed3-radius-round: 50%;--ed3-rule: #00000014;--ed3-chrome-dock-pad: .25rem;--ed3-chrome-dock-radius: .65rem;--ed3-chrome-hit: 1.5rem;--ed3-chrome-glass-h: calc(var(--ed3-chrome-hit) + 2 * var(--ed3-chrome-dock-pad) + 2px);--ed3-appbar-glass-pad: var(--ed3-chrome-dock-pad);--ed3-appbar-glass-pad-block: var(--ed3-chrome-dock-pad);--ed3-appbar-glass-pad-inline: var(--ed3-chrome-dock-pad);--ed3-appbar-glass-radius: var(--ed3-chrome-dock-radius);--ed3-appbar-magnet-radius: calc(var(--ed3-chrome-dock-radius) - var(--ed3-chrome-dock-pad));--ed3-appbar-control-h: var(--ed3-chrome-hit);--ed3-appbar-kbd-size: .875rem;--ed3-appbar-kbd-glyph: .75rem;--radius-keycap: 3px;--ed3-appbar-hit-pad-inline: .375rem;--ed3-appbar-pill-bg: transparent;--ed3-appbar-current-bg: var(--ed3-surface, #ffffff);--ed3-appbar-current-shadow: 0 0 0 .5px color-mix(in srgb, var(--ed3-ink) 6%, transparent), 0 1px 1.5px color-mix(in srgb, var(--ed3-ink) 12%, transparent);--radius-link-preview-card: var(--ed3-radius-magnet);--radius-link-preview-thumb: var(--ed3-radius-magnet);--ed3-space-2: .5rem;--ed3-space-3: .75rem;--type-link-hover-bg: var(--chrome-hover-plate)}.ed3-dock{display:inline-flex;align-items:center;font-family:var(--ed3-font);font-size:var(--ed3-size);font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}:is(.ed3__appbar,.ed3-dock) .ed3__appbar-glass-shell{pointer-events:auto;display:inline-flex;flex:0 0 auto;align-items:stretch;max-width:100%;min-width:0;height:var(--ed3-chrome-glass-h);border-radius:var(--ed3-appbar-glass-radius, var(--ed3-chrome-dock-radius));overflow:hidden}:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav{pointer-events:auto;box-sizing:border-box;position:relative;z-index:1;display:flex;flex-wrap:nowrap;align-items:center;gap:var(--ed3-step-4, .25rem);min-width:0;height:100%;min-height:var(--ed3-chrome-glass-h);max-height:var(--ed3-chrome-glass-h);padding:var(--ed3-appbar-glass-pad);overflow:hidden;border-radius:inherit}:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-link{--radius-magnet-hit: var(--ed3-appbar-magnet-radius, .46rem);display:inline-flex;align-items:center;justify-content:center;gap:.25rem;box-sizing:border-box;height:var(--ed3-appbar-control-h);min-height:var(--ed3-appbar-control-h);max-height:var(--ed3-appbar-control-h);padding:0 var(--ed3-appbar-hit-pad-inline);margin:0;font-size:var(--ed3-size, .875rem);font-weight:400;line-height:1;text-decoration:none;border-radius:var(--radius-magnet-hit);color:var(--ed3-ink);background:transparent;background-color:transparent;transition:background-color var(--dur-quick) ease,scale var(--dur-fast) var(--ease-out)}:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-link__label{min-width:0;line-height:1}:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-kbd{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:var(--ed3-appbar-kbd-size, .875rem);min-width:var(--ed3-appbar-kbd-size, .875rem);height:var(--ed3-appbar-kbd-size, .875rem);padding:0;box-sizing:border-box;font-family:inherit;font-size:var(--ed3-appbar-kbd-glyph, .75rem);font-weight:500;line-height:1;color:var(--ed3-ink);border:1px solid color-mix(in srgb,var(--ed3-ink) 12%,transparent);border-radius:var(--radius-keycap, 4px);background:color-mix(in srgb,var(--ed3-ink) 6%,transparent);box-shadow:none;letter-spacing:normal;pointer-events:none;-webkit-user-select:none;user-select:none}:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-link:hover,:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-link:focus-visible,:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-link:active{color:var(--ed3-ink);background:var(--type-link-hover-bg)!important;background-color:var(--type-link-hover-bg)!important}:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-link--current,:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-link--current:hover,:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-link--current:focus-visible,:is(.ed3__appbar,.ed3-dock) .ed3__appbar-nav .ed3__appbar-link--current:active{color:var(--ed3-ink);background:var(--ed3-appbar-current-bg)!important;background-color:var(--ed3-appbar-current-bg)!important;box-shadow:var(--ed3-appbar-current-shadow)}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-group(blog-hero){z-index:10;animation-duration:.42s;animation-timing-function:cubic-bezier(.4,0,.2,1)}::view-transition-image-pair(blog-hero){isolation:auto}::view-transition-old(blog-hero),::view-transition-new(blog-hero){width:100%;height:100%;object-fit:cover;overflow:hidden;mix-blend-mode:normal;animation-duration:.42s;animation-timing-function:cubic-bezier(.4,0,.2,1)}::view-transition-old(blog-hero){animation-name:blog-hero-old}::view-transition-new(blog-hero){animation-name:blog-hero-new}@keyframes blog-hero-old{0%,to{opacity:1}}@keyframes blog-hero-new{0%,to{opacity:1}}:root[data-hero-morph-back]::view-transition-new(blog-hero){animation-name:blog-hero-new-back}@keyframes blog-hero-new-back{0%,70%{opacity:0}to{opacity:1}}.hero-ink-decal{position:fixed;image-rendering:pixelated;pointer-events:none}::view-transition-group(blog-hero-ink){z-index:11;animation-duration:.42s;animation-timing-function:cubic-bezier(.4,0,.2,1)}::view-transition-image-pair(blog-hero-ink){isolation:auto}::view-transition-old(blog-hero-ink),::view-transition-new(blog-hero-ink){width:100%;height:100%;object-fit:cover;overflow:hidden;mix-blend-mode:normal;image-rendering:pixelated;animation-duration:.42s;animation-timing-function:cubic-bezier(.4,0,.2,1)}::view-transition-old(blog-hero-ink){animation-name:blog-hero-ink-lift}::view-transition-new(blog-hero-ink){animation-name:blog-hero-ink-none}@keyframes blog-hero-ink-lift{0%{opacity:1}to{opacity:0}}@keyframes blog-hero-ink-none{0%,to{opacity:0}}[data-hero-flight]{border-radius:0!important}.ed3-article__banner-figure.ed3-polaroid{transition:background-color .26s ease,box-shadow .26s ease}.ed3-article__banner-figure.ed3-polaroid .ed3-polaroid__well:after{transition:box-shadow .26s ease}.ed3-article__banner-figure.ed3-polaroid:has([data-hero-flight]){background-color:transparent;box-shadow:none;transition:none}.ed3-article__banner-figure.ed3-polaroid:has([data-hero-flight]) .ed3-polaroid__well:after{box-shadow:none;transition:none}.ed3-acc__thumb .dither-image__canvas,.ed3-article__banner .dither-image__canvas{transition:opacity .26s ease}[data-hero-flight] .dither-image__canvas{opacity:0!important;transition:none}[data-hero-flight] .dither-image:not(.dither-image--has-poster) .dither-image__img{opacity:1!important}[data-hero-flight] .dither-image--pending[data-media-image-svelte]>.dither-image__img,[data-hero-flight] .dither-image--settling[data-media-image-svelte]>.dither-image__img{opacity:1!important;transition:none!important}[data-hero-flight] .dither-image--pending[data-media-image-svelte],[data-hero-flight] .dither-image--settling[data-media-image-svelte],[data-hero-landing] .dither-image--pending[data-media-image-svelte],[data-hero-landing] .dither-image--settling[data-media-image-svelte]{background:transparent!important}[data-hero-landing] .dither-image--pending[data-media-image-svelte]>.dither-image__img,[data-hero-landing] .dither-image--settling[data-media-image-svelte]>.dither-image__img,[data-hero-landing] .dither-image--pending[data-media-image-svelte]>.dither-image__canvas,[data-hero-landing] .dither-image--settling[data-media-image-svelte]>.dither-image__canvas{opacity:1!important}.ed3-article__banner[data-hero-flight]{background:transparent}@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}.media-zoom{position:fixed;inset:0;z-index:var(--z-media-zoom);outline:none}.media-zoom__backdrop{position:absolute;inset:0;background:color-mix(in oklab,var(--color-bg) 94%,transparent);opacity:0;transition:opacity var(--dur-slow) var(--ease-out)}.media-zoom[data-state=open] .media-zoom__backdrop{opacity:1}.media-zoom__img{position:absolute;margin:0;max-width:none;transform-origin:center;box-shadow:0 0 0 1px color-mix(in srgb,var(--color-border) 55%,transparent);transition:transform var(--dur-slow) var(--ease-out),box-shadow var(--dur-slow) var(--ease-out);will-change:transform}.media-zoom[data-state=open] .media-zoom__img{box-shadow:0 0 0 1px color-mix(in srgb,var(--color-border) 55%,transparent),0 1.5rem 3rem -1rem #00000038}.media-zoom__img[data-zoom-bare]{box-shadow:none;filter:drop-shadow(0 1.25rem 2rem rgb(0 0 0 / 0));transition:transform var(--dur-slow) var(--ease-out),filter .32s var(--ease-out) var(--dur-slow)}.media-zoom[data-state=open] .media-zoom__img[data-zoom-bare]{box-shadow:none;filter:drop-shadow(0 1.25rem 2rem rgb(0 0 0 / .24))}.media-zoom[data-state=closing] .media-zoom__img[data-zoom-bare]{filter:drop-shadow(0 1.25rem 2rem rgb(0 0 0 / 0));transition-delay:0s}.media-zoom--scroll{overflow:hidden auto;overscroll-behavior:contain;scrollbar-width:none}.media-zoom--scroll::-webkit-scrollbar{display:none}.media-zoom__frame{position:absolute;will-change:transform}.media-zoom__frame .media-zoom__img{position:absolute;inset:0;width:100%;height:100%}.media-zoom__cloth{position:absolute;display:block;opacity:0;transition:opacity .26s var(--ease-out);cursor:grab;touch-action:none}.media-zoom__cloth--in{opacity:1}.media-zoom__cloth--held{cursor:grabbing}.media-zoom--cloth .media-zoom__frame .media-zoom__img{opacity:0;transition:opacity .26s var(--ease-out)}@media(prefers-reduced-motion:reduce){.media-zoom__cloth,.media-zoom--cloth .media-zoom__frame .media-zoom__img{transition:none}}.media-zoom--scroll .media-zoom__backdrop{position:fixed}.media-zoom--scroll:after{content:"";display:block;height:var(--media-zoom-scroll-h, 100vh)}.media-zoom__frost,.media-zoom__frost *{pointer-events:none}.media-zoom__frost{position:fixed;right:0;left:0;z-index:2;height:var(--scroll-edge-blur-height, 5rem);overflow:hidden}.media-zoom__frost--top{top:0}.media-zoom__frost--bottom{bottom:0}.media-zoom__frost-layer{position:absolute;inset:0;backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur));mask-image:var(--mask);-webkit-mask-image:var(--mask)}@media(prefers-reduced-transparency:reduce){.media-zoom__frost{display:none}}.media-zoom__video{object-fit:contain;border-radius:var(--ed3-media-radius, 0px);background:#000}.media-zoom[data-state=closing] .media-zoom__backdrop{opacity:0}.is-media-zoomed{visibility:hidden}@media(prefers-reduced-motion:reduce){.media-zoom__backdrop,.media-zoom__img{transition:none}.media-zoom__backdrop{opacity:1}}@keyframes ed3-enter-develop{0%{opacity:0;filter:blur(4px)}}.ed3-enter{animation:ed3-enter-develop var(--dur-medium, .3s) var(--ease-out) backwards;animation-delay:var(--enter-delay, 0ms)}@keyframes ed3-enter-swing{0%{opacity:0;transform:translateY(10px) rotate(-1.4deg);filter:blur(2px)}}.ed3-enter-swing{animation:ed3-enter-swing .4s var(--ease-out) backwards;animation-delay:var(--enter-delay, 0ms);transform-origin:0% 50%}@keyframes ed3-enter-swing-sharp{0%{opacity:0;transform:translateY(10px) rotate(-1.4deg)}}.ed3-enter-swing--sharp{animation-name:ed3-enter-swing-sharp}@media(prefers-reduced-motion:reduce){.ed3-enter,.ed3-enter-swing,.ed3-enter-swing--sharp{animation:none}}:root{--section-bar-height: 70px;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-right: env(safe-area-inset-right, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px);--site-chrome-stack: calc(var(--section-bar-height) + 1px);--z-scatter: 5000;--z-portal-panel: 10000;--z-raised-card: 100000;--z-raised-card-overlay: calc(var(--z-raised-card) + 1);--z-media-zoom: calc(var(--z-raised-card-overlay) + 1);--z-site-header: calc(var(--z-media-zoom) + 2);--z-scroll-edge-blur-top: calc(var(--z-site-header) - 2);--z-kevin: calc(var(--z-site-header) - 1);--z-globe-stage: calc(var(--z-site-header) - 10);--z-scroll-edge-blur: 90;--scroll-edge-blur-height: 5rem;--z-tooltip: calc(var(--z-site-header) + 50);--z-matt-gpt: calc(var(--z-tooltip) + 1);--z-kevin-front: calc(var(--z-matt-gpt) + 5);--z-kevin-confetti: calc(var(--z-matt-gpt) + 10);--z-cursor: calc(var(--z-matt-gpt) + 100);--ed3-announce-height: 0px;--ed3-announce-visible: 0px;--ed3-announce-progress: 0;--ed3-announce-body-h: 1.95rem;--dur-instant: 90ms;--dur-fast: .14s;--dur-quick: .18s;--dur-base: .22s;--dur-medium: .3s;--dur-slow: .42s;--dur-deliberate: .56s;--dur-showpiece: .78s;--dur-hover: var(--dur-fast);--dur-hover-motion: var(--dur-base);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-out-soft: cubic-bezier(.33, 1, .68, 1);--ease-out-circ: cubic-bezier(0, .55, .45, 1);--ease-out-pop: cubic-bezier(.22, 1.28, .36, 1);--ease-out-back: cubic-bezier(.34, 1.56, .64, 1);--ease-in: cubic-bezier(.55, 0, 1, .45);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-in-out-soft: cubic-bezier(.4, .3, .6, .7);--ease-emphasized: cubic-bezier(.2, 0, 0, 1);--ease-glide: cubic-bezier(.32, .72, 0, 1);--ease-anticipate: cubic-bezier(.625, .05, 0, 1);--site-max-width: 1350px;--visitors-shell-max: var(--site-max-width);--grid-content-padding: 20px;--page-content-inline: calc(var(--grid-content-padding) + clamp(1.2rem, 2vw, 1.85rem));--grid-line-color: color-mix(in srgb, var(--color-divider) 44%, var(--color-bg));--grid-dash: 5px;--grid-dash-gap: 4px;--grid-dash-period: calc(var(--grid-dash) + var(--grid-dash-gap));--grid-dashed-h: repeating-linear-gradient( to right, var(--grid-line-color) 0 var(--grid-dash), transparent var(--grid-dash) var(--grid-dash-period) );--grid-dashed-v: repeating-linear-gradient( to bottom, var(--grid-line-color) 0 var(--grid-dash), transparent var(--grid-dash) var(--grid-dash-period) );--color-primary: var(--color1);--color-secondary: var(--color2);--color-white: var(--color4);--color-bg: #ffffff;--color-bg-hover: color-mix(in srgb, #ffffff 88%, #e8e8e8 12%);--color-text: var(--color1);--color-text-heading: var(--color1);--color-ink-soft: color-mix(in srgb, var(--color-text) 74%, white);--color-ink-muted: color-mix(in srgb, var(--color-text) 38%, white);--color-ink-faint: color-mix(in srgb, var(--color-text) 24%, white);--color-text-muted: var(--color-ink-muted);--color-border: var(--color3);--color-shadow-md: color-mix(in srgb, var(--color1) 18%, transparent);--color-code-text: var(--color1);--color-polaroid-bg: #ffffff;--color-polaroid-shadow-sm: color-mix(in srgb, black 4%, transparent);--color-polaroid-shadow-md: color-mix(in srgb, black 7%, transparent);--polaroid-mat-pad-inline: .375rem;--polaroid-mat-pad-top: .375rem;--polaroid-mat-pad-before-caption: .3125rem;--polaroid-caption-margin-top: .5625rem;--polaroid-caption-pad: 0 .12rem .25rem;--polaroid-caption-line-height: 1.45;--color-syntax-text: var(--color-text);--color-syntax-comment: var(--color-text-muted);--color-syntax-punctuation: color-mix( in srgb, var(--color-text) 72%, var(--color-text-muted) 28% );--color-syntax-keyword: var(--color-text);--color-syntax-string: color-mix(in srgb, var(--color-text) 82%, var(--color-text-muted) 18%);--color-syntax-number: color-mix(in srgb, var(--color-text) 68%, var(--color-text-muted) 32%);--color-syntax-function: var(--color-text);--color-syntax-tag: color-mix(in srgb, var(--color-text) 90%, var(--color-border) 10%);--color-syntax-variable: color-mix(in srgb, var(--color-text) 78%, var(--color-text-muted) 22%);--color-syntax-deleted: var(--color-text-muted);--color-syntax-inserted: var(--color-text);--color-divider: var(--color-border);--color-focus-ring: color-mix(in srgb, var(--color-primary) 68%, var(--color-text) 32%);--color-button-bg: transparent;--color-button-text: var(--color-text-muted);--color-button-border: color-mix(in srgb, var(--color-border) 85%, transparent);--color-button-hover-bg: color-mix(in srgb, var(--color-primary) 9%, transparent);--color-button-hover-border: var(--color-primary);--color-button-hover-text: var(--color-primary);--color-nav-hover-bg: transparent;--chrome-hover-plate: color-mix(in srgb, var(--ed3-ink, #0e0e0e) 7%, transparent);--radius-surface: 0;--radius-inner: 0;--radius-ui-button: 0;--radius-magnet-hit: 0;--ed3-chrome-reserve: 2.75rem;--magnet-cell-min-height: 1.125rem;--magnet-cell-kbd-size: 1rem;--radius-keycap: 4px;--color-keycap-bg: color-mix(in srgb, #ffffff 88%, #e8e8e8 12%);--color-keycap-border: color-mix(in srgb, var(--color-border) 42%, transparent);--color-keycap-text: color-mix(in srgb, var(--color-text) 88%, var(--color4) 12%);--type-color-strong: var(--color-text);--type-link-color: var(--color-text);--type-link-color-hover: var(--color-text);--type-link-hover-bg: var(--color-nav-hover-bg);--type-link-radius: 0;--type-external-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 11.5 11.5 4.5'/%3E%3Cpath d='M6.5 4.5h5v5'/%3E%3C/svg%3E");--type-unknown-favicon-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.25'%3E%3Ccircle cx='8' cy='8' r='6.4'/%3E%3Cpath d='M1.6 8h12.8'/%3E%3Cpath d='M8 1.6c3 3.4 3 9.4 0 12.8-3-3.4-3-9.4 0-12.8z'/%3E%3C/svg%3E");--type-link-action-underline-offset: .22em;--type-link-inline-underline-thickness: 1.5px;--type-link-inline-underline-offset: .22em;--type-hover-underline-thickness: 1.5px;--type-hover-underline-offset: .22em;--type-link-underline-rest-color: var(--ed3-meta, #9f9f9f);--type-link-underline-hover-color: var(--ed3-body, #27272a);--type-link-underline-sweep-duration: 0s;--type-link-underline-sweep-ease: linear;--theme-transition-duration: var(--dur-base);--theme-transition-ease: var(--ease-emphasized);--link-transition-duration: var(--dur-base);--link-transition-ease: var(--ease-out);--button-transition-duration: var(--dur-base);--button-transition-ease: var(--ease-emphasized);--transition-theme: background-color var(--theme-transition-duration) var(--theme-transition-ease), color var(--theme-transition-duration) var(--theme-transition-ease), border-color var(--theme-transition-duration) var(--theme-transition-ease);--color-focus-ring: color-mix(in srgb, var(--color-secondary) 78%, var(--color-primary) 22%);--color-button-hover-text: var(--color-secondary);--color-button-hover-border: var(--color-secondary)}:root:has(.ed3__announce){--ed3-announce-height: calc( max(.55rem, var(--safe-area-top, 0px), env(safe-area-inset-top, 0px)) + var(--ed3-announce-body-h) );--ed3-announce-visible: var(--ed3-announce-height);--ed3-announce-progress: 0}@media(max-width:860px){:root{--scroll-edge-blur-height: 0px;--page-gutter: clamp(1rem, 4.2vw, 1.25rem);--page-content-inline: max(var(--page-gutter), var(--safe-area-left), var(--safe-area-right));--mobile-site-header-bar: calc(clamp(3.15rem, 13vw, 3.75rem) + 1.75rem) ;--mobile-site-header-stack: calc(var(--safe-area-top) + var(--mobile-site-header-bar));--appbar-safe-top: env(safe-area-inset-top, var(--appbar-safe-top-fallback, 0px));--mobile-fixed-appbar-inner-top: .55rem;--mobile-appbar-fixed-top: calc(var(--appbar-safe-top) + var(--mobile-fixed-appbar-inner-top))}html:not(.ios-scroll-inset-fix),html:not(.ios-scroll-inset-fix) body{margin:0;padding:0}.site-header-wrapper{position:fixed!important;top:0!important;left:0;right:0;width:100%;height:auto;min-height:0;overflow:visible;margin:0;padding:0!important;z-index:var(--z-site-header);box-sizing:border-box;isolation:auto;background:transparent;pointer-events:none}.site-header-wrapper .appbar-mobile-bar,.site-header-wrapper .appbar-glass,.site-header-wrapper .chrome-sandwich,.site-header-wrapper .chrome-sandwich-toggle,.site-header-wrapper .chrome-sandwich-panel{pointer-events:auto}.layout-wrapper:not(.is-ed3-page){padding-inline:max(var(--page-gutter),var(--safe-area-left)) max(var(--page-gutter),var(--safe-area-right))}.layout-wrapper.is-ed3-page{padding-inline:0}html{scroll-padding-top:var(--mobile-site-header-stack)}}@property --mark-alpha{syntax: "<number>"; inherits: false; initial-value: .65;}@property --row-slide{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --row-alpha{syntax: "<number>"; inherits: false; initial-value: 0;}@property --media-lift{syntax: "<number>"; inherits: false; initial-value: 1;}@property --media-mx{syntax: "<length>"; inherits: true; initial-value: 0px;}@property --media-my{syntax: "<length>"; inherits: true; initial-value: 0px;}:root{--row-slide-to: 2px;--row-slide-steps: 4}@media(max-resolution:1.49dppx){:root{--row-slide-steps: 2}}html body a[target=_blank]:not(.no-external-mark):not(:has(img,svg,picture,video)):after{content:"";display:inline-block;width:1em;height:1em;margin-inline-start:.08em;vertical-align:-.125em;background-color:currentcolor;mask-image:var(--type-external-mark);mask-repeat:no-repeat;mask-size:100% 100%;-webkit-mask-image:var(--type-external-mark);-webkit-mask-repeat:no-repeat;-webkit-mask-size:100% 100%;opacity:var(--mark-alpha);transition:--mark-alpha .15s ease}@media(hover:hover)and (pointer:fine){html body a[target=_blank]:not(.no-external-mark):not(:has(img,svg,picture,video)):hover:after{--mark-alpha: 1}}html body a[target=_blank]:not(.no-external-mark):not(:has(img,svg,picture,video)):focus-visible:after{--mark-alpha: 1;transition:none}html body a,html body a:link,html body a:visited,html body a:hover,html body a:focus-visible,html body a:active,html body a[class],html body a[class]:link,html body a[class]:visited,html body .ui-link-inline,html body .ui-link-inline:link,html body .ui-link-inline:visited,html body a.ui-link-inline,html body a.ui-link-inline:link,html body a.ui-link-inline:visited{color:var(--type-link-color)!important;text-decoration:none!important;text-decoration-line:none!important;background:none!important;box-shadow:none!important;border-radius:var(--type-link-radius);transition:color var(--link-transition-duration) var(--link-transition-ease),background-color var(--link-transition-duration) var(--link-transition-ease)}html body a.ed3__announce,html body a.ed3__announce:link,html body a.ed3__announce:visited,html body a.ed3__announce:hover,html body a.ed3__announce:focus-visible,html body a.ed3__announce:active{color:#fff!important;background:var(--ed3-accent, var(--color2, #fd010c))!important;background-color:var(--ed3-accent, var(--color2, #fd010c))!important;background-image:none!important;text-decoration:none!important;text-decoration-line:none!important;box-shadow:none!important;border-radius:0!important;filter:none!important;opacity:1!important;font-family:var( --ed3-font, -apple-system, system-ui, "Helvetica Neue", Arial, sans-serif )!important;font-size:var(--ed3-size, .875rem)!important;font-weight:400!important;cursor:pointer!important;transition:none!important}html body a.ed3__appbar-link,html body a.ed3__appbar-link:link,html body a.ed3__appbar-link:visited,html body a.ed3__appbar-link:hover,html body a.ed3__appbar-link:focus-visible,html body a.ed3__appbar-link:active,html body a.ed3__appbar-link.ed3__appbar-link--current,html body a.ed3__appbar-link.ed3__appbar-link--current:link,html body a.ed3__appbar-link.ed3__appbar-link--current:visited,html body a.ed3__appbar-link.ed3__appbar-link--current:hover,html body a.ed3__appbar-link.ed3__appbar-link--current:focus-visible,html body a.ed3__appbar-link.ed3__appbar-link--current:active{color:var(--ed3-ink, #0e0e0e)!important;transition:background-color var(--dur-quick) ease,scale var(--dur-fast) var(--ease-out)!important}html body a.ed3__social,html body a.ed3__social:link,html body a.ed3__social:visited,html body a.ed3__social:hover,html body a.ed3__social:focus-visible,html body a.ed3__social.ed3__social--copied,html body a.ed3-footer__channel,html body a.ed3-footer__channel:link,html body a.ed3-footer__channel:visited,html body a.ed3-footer__channel:hover,html body a.ed3-footer__channel:focus-visible,html body a.ed3-footer__channel.ed3-footer__channel--copied{color:var(--ed3-ink, #0e0e0e)!important;transition:background-color var(--dur-quick) ease,scale var(--dur-fast) var(--ease-out)!important}html body :is(a.ed3-link,button.ed3-link,button.imessage-expand-btn,a.imessage-source-link,.ed3-article__body .markdown-viewer a[href]:not(.md-heading-anchor),.ed3-article__series-nav a,.ed3-thoughts__copy .thought-markdown-snippet a,u){display:inline;max-width:100%;padding:0;border-radius:0;opacity:1!important;cursor:pointer;border-bottom:none!important;background:none!important;background-color:transparent!important;background-image:none!important;text-decoration-line:underline!important;text-decoration-style:var(--type-link-inline-underline-style, solid)!important;text-decoration-thickness:var(--type-link-inline-underline-thickness)!important;text-underline-offset:var(--type-link-inline-underline-offset)!important;text-decoration-color:var(--type-link-underline-rest-color)!important;transition:text-decoration-color var(--type-link-underline-sweep-duration) var(--type-link-underline-sweep-ease)!important}html body :is(a.ed3-link,button.ed3-link,button.imessage-expand-btn,a.imessage-source-link,.ed3-article__body .markdown-viewer a[href]:not(.md-heading-anchor),.ed3-article__series-nav a,.ed3-thoughts__copy .thought-markdown-snippet a,u):is(:focus-visible,.link-highlight-active){opacity:1!important;color:var(--color-text)!important;background:none!important;background-color:transparent!important;background-image:none!important;text-decoration-line:underline!important;text-decoration-color:var(--type-link-underline-hover-color)!important}@media(hover:hover)and (pointer:fine){html body :is(a.ed3-link,button.ed3-link,button.imessage-expand-btn,a.imessage-source-link,.ed3-article__body .markdown-viewer a[href]:not(.md-heading-anchor),.ed3-article__series-nav a,.ed3-thoughts__copy .thought-markdown-snippet a,u):hover{opacity:1!important;color:var(--color-text)!important;background:none!important;background-color:transparent!important;background-image:none!important;text-decoration-line:underline!important;text-decoration-color:var(--type-link-underline-hover-color)!important}}html body a.ed3-link,html body a.ed3-link:link,html body a.ed3-link:visited,html body button.ed3-link{display:inline!important}html body :is(a.ed3-link,button.ed3-link){color:var(--color-text)!important}html body button.ed3-link{color:var(--color-text)!important;font:inherit;appearance:none;border:0;padding:0;margin:0;background:transparent;cursor:pointer}html body a.ui-link-action,html body a.ui-link-action:link,html body a.ui-link-action:visited,html body button.ui-link-action,html body button.ui-link-action:link,html body button.ui-link-action:visited{color:var(--color-text)!important;text-decoration-line:underline!important;text-decoration-style:var(--type-link-inline-underline-style, solid)!important;text-decoration-thickness:var(--type-link-inline-underline-thickness)!important;text-underline-offset:var(--type-link-action-underline-offset)!important;text-decoration-color:transparent!important;border-bottom:none!important;background:none!important;background-color:transparent!important;background-image:none!important;transition:text-decoration-color var(--type-link-underline-sweep-duration) var(--type-link-underline-sweep-ease)!important}@media(hover:hover)and (pointer:fine){html body a.ui-link-action:hover,html body button.ui-link-action:hover{color:var(--color-text)!important;opacity:1!important;text-decoration-line:underline!important;text-decoration-color:var(--type-link-underline-hover-color)!important;border-bottom:none!important;background:none!important;background-color:transparent!important;background-image:none!important}}html body a.ui-link-action:focus-visible,html body button.ui-link-action:focus-visible{color:var(--color-text)!important;opacity:1!important;text-decoration-line:underline!important;text-decoration-color:var(--type-link-underline-hover-color)!important;border-bottom:none!important;background:none!important;background-color:transparent!important;background-image:none!important}@property --magnet-x{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --magnet-y{syntax: "<length>"; inherits: false; initial-value: 0px;}html body a.global-magnetic-hover,html body button.global-magnetic-hover,html body a.magnetic-hover,html body button.magnetic-hover,html body .magnetic-hover{--magnet-x: 0px;--magnet-y: 0px;transform:translate(var(--magnet-x),var(--magnet-y));border-radius:var(--radius-magnet-hit)!important;scale:1;transition:scale var(--dur-fast) var(--ease-out)}html body a.global-magnetic-hover:active,html body button.global-magnetic-hover:active,html body a.magnetic-hover:active,html body button.magnetic-hover:active,html body .magnetic-hover:active{scale:var(--magnet-press-scale, .92)}@media(prefers-reduced-motion:reduce){html body a.global-magnetic-hover,html body button.global-magnetic-hover,html body a.magnetic-hover,html body button.magnetic-hover,html body .magnetic-hover{transition:none}html body a.global-magnetic-hover:active,html body button.global-magnetic-hover:active,html body a.magnetic-hover:active,html body button.magnetic-hover:active,html body .magnetic-hover:active{scale:1}}@media(hover:hover)and (pointer:fine){html body :is(a.imessage-source-link,a.ed3-link,button.ed3-link,button.imessage-expand-btn,.ed3-article__body .markdown-viewer a[href]:not(.md-heading-anchor),.ed3-article__series-nav a,.ed3-thoughts__copy .thought-markdown-snippet a,u):is(:hover,:focus-visible,.link-highlight-active){opacity:1!important;color:var(--color-text)!important;background:none!important;background-color:transparent!important;background-image:none!important;text-decoration-line:underline!important;text-decoration-color:var(--type-link-underline-hover-color)!important}}@media(hover:hover)and (pointer:fine)and (min-width:861px){html body a:hover:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn):not(.ui-link-inline):not(.ed3-link):not(.ed3__appbar-link):not(.ed3__announce),html body a:focus-visible:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn):not(.ui-link-inline):not(.ed3-link):not(.ed3__appbar-link):not(.ed3__announce),html body a[class]:hover:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn):not(.ui-link-inline):not(.ed3-link):not(.ed3__appbar-link):not(.ed3__announce),html body a[class]:focus-visible:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn):not(.ui-link-inline):not(.ed3-link):not(.ed3__appbar-link):not(.ed3__announce){color:var(--type-link-color-hover)!important;background-color:var(--type-link-hover-bg)!important}html body a.global-magnetic-hover:hover:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn),html body a.global-magnetic-hover:focus-visible:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):not(.no-magnet):not(.highlight-load-more-btn),html body button.global-magnetic-hover:hover:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.no-magnet):not(.highlight-load-more-btn),html body button.global-magnetic-hover:focus-visible:not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.no-magnet):not(.highlight-load-more-btn){background-color:var(--type-link-hover-bg)!important;border-radius:var(--radius-magnet-hit)!important}html body :is(.magnetic-hover,a.magnetic-hover,button.magnetic-hover):not(.ui-link-action):not(.no-magnet):not(.highlight-load-more-btn):not(:has(.hero-highlight-hit)):not(:has(.hero-highlight-link)):not(.hero-highlight-link):is(:hover,:focus-visible){background-color:var(--type-link-hover-bg)!important;border-radius:var(--radius-magnet-hit)!important;transition:color var(--link-transition-duration) var(--link-transition-ease),background-color 0s,transform 0s,scale var(--dur-fast) var(--ease-out)}}html body a.ed3__appbar-link.magnetic-hover,html body a.ed3__appbar-link.magnetic-hover:is(:hover,:focus-visible,:active),html body a.ed3__social.magnetic-hover,html body a.ed3__social.magnetic-hover:is(:hover,:focus-visible,:active),html body a.ed3-footer__channel.magnetic-hover,html body a.ed3-footer__channel.magnetic-hover:is(:hover,:focus-visible,:active),html body a.ed3-orb.magnetic-hover,html body a.ed3-orb.magnetic-hover:is(:hover,:focus-visible,:active),html body button.ed3-orb.magnetic-hover,html body button.ed3-orb.magnetic-hover:is(:hover,:focus-visible,:active){--radius-magnet-hit: var( --ed3-appbar-magnet-radius, var(--ed3-radius-pill, var(--ed3-radius-magnet, .35rem)) );border-radius:var(--radius-magnet-hit)!important;corner-shape:initial}.content-wrapper .btn-text-arrow{display:none!important}html body a,html body a:link,html body a:visited,html body a:hover,html body a:focus-visible,html body a:active,html body a[class],html body a[class]:hover,html body a[class]:focus-visible{cursor:pointer}a:not(.hero-highlight-link):before,a:not(.hero-highlight-link):not(.ed3-acc__left--link):not([target=_blank]):after,button.ui-link-action:before,button.ui-link-action:after{display:none!important;content:none!important}@media(max-width:640px){:root{--page-gutter: clamp(1rem, 4.2vw, 1.25rem);--page-content-inline: max(var(--page-gutter), var(--safe-area-left), var(--safe-area-right))}}.expand-section-item--hidden{display:none!important}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}.skip-to-main{position:fixed;top:.5rem;left:.5rem;z-index:calc(var(--z-site-header) + 100);padding:.5rem .75rem;border-radius:var(--radius-surface);background:var(--color-bg);color:var(--color-text);border:1px solid var(--grid-line-color);font:inherit;font-size:var(--type-size-body);text-decoration:none;transform:translateY(-200%);opacity:0;pointer-events:none;transition:transform var(--dur-fast) ease,opacity var(--dur-fast) ease}.skip-to-main:focus{transform:translateY(0);opacity:1;pointer-events:auto}.skip-to-main:focus-visible{outline:2px solid var(--color-text);outline-offset:2px}#main-content:focus,#main-content:focus-visible{outline:none}*{box-sizing:border-box;margin:0;padding:0}html{transition:var(--transition-theme);overscroll-behavior-x:none;overscroll-behavior-y:none;-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--color-bg);background-image:none;scroll-padding-bottom:var(--safe-area-bottom)}*{scrollbar-width:none}::-webkit-scrollbar{width:0;height:0;display:none}body{font-family:var(--font-body);font-size:var(--type-size-body);font-weight:var(--type-weight-regular);line-height:var(--type-line-height-body);background-color:var(--color-bg);color:var(--type-color-strong);transition:var(--transition-theme);overscroll-behavior-x:none;overscroll-behavior-y:none;position:relative}@media(min-width:861px){body{overflow-x:hidden}}@media(max-width:860px){html{overflow-x:visible!important;overflow-y:visible!important;height:auto!important;min-height:100%!important}body{overflow-x:visible!important;overflow-y:visible!important;position:static!important;width:100%!important;max-width:100%!important;margin-inline:0!important;margin-bottom:0!important}.content-wrapper{overflow-x:clip!important;overflow-y:visible!important;max-width:100%}.core-route-stack,.core-route-pane,.core-route-pane:not([hidden]){overflow-x:clip!important;overflow-y:visible!important;max-width:100%}.core-route-stack,.core-route-pane,.core-route-pane:not([hidden]){contain:none!important}.site-header-wrapper,.site-footer-wrapper{isolation:auto!important}}:where(h1,h2,h3,h4,h5,h6){font-family:var(--font-body);font-size:var(--type-size-big);font-weight:var(--type-weight-bold);letter-spacing:var(--type-letter-spacing-tight);line-height:var(--type-line-height-title);color:var(--color-text-heading)}p{font-family:var(--font-body);line-height:var(--type-line-height-body);color:var(--color-text)}:where(button){font-family:var(--font-body);font-size:var(--type-size-mini);font-weight:var(--font-weight-medium);letter-spacing:.01em;color:var(--color-button-text);background-color:var(--color-button-bg);border:1px solid var(--color-button-border);border-radius:var(--radius-ui-button);transition:color var(--button-transition-duration) var(--button-transition-ease),border-color var(--button-transition-duration) var(--button-transition-ease),background-color var(--button-transition-duration) var(--button-transition-ease),transform var(--dur-fast) ease}@media(hover:hover)and (pointer:fine){:where(button):hover{color:var(--color-button-hover-text);border-color:var(--color-button-hover-border);background-color:var(--color-button-hover-bg)}}:where(a,button):focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}:where(svg,svg *,[class*=icon],[class*=icon] *):where(:not([data-tech-reveal],[data-tech-reveal] *)){transition:none!important;animation:none!important}body:before,body:after{display:none}.content-wrapper,.site-footer-wrapper{background-color:var(--color-bg);background-image:none}.site-header-wrapper{overflow:visible}@media(min-width:861px){.site-header-wrapper{isolation:isolate}}.site-footer-wrapper{position:relative;isolation:isolate;overflow:visible}.site-header-wrapper>*,.site-footer-wrapper>*{position:relative;z-index:1}.site-footer-wrapper:before{display:none}:where(kbd){font-family:var(--font-body);font-size:var(--type-size-mini);font-weight:var(--font-weight-medium);letter-spacing:.02em;padding:.125rem .375rem;border-radius:var(--radius-keycap);border:1px solid var(--color-keycap-border);background:var(--color-keycap-bg);color:var(--color-keycap-text);box-shadow:inset 0 -1px color-mix(in srgb,var(--color-keycap-border) 60%,transparent)}.kbd-desktop-only{display:inline-flex}@media(max-width:640px){.kbd-desktop-only{display:none!important}}::selection,*::selection{background-color:var(--color2, #fd010c);color:#fff;-webkit-text-fill-color:#ffffff}html body :is(img,picture,video,iframe,canvas,svg){-webkit-user-select:none;user-select:none}html body :is(img,picture,video,iframe,canvas,svg)::selection{background-color:transparent}html body :is(button,[role=button],summary,a.magnetic-hover,a.global-magnetic-hover,.ui-link-action){-webkit-user-select:none;user-select:none}[data-cursor=plus]{cursor:zoom-in}[data-cursor=minus]{cursor:zoom-out}[data-cursor=pointer]{cursor:pointer}.polaroid-image-slot{position:relative;background:var(--color-polaroid-bg);overflow:clip}.polaroid-image-slot>.media-image{display:block;width:100%;height:100%;border-radius:0;background:var(--color-polaroid-bg);overflow:clip}.polaroid-image-slot>.media-image.media-image--loaded,.polaroid-image-slot>.media-image.media-image--dismissed{background:transparent}.polaroid-image-slot>.media-image .media-image__img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.015);transform-origin:center}.polaroid-drag-viewport .polaroid-frame:not(.polaroid-frame--enter-visible) .polaroid-image-slot>.media-image:not(.media-image--loaded):not(.media-image--error){background:var(--color-polaroid-bg)}.polaroid-image-slot>.media-image .media-image__shimmer{background:var(--color-polaroid-bg)}.polaroid-drag-viewport .polaroid-image-slot[data-polaroid-reveal=waiting] .media-image__img{opacity:0!important;filter:grayscale(1)}.polaroid-drag-viewport .polaroid-image-slot[data-polaroid-reveal=waiting] .media-image__shimmer{display:none}.polaroid-drag-viewport .polaroid-image-slot[data-polaroid-reveal=revealed] .media-image__img{opacity:1;filter:grayscale(0)}@keyframes polaroid-splash-anim{0%{opacity:1;transform:scale(0) rotate(var(--rot))}14.3%{opacity:1;transform:scale(1) rotate(var(--rot))}78.6%{opacity:1;transform:scale(1) rotate(var(--rot))}to{opacity:0;transform:scale(1) rotate(var(--rot))}}@media(hover:hover)and (pointer:fine){html body :is(a,button):is(.magnetic-hover,.global-magnetic-hover,.ed3__appbar-link,.chrome-sandwich-menu-item):not(.no-magnet):not(.ed3__social):not(.ed3-footer__channel):not(.appbar-item--icon):not(.appbar-pill):not(.ed3-orb):not(.ed3-glass):not(.ed3-glass *):is(:hover,:focus-visible){text-decoration-line:underline!important;text-decoration-thickness:var(--type-hover-underline-thickness)!important;text-underline-offset:var(--type-hover-underline-offset)!important;text-decoration-color:currentcolor!important;background-color:transparent!important}html body :is(a,button):is(.ed3__social,.ed3-footer__channel,.appbar-item--icon):is(:hover,:focus-visible){color:var(--ed3-ink, #0e0e0e)!important;opacity:1!important;text-decoration-line:none!important}html body :is(a,button):is(.appbar-pill,.ed3-orb,.ed3__social,.ed3-footer__channel,.appbar-item--icon,.chrome-sandwich-menu-item,.ed3__appbar-link):is(:hover,:focus-visible){background-color:var(--chrome-hover-plate)!important;background-image:none!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;transition-delay:0ms!important}html{scroll-behavior:auto!important}}html:has(.ed3__sheet-page .ed3__links-dock--open) .layout-wrapper{height:0!important;min-height:0!important;overflow:clip!important;content-visibility:hidden}html:has(.ed3__sheet-page .ed3__links-dock--open) :is(.ed3__faces-page,.ed3-cursors){visibility:hidden}@media(max-width:860px){@supports (-webkit-touch-callout: none){html.ios-scroll-inset-fix,html.ios-scroll-inset-fix body{overscroll-behavior-y:auto!important}html.ios-scroll-inset-fix{padding-top:1px!important;margin-top:-1px!important}html.ios-scroll-inset-fix body{padding-top:0!important;margin-top:0!important}}html.ios-scroll-inset-fix .layout-wrapper{overflow:visible!important;max-width:100%}html.ios-scroll-inset-fix .content-wrapper{overflow-x:clip!important;overflow-y:visible!important;max-width:100%}html.ios-scroll-inset-fix .core-route-stack,html.ios-scroll-inset-fix .core-route-pane,html.ios-scroll-inset-fix .core-route-pane:not([hidden]){overflow-x:clip!important;overflow-y:visible!important;max-width:100%}html.ios-scroll-inset-fix .visitors-globe-page{overflow-x:clip!important;overflow-y:visible!important;max-width:100%}html.ios-scroll-inset-fix .site-header-wrapper{top:var(--mobile-appbar-fixed-top)!important}html.ios-scroll-inset-fix .site-header-wrapper,html.ios-scroll-inset-fix .site-header{isolation:auto!important;background:transparent!important}html.ios-scroll-inset-fix:not(:has(.ed3__announce)) .ed3__chrome{top:.5rem;bottom:1rem;overflow:clip}html.ios-scroll-inset-fix:not(:has(.ed3__announce)) .ed3__scrim{top:.5rem;bottom:.5rem;height:auto}html.ios-scroll-inset-fix .mgpt{transition:transform var(--dur-slow) var(--ease-glide),visibility 0s linear var(--dur-slow),display var(--dur-slow) allow-discrete}html.ios-scroll-inset-fix .mgpt:not(.mgpt--open){display:none}html.ios-scroll-inset-fix .mgpt--open{transition:transform var(--dur-slow) var(--ease-glide),visibility 0s,display 0s allow-discrete}@starting-style{html.ios-scroll-inset-fix .mgpt.mgpt--open{transform:translate3d(calc(100% + 2rem),0,0)}}html.ios-scroll-inset-fix .ed3-cursors{top:.5rem;bottom:.5rem;overflow:clip}html.ios-scroll-inset-fix .ed3__globe-stage,html.ios-scroll-inset-fix .ed3-heatmap{top:.5rem;bottom:.5rem}html.ios-scroll-inset-fix:not(:has(.ed3__announce)) .ed3__appbar-inner{padding-top:calc(.25rem + max(var(--safe-area-top, 0px),env(safe-area-inset-top,0px)) * var(--ed3-announce-progress, 0))}}.ed3-confetti,.ed3-ink{position:fixed;inset:0;z-index:var(--z-kevin-confetti);overflow:hidden;pointer-events:none}.ed3-confetti__piece{position:absolute;display:block;will-change:transform,opacity}.ed3-ink__blob{position:absolute;display:block;border-radius:50%;background:radial-gradient(circle at 50% 50%,#0e0e0ed9,#0e0e0e8c 45%,#0e0e0e00 72%);will-change:transform,opacity}.kevin-meddle{transition:transform .26s cubic-bezier(.3,1,.4,1),letter-spacing .26s cubic-bezier(.3,1,.4,1)}.kevin-meddle--sag{display:inline-block;transform:translateY(1px) scaleX(.988);transform-origin:0% 50%}.kevin-meddle--gap{visibility:hidden}.ed3-kevin-prints{position:fixed;inset:0;z-index:var(--z-kevin, 5001);overflow:hidden;pointer-events:none}.ed3-kevin-prints__mark{position:absolute;display:block;width:4px;height:2px;background:var(--ed3-ink, #0e0e0e);opacity:0;will-change:transform,opacity}
