.blog-mdx-module__4QSiXq__byline{align-items:center;gap:var(--space-base);margin-top:var(--space-lg);flex-wrap:wrap;display:flex}.blog-mdx-module__4QSiXq__bylineAvatar{object-fit:cover;width:2.5rem;height:2.5rem;box-shadow:var(--shadow-sm);border-radius:50%;flex-shrink:0}.blog-mdx-module__4QSiXq__bylineMeta{flex-direction:column;gap:2px;min-width:0;display:flex}.blog-mdx-module__4QSiXq__bylineName{font-family:var(--font-body), system-ui, sans-serif;font-size:var(--text-sm);color:var(--color-text);font-weight:600;line-height:1.2}.blog-mdx-module__4QSiXq__bylineRole{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-subtle);line-height:1.2}.blog-mdx-module__4QSiXq__bylineDivider{background:var(--color-border);flex-shrink:0;width:1px;height:2rem}.blog-mdx-module__4QSiXq__bylineDate{height:2rem;font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-subtle);align-items:center;line-height:1;display:inline-flex}.blog-mdx-module__4QSiXq__bylineCard{gap:var(--space-sm);margin-top:0}.blog-mdx-module__4QSiXq__bylineCard .blog-mdx-module__4QSiXq__bylineAvatar{width:1.5rem;height:1.5rem}.blog-mdx-module__4QSiXq__bylineCard .blog-mdx-module__4QSiXq__bylineName{font-size:var(--text-caption);color:var(--color-text-subtle);font-weight:600}.blog-mdx-module__4QSiXq__bylineCard .blog-mdx-module__4QSiXq__bylineDate:before{content:"·";margin-right:var(--space-sm);color:var(--color-border)}@media (max-width:480px){.blog-mdx-module__4QSiXq__byline:not(.blog-mdx-module__4QSiXq__bylineCard) .blog-mdx-module__4QSiXq__bylineDivider{display:none}.blog-mdx-module__4QSiXq__byline:not(.blog-mdx-module__4QSiXq__bylineCard) .blog-mdx-module__4QSiXq__bylineDate{margin-top:var(--space-xs);flex-basis:100%}}.blog-mdx-module__4QSiXq__pullQuote{margin-block:var(--space-3xl)}.blog-mdx-module__4QSiXq__pullQuoteRule{background:var(--color-accent);width:3ch;height:1px;margin-bottom:var(--space-base);display:block}.blog-mdx-module__4QSiXq__pullQuoteText{font-family:var(--font-heading), serif;letter-spacing:-.01em;color:var(--color-text);margin:0;font-size:clamp(1.5rem,1rem + 1.5vw,2rem);font-weight:400;line-height:1.25}.blog-mdx-module__4QSiXq__checklist{margin-block:var(--space-3xl)}.blog-mdx-module__4QSiXq__checklistTitle{font-family:var(--font-heading), serif;font-size:var(--text-h3);letter-spacing:-.01em;margin:0 0 var(--space-xl);font-weight:400}.blog-mdx-module__4QSiXq__checklistGrid{border-top:1px solid var(--color-border);display:grid}.blog-mdx-module__4QSiXq__checklistHeader,.blog-mdx-module__4QSiXq__checklistRow{gap:var(--space-base);padding-block:var(--space-base);border-bottom:1px solid var(--color-border-subtle);grid-template-columns:3rem 8rem 1fr 1fr;align-items:baseline;display:grid}.blog-mdx-module__4QSiXq__checklistHeader{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-subtle)}.blog-mdx-module__4QSiXq__checklistNumber{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-sm);color:var(--color-accent);font-feature-settings:"tnum"}.blog-mdx-module__4QSiXq__checklistArea{font-size:var(--text-body);color:var(--color-text);font-weight:600}.blog-mdx-module__4QSiXq__checklistFailure,.blog-mdx-module__4QSiXq__checklistTest{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.55}@media (max-width:640px){.blog-mdx-module__4QSiXq__checklistHeader{display:none}.blog-mdx-module__4QSiXq__checklistRow{gap:var(--space-xs) var(--space-base);padding-block:var(--space-lg);grid-template-columns:2.5rem 1fr;grid-template-areas:"num area""area-pad failure""area-pad test"}.blog-mdx-module__4QSiXq__checklistNumber{grid-area:num}.blog-mdx-module__4QSiXq__checklistArea{grid-area:area}.blog-mdx-module__4QSiXq__checklistFailure{grid-area:failure}.blog-mdx-module__4QSiXq__checklistTest{grid-area:test}.blog-mdx-module__4QSiXq__checklistFailure:before,.blog-mdx-module__4QSiXq__checklistTest:before{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-subtle);margin-bottom:var(--space-xs);display:block}.blog-mdx-module__4QSiXq__checklistFailure:before{content:"What goes wrong"}.blog-mdx-module__4QSiXq__checklistTest:before{content:"How to test"}}.blog-mdx-module__4QSiXq__figure{margin-block:var(--space-3xl)}.blog-mdx-module__4QSiXq__figureMedia{width:100%}:is(.blog-mdx-module__4QSiXq__figureMedia>svg,.blog-mdx-module__4QSiXq__figureMedia>img){width:100%;height:auto;display:block}.blog-mdx-module__4QSiXq__figureCaption{margin-top:var(--space-base);font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-subtle);text-align:left;line-height:1.4}.blog-mdx-module__4QSiXq__comparison{margin-block:var(--space-3xl);border-block:1px solid var(--color-border)}.blog-mdx-module__4QSiXq__comparisonHeader{padding-block:var(--space-md);border-bottom:1px solid var(--color-border-subtle);font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-subtle);grid-template-columns:1fr 1fr;display:grid}.blog-mdx-module__4QSiXq__comparisonHeader>span{padding-inline:var(--space-base)}.blog-mdx-module__4QSiXq__comparisonHeader>span:first-child{border-right:1px solid var(--color-border-subtle);padding-left:0}.blog-mdx-module__4QSiXq__comparisonHeader>span:last-child{padding-right:0}.blog-mdx-module__4QSiXq__comparisonRow{padding-block:var(--space-base);border-bottom:1px solid var(--color-border-subtle);grid-template-columns:1fr 1fr;display:grid}.blog-mdx-module__4QSiXq__comparisonRow:last-child{border-bottom:0}.blog-mdx-module__4QSiXq__comparisonCell{font-size:var(--text-body);color:var(--color-text);padding-inline:var(--space-base);line-height:1.55}.blog-mdx-module__4QSiXq__comparisonCell[data-side=left]{border-right:1px solid var(--color-border-subtle);color:var(--color-text-muted);padding-left:0}.blog-mdx-module__4QSiXq__comparisonCell[data-side=right]{padding-right:0}@media (max-width:640px){.blog-mdx-module__4QSiXq__comparisonHeader{display:none}.blog-mdx-module__4QSiXq__comparisonRow{gap:var(--space-md);padding-block:var(--space-lg);grid-template-columns:1fr}.blog-mdx-module__4QSiXq__comparisonCell{padding-inline:0}.blog-mdx-module__4QSiXq__comparisonCell[data-side=left]{border-right:0}.blog-mdx-module__4QSiXq__comparisonCell:before{content:attr(data-label);font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-subtle);margin-bottom:var(--space-xs);display:block}}.blog-mdx-module__4QSiXq__diagram{width:100%;height:auto;display:block}.blog-mdx-module__4QSiXq__diagramLabel{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.08em;fill:var(--color-text-subtle);dominant-baseline:middle;font-size:11px}.blog-mdx-module__4QSiXq__diagramProject{fill:none;stroke:var(--color-border);stroke-width:1px}.blog-mdx-module__4QSiXq__diagramSlice{fill:var(--color-text)}.blog-mdx-module__4QSiXq__diagramKey{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.06em;fill:var(--color-text-muted);dominant-baseline:middle;font-size:11px}
.page-module__oup-mG__article{padding-block:var(--section-gap-sm) var(--section-gap)}.page-module__oup-mG__header{margin-bottom:var(--space-3xl);position:relative}.page-module__oup-mG__header:after{content:"";background:linear-gradient(to right, var(--color-accent), transparent);width:30%;height:2px;margin-top:var(--space-lg);border-radius:1px;display:block}.page-module__oup-mG__breadcrumb{align-items:center;gap:var(--space-sm);width:fit-content;font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-subtle);margin-bottom:var(--space-xl);transition:color var(--duration-fast) var(--ease-out);text-decoration:none;display:flex}.page-module__oup-mG__breadcrumbArrow{transition:transform var(--duration-normal) var(--ease-out-expo);display:inline-block}.page-module__oup-mG__breadcrumb:hover{color:var(--color-accent)}.page-module__oup-mG__breadcrumb:hover .page-module__oup-mG__breadcrumbArrow,.page-module__oup-mG__breadcrumb:focus-visible .page-module__oup-mG__breadcrumbArrow{transform:translate(-4px)}.page-module__oup-mG__breadcrumb:focus-visible{color:var(--color-accent);outline:none}.page-module__oup-mG__title{font-family:var(--font-heading), serif;font-size:var(--text-display);letter-spacing:-.02em;margin-top:var(--space-lg);font-weight:400}.page-module__oup-mG__description{font-size:var(--text-body);color:var(--color-text-muted);margin-top:var(--space-md)}.page-module__oup-mG__content h2{font-family:var(--font-heading), serif;font-size:var(--text-h2);letter-spacing:-.01em;margin-top:var(--space-3xl);margin-bottom:var(--space-base);font-weight:400}.page-module__oup-mG__content h3{font-family:var(--font-heading), serif;font-size:var(--text-h3);margin-top:var(--space-2xl);margin-bottom:var(--space-md);font-weight:400}.page-module__oup-mG__content p{font-size:var(--text-body);color:var(--color-text-muted);margin-bottom:var(--space-lg);line-height:1.75}.page-module__oup-mG__content a{color:var(--color-accent);text-underline-offset:2px;text-decoration:underline}.page-module__oup-mG__content code{font-family:var(--font-mono), ui-monospace, monospace;background:var(--color-surface);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border-subtle);border-radius:4px;font-size:.875rem}.page-module__oup-mG__content pre{background:var(--color-surface);padding:var(--space-lg);border-radius:var(--card-radius);border:1px solid var(--color-border-subtle);color:var(--color-text-muted);margin-bottom:var(--space-lg);overflow-x:auto}.page-module__oup-mG__content pre code{color:var(--color-text-muted);background:0 0;border:none;padding:0}.page-module__oup-mG__content blockquote{border-left:1px solid var(--color-accent);padding-left:var(--space-lg);margin-block:var(--space-lg);font-style:italic;font-family:var(--font-heading), serif;color:var(--color-text-muted)}.page-module__oup-mG__content ul,.page-module__oup-mG__content ol{padding-left:var(--space-lg);margin-bottom:var(--space-lg);color:var(--color-text-muted)}.page-module__oup-mG__content li{font-size:var(--text-body);margin-bottom:var(--space-sm);line-height:1.75}.page-module__oup-mG__content table{border-collapse:collapse;width:100%;margin-block:var(--space-2xl);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.page-module__oup-mG__content th{text-align:left;padding:var(--space-md) var(--space-base);font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-subtle);border-bottom:1px solid var(--color-border-subtle);vertical-align:bottom;font-weight:500}.page-module__oup-mG__content td{padding:var(--space-md) var(--space-base);border-bottom:1px solid var(--color-border-subtle);color:var(--color-text);vertical-align:top;line-height:1.55;font-size:var(--text-sm)}.page-module__oup-mG__content tbody tr:last-child td{border-bottom:0}.page-module__oup-mG__content th:first-child,.page-module__oup-mG__content td:first-child{padding-left:0}.page-module__oup-mG__content th:last-child,.page-module__oup-mG__content td:last-child{padding-right:0}.page-module__oup-mG__content th+th,.page-module__oup-mG__content td+td{border-left:1px solid var(--color-border-subtle)}
.page-module__6QJiaa__section{padding-block:var(--section-gap-sm) var(--section-gap);background-image:radial-gradient(color-mix(in oklch, var(--color-text) 4%, transparent) 1px, transparent 1px);background-size:24px 24px}.page-module__6QJiaa__heading{font-family:var(--font-heading), serif;font-size:var(--text-display);letter-spacing:-.02em;padding-left:var(--space-xl);font-weight:400;position:relative}.page-module__6QJiaa__heading:before{content:"";background:color-mix(in oklch, var(--color-primary) 30%, transparent);border-radius:2px;width:3px;height:100%;position:absolute;top:0;left:0}.page-module__6QJiaa__subheading{font-size:var(--text-body);color:var(--color-text-muted);margin-top:var(--space-md);margin-bottom:var(--space-3xl)}.page-module__6QJiaa__empty{color:var(--color-text-subtle);font-size:var(--text-body)}.page-module__6QJiaa__posts{gap:var(--space-md);flex-direction:column;display:flex}.page-module__6QJiaa__postLink{color:inherit;border-radius:var(--card-radius);text-decoration:none;display:block}.page-module__6QJiaa__postLink:focus-visible{box-shadow:var(--shadow-glow);outline:none}.page-module__6QJiaa__post{padding:var(--card-padding);padding-right:calc(var(--card-padding) + var(--space-lg));background-color:var(--color-bg);border:1px solid var(--color-border-subtle);border-radius:var(--card-radius);box-shadow:var(--shadow-sm);transition:box-shadow var(--duration-normal) var(--ease-out), border-color var(--duration-normal) var(--ease-out);position:relative}.page-module__6QJiaa__post:after{content:"→";top:var(--card-padding);right:var(--card-padding);font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-caption);color:var(--color-text-subtle);opacity:0;transition:opacity var(--duration-normal) var(--ease-out), transform var(--duration-normal) var(--ease-out-expo), color var(--duration-fast) var(--ease-out);position:absolute;transform:translate(-6px)}.page-module__6QJiaa__postLink:hover .page-module__6QJiaa__post,.page-module__6QJiaa__postLink:focus-visible .page-module__6QJiaa__post{box-shadow:var(--shadow-md);border-color:var(--color-border)}.page-module__6QJiaa__postLink:hover .page-module__6QJiaa__post:after,.page-module__6QJiaa__postLink:focus-visible .page-module__6QJiaa__post:after{opacity:1;color:var(--color-accent);transform:translate(0)}.page-module__6QJiaa__postLink:hover .page-module__6QJiaa__postTitle,.page-module__6QJiaa__postLink:focus-visible .page-module__6QJiaa__postTitle{color:var(--color-accent)}.page-module__6QJiaa__postTitle{font-family:var(--font-heading), serif;font-size:var(--text-h3);margin-top:var(--space-md);transition:color var(--duration-normal) var(--ease-out);font-weight:400}.page-module__6QJiaa__postDescription{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-sm);line-height:1.65}
