@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-tight-cyrillic-ext-wght-normal.okcGN4Nq.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-tight-cyrillic-wght-normal.BS41q_Tv.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-tight-greek-ext-wght-normal.DQgQPNk4.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-tight-greek-wght-normal.sS1B39LI.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-tight-vietnamese-wght-normal.TKKdAiBA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-tight-latin-ext-wght-normal.B4u9PlvR.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/pattern-life/_astro/inter-tight-latin-wght-normal.DX-nOvPD.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{box-sizing:border-box}:root{--ink-950:#14120f;--ink-800:#2a2621;--ink-700:#3d3832;--ink-500:#6e675d;--ink-400:#9a9286;--ink-200:#e6e1d8;--ink-100:#f3f0ea;--ink-50:#faf8f4;--paper:#fffdf9;--accent-700:#2f5d3a;--accent-600:#3b7347;--accent-500:#4f9160;--accent-100:#dcebdf;--accent-50:#eef5ef;--color-bg:var(--paper);--color-text:var(--ink-950);--color-muted:var(--ink-500);--color-border:var(--ink-200);--color-accent:var(--accent-600);--color-callout:var(--accent-50);--color-code:var(--ink-100);--font-sans:"Inter Variable", "Inter", system-ui, -apple-system, sans-serif;--font-display:"Inter Tight Variable", "Inter Tight", var(--font-sans);--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--content-width:50rem}@media (prefers-color-scheme:dark){:root{--paper:#14120f;--color-bg:#14120f;--color-text:#f3f0ea;--color-muted:#a39b8f;--color-border:#2f2b25;--color-accent:#7cbf8b;--color-callout:#1c2a1f;--color-code:#23201b}}html{font-family:var(--font-sans);font-size:clamp(1rem,.5rem + .625vw,1.25rem)}body{color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;letter-spacing:-.005em;margin:0;font-size:1rem;line-height:1.55}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.02em;margin-top:0;font-weight:600;line-height:1.15}p{margin-top:0}code{font-family:var(--font-mono);background:var(--color-code);border:1px solid var(--color-border);border-radius:3px;padding:.1em .35em;font-size:.875em}hr{border:none;border-top:1px solid var(--color-border);margin:2rem 0}.lead{color:var(--color-muted);max-width:36rem;margin-bottom:2.5rem;font-size:1.1rem}.page-intro{color:var(--color-muted);margin:.75rem 0 0;font-size:.9rem}.pattern-type{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted);border:1px solid var(--color-border);border-radius:4px;padding:.1rem .4rem;font-size:.7rem;line-height:1.4}.back-link{margin-top:2.5rem;font-size:.9rem}.prose h2{margin:2.25rem 0 .75rem;font-size:1.4rem}.prose h3{margin:1.75rem 0 .5rem;font-size:1.1rem}.prose a{overflow-wrap:break-word;text-underline-offset:2px;text-decoration:underline}.prose ul,.prose ol{padding-left:1.25rem}.prose li{margin-bottom:.35rem}.prose img{border-radius:6px;max-width:100%;height:auto}.prose img[src$=\.svg]{border:1px solid var(--color-border);background:#fff;margin:1.5rem auto;padding:.5rem;display:block}.prose blockquote{border-left:3px solid var(--color-accent);background:var(--color-callout);border-radius:0 6px 6px 0;margin:1.25rem 0;padding:.75rem 1rem}.prose blockquote p:last-child{margin-bottom:0}.prose table{border-collapse:collapse;width:100%;margin:1.25rem 0;font-size:.9rem;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px solid var(--color-border);padding:.6rem .75rem}.prose th{border-bottom-width:2px;font-weight:600}header[data-astro-cid-z4jru4n3]{border-bottom:1px solid var(--color-border);background:var(--color-bg);padding:.875rem 2rem}nav[data-astro-cid-z4jru4n3]{max-width:var(--content-width);align-items:center;gap:2rem;margin:0 auto;display:flex}.site-title[data-astro-cid-z4jru4n3]{letter-spacing:-.025em;color:var(--color-text);flex-shrink:0;align-items:baseline;gap:2px;font-size:1.05rem;font-weight:600;display:flex}.site-title[data-astro-cid-z4jru4n3]:hover{text-decoration:none}.wordmark-sep[data-astro-cid-z4jru4n3]{color:var(--color-accent);font-weight:300}.nav-checkbox[data-astro-cid-z4jru4n3]{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.nav-toggle[data-astro-cid-z4jru4n3]{display:none}nav[data-astro-cid-z4jru4n3]>ul[data-astro-cid-z4jru4n3]{gap:1.5rem;margin:0 0 0 auto;padding:0;list-style:none;display:flex}nav[data-astro-cid-z4jru4n3] ul[data-astro-cid-z4jru4n3] a[data-astro-cid-z4jru4n3]{color:var(--color-muted);padding-bottom:2px;font-size:.9rem;position:relative}nav[data-astro-cid-z4jru4n3] ul[data-astro-cid-z4jru4n3] a[data-astro-cid-z4jru4n3]:hover{color:var(--color-text);text-decoration:none}nav[data-astro-cid-z4jru4n3] ul[data-astro-cid-z4jru4n3] a[data-astro-cid-z4jru4n3][aria-current=page]{color:var(--color-text);font-weight:500}nav[data-astro-cid-z4jru4n3] ul[data-astro-cid-z4jru4n3] a[data-astro-cid-z4jru4n3][aria-current=page]:after{content:"";background:var(--color-accent);height:2px;position:absolute;bottom:-.875rem;left:0;right:0}main[data-astro-cid-z4jru4n3]{max-width:var(--content-width);margin:0 auto;padding:3rem 2rem}footer[data-astro-cid-z4jru4n3]{border-top:1px solid var(--color-border);padding:2.5rem 2rem}.footer-inner[data-astro-cid-z4jru4n3]{max-width:var(--content-width);flex-direction:column;gap:1rem;margin:0 auto;display:flex}.footer-text[data-astro-cid-z4jru4n3]{color:var(--color-muted);max-width:43rem;margin:0;font-size:.8rem;line-height:1.65}.footer-small[data-astro-cid-z4jru4n3]{margin:0;font-size:.8rem}@media (width<=640px){header[data-astro-cid-z4jru4n3],main[data-astro-cid-z4jru4n3],footer[data-astro-cid-z4jru4n3]{padding-left:1rem;padding-right:1rem}nav[data-astro-cid-z4jru4n3]{flex-wrap:wrap;justify-content:space-between;gap:0}.nav-toggle[data-astro-cid-z4jru4n3]{cursor:pointer;color:var(--color-muted);align-items:center;padding:.5rem 0;display:flex}nav[data-astro-cid-z4jru4n3]>ul[data-astro-cid-z4jru4n3]{border-top:1px solid var(--color-border);flex-direction:column;gap:0;width:100%;margin-left:0;padding:.5rem 0;display:none}.nav-checkbox[data-astro-cid-z4jru4n3]:checked+.nav-toggle[data-astro-cid-z4jru4n3]+ul[data-astro-cid-z4jru4n3]{display:flex}nav[data-astro-cid-z4jru4n3] ul[data-astro-cid-z4jru4n3] a[data-astro-cid-z4jru4n3]{padding:.5rem 0;display:block}nav[data-astro-cid-z4jru4n3] ul[data-astro-cid-z4jru4n3] a[data-astro-cid-z4jru4n3][aria-current=page]:after{display:none}}
