@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,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(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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(/_astro/inter-tight-cyrillic-ext-wght-normal.okcGN4Nq.woff2) format("woff2-variations");unicode-range:U+0460-052F,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(/_astro/inter-tight-cyrillic-wght-normal.BS41q_Tv.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-greek-ext-wght-normal.DQgQPNk4.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-greek-wght-normal.sS1B39LI.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-vietnamese-wght-normal.TKKdAiBA.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-latin-ext-wght-normal.B4u9PlvR.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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(/_astro/inter-tight-latin-wght-normal.DX-nOvPD.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/hanken-grotesk-vietnamese-wght-normal.CHiFlh_0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/hanken-grotesk-latin-ext-wght-normal.Dg-wlmqe.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/hanken-grotesk-latin-wght-normal.CaVRRdDk.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-ext-wght-normal.B5bTHO_g.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-wght-normal.BbzFLZTg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/_astro/schibsted-grotesk-latin-ext-wght-normal.hsMS0n0O.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/_astro/schibsted-grotesk-latin-wght-normal.Bb8VGrTG.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--paper: #FFFFFF;--ink: #000000;--ink-2: #5C5C5C;--line: #E2E2E2;--block: #F2F2F2;--accent: #2B44FF;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--chip: #EDEDED;--font-sans: "Inter Variable", "Helvetica Neue", Helvetica, Arial, sans-serif;--step--1: clamp(.8125rem, .79rem + .1vw, .875rem);--step-0: clamp(1rem, .97rem + .15vw, 1.125rem);--step-1: clamp(1.25rem, 1.15rem + .5vw, 1.5rem);--step-2: clamp(1.5rem, 1.3rem + 1vw, 2.25rem);--step-3: clamp(2.25rem, 1.7rem + 2.7vw, 4.25rem);--weight-body: 400;--weight-strong: 600;--leading-body: 1.55;--leading-display: 1.04;--tracking-display: -.025em;--measure: 62ch;--space-1: .25rem;--space-2: .5rem;--space-3: 1rem;--space-4: 1.5rem;--space-5: 2.5rem;--space-6: 4rem;--space-7: 7rem;--gutter: clamp(1rem, .5rem + 2.5vw, 2.5rem);--max: 1200px;--radius: 8px;--radius-lg: 14px;--ratio-thumb: 16 / 10;--ease: .15s ease-out}:root[data-theme=dark]{color-scheme:dark;--paper: #000000;--ink: #FFFFFF;--ink-2: #A3A3A3;--line: #2A2A2A;--block: #161616;--accent: #8C9BFF;--chip: #262626}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--step-0);font-weight:var(--weight-body);line-height:var(--leading-body);-webkit-font-smoothing:antialiased}img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.skip-link{position:absolute;left:var(--gutter);top:-4rem;background:var(--ink);color:var(--paper);padding:var(--space-2) var(--space-3);z-index:10}.skip-link:focus{top:var(--space-2)}.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}.site-name{font-size:var(--step-1);font-weight:var(--weight-strong);letter-spacing:-.01em;text-decoration:none}.header-note{margin:0;text-align:right;font-size:var(--step--1);line-height:1.4}.clock{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-2)}.site-nav{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-top:var(--space-4);font-weight:var(--weight-strong);font-size:var(--step--1)}.site-nav a{text-decoration:none}.site-nav a:hover{text-decoration:underline}.site-nav a[aria-current=page]{text-decoration:underline;text-underline-offset:.35em;text-decoration-thickness:2px}.page-head{padding-top:var(--space-6)}.page-title{margin:0;font-size:var(--step-3);font-weight:var(--weight-strong);line-height:var(--leading-display);letter-spacing:var(--tracking-display)}.page-sub{margin:var(--space-2) 0 0;font-size:var(--step-2);font-weight:var(--weight-body);line-height:1.15;letter-spacing:var(--tracking-display)}.rule{border:0;border-top:1px solid var(--line);margin:var(--space-5) 0}.lead{max-width:40ch;margin:0;font-size:var(--step-1);line-height:1.45}.lead-prose{font-size:var(--step-1);line-height:1.45;max-width:40ch}.section-title{margin:var(--space-7) 0 var(--space-4);font-size:var(--step-2);font-weight:var(--weight-strong);letter-spacing:var(--tracking-display)}.more{margin:var(--space-5) 0 0}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:.4rem .85rem;border:1px solid var(--ink);border-radius:var(--radius);font-size:var(--step--1);font-weight:var(--weight-strong);text-decoration:none}.btn:hover{color:var(--paper);background:var(--ink)}.chip{display:inline-block;margin:0 0 var(--space-3);padding:.1rem .55rem;background:var(--chip);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.75rem;line-height:1.6}.row{display:grid;grid-template-columns:5fr 7fr;gap:var(--space-3) var(--space-5);padding-block:var(--space-5) var(--space-6);border-top:1px solid var(--line)}.work-list>.section-title+.row{border-top:0;padding-top:0}.work-list-flush{margin-top:var(--space-5)}.row-year{margin:0 0 var(--space-1);font-size:var(--step--1)}.row-title{margin:0 0 var(--space-3);font-size:var(--step-2);font-weight:var(--weight-strong);line-height:1.1;letter-spacing:var(--tracking-display)}.row-title a{text-decoration:none}.row-title a:hover{text-decoration:underline}.row-meta{margin:0 0 var(--space-2);font-size:var(--step--1);max-width:34ch}.row-sub{margin:0 0 var(--space-3);font-size:var(--step-1);font-weight:var(--weight-strong);line-height:1.2}.row-body p{margin:0 0 var(--space-3);font-size:var(--step--1);max-width:62ch}.row-body p.chip{margin-bottom:var(--space-3)}.row-body .btn{margin-top:var(--space-1)}@media(max-width:760px){.row{grid-template-columns:1fr;gap:var(--space-3)}}.project-head{display:grid;grid-template-columns:5fr 7fr;gap:var(--space-4) var(--space-5);padding-block:var(--space-6) var(--space-5)}@media(max-width:760px){.project-head{grid-template-columns:1fr}}.project-title{margin:0;font-size:var(--step-3);font-weight:var(--weight-strong);line-height:var(--leading-display);letter-spacing:var(--tracking-display)}.project-sub{margin:var(--space-2) 0 0;color:var(--ink-2)}.project-meta{margin:var(--space-4) 0 0;display:grid;grid-template-columns:auto 1fr;gap:var(--space-1) var(--space-3);font-size:var(--step--1)}.project-meta dt{color:var(--ink-2)}.project-meta dd{margin:0}.prose{max-width:var(--measure)}.prose>:first-child{margin-top:0}.prose p{margin:0 0 var(--space-3)}.prose h2{margin:var(--space-5) 0 var(--space-2);font-size:var(--step-1);font-weight:var(--weight-strong);line-height:1.2}.gallery{display:grid;gap:var(--space-3)}.gallery img{width:100%;height:auto;border-radius:var(--radius);background:var(--block)}.pager{display:flex;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-6);font-size:var(--step-1);font-weight:var(--weight-strong)}.pager a{text-decoration:none}.pager a:hover{text-decoration:underline}.footer-panel{margin-top:var(--space-7);margin-bottom:var(--space-5);padding:var(--space-5);background:var(--block);border-radius:var(--radius-lg);display:grid;gap:var(--space-5)}.footer-top,.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-3)}.footer-top .site-nav{margin-top:0}.footer-bottom{font-size:var(--step--1);color:var(--ink-2)}@media(prefers-reduced-motion:no-preference){a,.btn{transition:color var(--ease),background-color var(--ease)}}.row-media{grid-column:1 / -1;margin-top:var(--space-4);min-width:0}.carousel{--carousel-h: var(--carousel-height, clamp(220px, 38vw, 440px));min-width:0}.carousel-track{display:flex;gap:var(--space-3);margin:0;padding:0;list-style:none;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;border-radius:var(--radius)}.carousel-track::-webkit-scrollbar{display:none}.carousel-track:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.slide{flex:0 0 auto;height:var(--carousel-h);scroll-snap-align:start;background:var(--block);border-radius:var(--radius);overflow:hidden}.slide img{height:100%;width:auto;max-width:none;object-fit:cover}.carousel-ui{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-3)}.carousel-count{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-2)}.carousel-btns{display:flex;gap:var(--space-2)}.carousel-btn{display:grid;place-items:center;width:2.25rem;height:2.25rem;padding:0;background:transparent;color:var(--ink);border:1px solid var(--ink);border-radius:var(--radius);cursor:pointer}.carousel-btn:hover:not(:disabled){color:var(--paper);background:var(--ink)}.carousel-btn:disabled{opacity:.3;cursor:default}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.lead-first{padding-top:var(--space-6)}.site-header{padding-block:var(--space-4) 0}.header-top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4)}.header-note{text-align:right}.nav-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-3) var(--space-5);margin-top:var(--space-4)}.key-nav{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);font-size:var(--step-0);font-weight:var(--weight-strong)}.key-nav a{display:inline-flex;align-items:center;gap:.45em;text-decoration:none}.key{display:inline-grid;place-items:center;width:1.8em;height:1.8em;border:1.5px solid currentColor;border-radius:var(--key-radius, .38em);font-family:var(--font-sans);font-size:.62em;font-weight:700;line-height:1}.key-nav a:hover{color:var(--ink)}.key-nav a:hover .key{background:var(--block)}.key-nav a[aria-current=page] .key{background:var(--ink);border-color:var(--ink);color:var(--paper)}@media(max-width:480px){.key-nav{gap:var(--space-2) .9rem;font-size:var(--step--1)}.theme-switch{margin-left:auto}}.theme-switch{display:inline-flex;align-items:center;gap:.5em;padding:0;background:none;border:0;color:var(--ink);font:inherit;font-size:var(--step--1);cursor:pointer}.theme-track{display:block;position:relative;width:2.1em;height:1.2em;border:1.5px solid var(--ink);border-radius:999px}.theme-thumb{position:absolute;top:50%;left:.15em;width:.75em;height:.75em;border-radius:50%;background:var(--ink);transform:translateY(-50%)}:root[data-theme=dark] .theme-thumb{transform:translate(calc(1.05em - 3px),-50%)}.theme-switch:hover .theme-track{background:var(--block)}@media(prefers-reduced-motion:no-preference){.theme-thumb{transition:transform var(--ease)}body{transition:background-color .2s ease-out,color .2s ease-out}}@media(pointer:fine){.carousel-track{cursor:grab}.carousel-track.is-dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}.carousel-track.is-dragging img{pointer-events:none}}.rule-section{margin:var(--space-6) 0 0}.rule-section+.section-title{margin-top:var(--space-5)}.label-to-light{display:none}:root[data-theme=dark] .label-to-dark{display:none}:root[data-theme=dark] .label-to-light{display:inline}.ts-lamp{display:block}.ts-lamp{width:2.05em;height:2.5em;margin-block:-.55em -.75em;overflow:visible}.ts-bulb{fill:currentColor}:root[data-theme=dark] .ts-bulb{fill:none}:root[data-theme=dark] .ts-rays{opacity:0}.ts-chain{transform-box:view-box}@media(prefers-reduced-motion:no-preference){.ts-rays{transition:opacity .15s ease-out}.theme-switch.is-pulled .ts-chain{animation:ts-tug .32s cubic-bezier(.3,.7,.4,1.4)}}@keyframes ts-tug{0%{transform:translateY(0)}35%{transform:translateY(3.5px)}to{transform:translateY(0)}}.ts-fader{position:relative;display:block;width:3em;height:1.35em}.ts-fader:before{content:"";position:absolute;left:0;right:0;top:50%;height:.42em;transform:translateY(-50%);border:1.5px solid currentColor;border-radius:2px;background:linear-gradient(90deg,transparent 50%,currentColor 50%)}.ts-fader-cap{position:absolute;top:0;left:0;width:.62em;height:100%;background:var(--paper);border:1.5px solid currentColor;border-radius:2px}.ts-fader-cap:after{content:"";position:absolute;left:50%;top:18%;bottom:18%;width:1.5px;background:currentColor;transform:translate(-50%)}:root[data-theme=dark] .ts-fader-cap{transform:translate(2.38em)}@media(prefers-reduced-motion:no-preference){.ts-fader-cap{transition:transform .18s cubic-bezier(.3,.7,.3,1)}}.ts-bulb-icon{display:block;width:1.75em;height:1.65em;margin-block:-.3em;overflow:visible}:root[data-theme=dark] .ts-glow{opacity:0}:root[data-theme=dark] .ts-filament{opacity:.45}@media(prefers-reduced-motion:no-preference){.ts-glow,.ts-filament{transition:opacity .12s ease-out}:root:not([data-theme=dark]) .theme-switch.is-pulled .ts-glow{animation:ts-flicker .38s steps(1,end)}}@keyframes ts-flicker{0%{opacity:0}25%{opacity:1}45%{opacity:.2}65%{opacity:1}80%{opacity:.5}to{opacity:1}}.site-name,.page-title,.section-title,.row-title,.row-sub,.project-title,.pager,.prose h2{font-family:var(--font-display, var(--font-sans))}.ts-icon{display:none}html:not([data-switch]) .ts-icon-toggle,html[data-switch=toggle] .ts-icon-toggle,html[data-switch=bulb] .ts-icon-bulb,html[data-switch=chain] .ts-icon-chain,html[data-switch=fader] .ts-icon-fader{display:block}html[data-keys=filled] .key{background:var(--block);border-color:var(--block)}html[data-keys=filled] .key-nav a[aria-current=page] .key{background:var(--ink);border-color:var(--ink)}html[data-keys=hidden] .key{display:none}html[data-keys=hidden] .key-nav a[aria-current=page]{text-decoration:underline;text-underline-offset:.35em;text-decoration-thickness:2px}html[data-button=solid] .btn{background:var(--ink);color:var(--paper)}html[data-button=solid] .btn:hover{background:transparent;color:var(--ink)}html[data-button=text] .btn{border-color:transparent;padding-inline:0;text-decoration:underline;text-underline-offset:.25em}html[data-button=text] .btn:hover{background:transparent;color:var(--accent)}html [data-switch-preview] .ts-icon{display:none}html [data-switch-preview=toggle] .ts-icon-toggle,html [data-switch-preview=bulb] .ts-icon-bulb,html [data-switch-preview=chain] .ts-icon-chain,html [data-switch-preview=fader] .ts-icon-fader{display:block}@property --m1x{syntax: "<percentage>"; inherits: false; initial-value: 15%;}@property --m1y{syntax: "<percentage>"; inherits: false; initial-value: 25%;}@property --m2x{syntax: "<percentage>"; inherits: false; initial-value: 85%;}@property --m2y{syntax: "<percentage>"; inherits: false; initial-value: 20%;}@property --m3x{syntax: "<percentage>"; inherits: false; initial-value: 50%;}@property --m3y{syntax: "<percentage>"; inherits: false; initial-value: 85%;}html[data-button-hover=mesh]:not([data-button=text]) .btn{position:relative;isolation:isolate}html[data-button-hover=mesh]:not([data-button=text]) .btn:before{content:"";position:absolute;inset:-1px;border-radius:inherit;z-index:-1;pointer-events:none;background:radial-gradient(60% 130% at var(--m1x) var(--m1y),var(--mesh-1),transparent 70%),radial-gradient(55% 125% at var(--m2x) var(--m2y),var(--mesh-2),transparent 70%),radial-gradient(65% 135% at var(--m3x) var(--m3y),var(--mesh-3),transparent 70%),linear-gradient(115deg,var(--mesh-1),var(--mesh-2) 50%,var(--mesh-3));opacity:0}html[data-button-hover=mesh]:not([data-button=text]) .btn:hover,html[data-button-hover=mesh]:not([data-button=text]) .btn:focus-visible{background:transparent;border-color:transparent;color:var(--ink)}html[data-button-hover=mesh]:not([data-button=text]) .btn:hover:before,html[data-button-hover=mesh]:not([data-button=text]) .btn:focus-visible:before{opacity:1}@media(prefers-reduced-motion:no-preference){html[data-button-hover=mesh]:not([data-button=text]) .btn{transition:color var(--ease),border-color .2s ease-out}html[data-button-hover=mesh]:not([data-button=text]) .btn:before{transition:opacity .2s ease-out}html[data-button-hover=mesh]:not([data-button=text]) .btn:hover:before,html[data-button-hover=mesh]:not([data-button=text]) .btn:focus-visible:before{animation:mesh-flow var(--mesh-speed, 4s) ease-in-out infinite}}@keyframes mesh-flow{0%{--m1x: 15%;--m1y: 25%;--m2x: 85%;--m2y: 20%;--m3x: 50%;--m3y: 85%}25%{--m1x: 70%;--m1y: 10%;--m2x: 80%;--m2y: 90%;--m3x: 10%;--m3y: 60%}50%{--m1x: 90%;--m1y: 75%;--m2x: 20%;--m2y: 85%;--m3x: 35%;--m3y: 5%}75%{--m1x: 30%;--m1y: 95%;--m2x: 5%;--m2y: 30%;--m3x: 90%;--m3y: 35%}to{--m1x: 15%;--m1y: 25%;--m2x: 85%;--m2y: 20%;--m3x: 50%;--m3y: 85%}}
