@property --color-canvas{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-panel{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-panel-strong{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-ink{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-ink-secondary{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-ink-muted{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-ink-inverse{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-rule{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-rule-strong{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-highlight{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-highlight-ink{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-link{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-link-hover{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-annotation{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-selected{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-selected-ink{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-portrait-backdrop{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-focus{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-success{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-danger{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-warning{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-button{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-button-ink{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-tag{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-shadow-paper{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-shadow-dialog{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-backdrop{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-grid-minor{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-grid-major{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-grid-paper{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-contour{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-margin-rule{syntax:"<color>";inherits:true;initial-value:#0000}@property --color-grid-mark{syntax:"<color>";inherits:true;initial-value:#0000}@media (prefers-reduced-motion:no-preference){:root.theme-ready{transition-property:--color-canvas,--color-panel,--color-panel-strong,--color-ink,--color-ink-secondary,--color-ink-muted,--color-ink-inverse,--color-rule,--color-rule-strong,--color-highlight,--color-highlight-ink,--color-link,--color-link-hover,--color-annotation,--color-selected,--color-selected-ink,--color-portrait-backdrop,--color-focus,--color-success,--color-danger,--color-warning,--color-button,--color-button-ink,--color-tag,--color-shadow-paper,--color-shadow-dialog,--color-backdrop,--color-grid-minor,--color-grid-major,--color-grid-paper,--color-contour,--color-margin-rule,--color-grid-mark;transition-duration:.36s;transition-timing-function:cubic-bezier(.2,0,.2,1)}}:root{color-scheme:light dark;--color-canvas:light-dark(#fbfaf4,#0a1019);--color-panel:light-dark(#f4f1e7,#111a26);--color-panel-strong:light-dark(#ebe7d8,#19253a);--color-ink:light-dark(#1c1c1a,#f4f0e5);--color-ink-secondary:light-dark(#5e5e59,#b9b9b0);--color-ink-muted:light-dark(#6b6b65,#9d9d94);--color-ink-inverse:light-dark(#fbfaf4,#1c1c1a);--color-rule:light-dark(#d9d5c6,#26344a);--color-rule-strong:light-dark(#1c1c1a,#d9d4c6);--color-highlight:light-dark(#e8d36a,#c9b458);--color-highlight-ink:#1c1c1a;--color-link:light-dark(#345b78,#93b8d6);--color-link-hover:light-dark(#1f3f57,#b9d3e8);--color-annotation:light-dark(#a3462b,#e39a78);--color-selected:light-dark(#d6e5f1,#93b8d6);--color-selected-ink:#1c1c1a;--color-portrait-backdrop:light-dark(#e4e0d3,#283447);--color-focus:light-dark(#1f4e79,#f0da7a);--color-success:light-dark(#2e6b3a,#8fcf99);--color-danger:light-dark(#a3301f,#f19a8a);--color-warning:light-dark(#7d5400,#e7c170);--color-button:light-dark(#1c1c1a,#93b8d6);--color-button-ink:light-dark(#fbfaf4,#1c1c1a);--color-tag:#345b78;--color-shadow-paper:light-dark(#1c1c1a0d,#00000040);--color-shadow-dialog:light-dark(#1c1c1a59,#0009);--color-backdrop:light-dark(#1c1c1a6b,#03060bb3);--highlight-blend:multiply;--highlight-opacity:.85;--texture-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22320%22%20height%3D%22320%22%3E%3Cfilter%20id%3D%22g%22%20x%3D%220%22%20y%3D%220%22%20width%3D%22100%25%22%20height%3D%22100%25%22%3E%3CfeTurbulence%20type%3D%22fractalNoise%22%20baseFrequency%3D%22.78%22%20numOctaves%3D%222%22%20seed%3D%224%22%20stitchTiles%3D%22stitch%22%2F%3E%3CfeColorMatrix%20type%3D%22saturate%22%20values%3D%220%22%2F%3E%3C%2Ffilter%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20filter%3D%22url\(%23g\)%22%20opacity%3D%22.085%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%236c7880%22%20stroke-width%3D%22.5%22%20stroke-linecap%3D%22round%22%20opacity%3D%22.13%22%3E%3Cpath%20d%3D%22M17%2041l3.6%20-1.2M274%2094l2.4%201.2M45%20116l3.6%201.2M12%20208l4.8%20-1.2M226%20230l3.6%201.2M37%20279l3.6%20-2.4M38%2072q10.8%20-4.8%2020.4%201.2M206%2096q9.6%206%2019.2%201.2M252%20254q8.4%20-9.6%2019.2%20-7.2M66%20300q9.6%201.2%2015.6%209.6M154%2022q7.2%204.8%2015.6%202.4M300%20182q-9.6%203.6%20-14.4%2012%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E);--font-family-serif:var(--font-family-sans);--font-family-sans:var(--font-inclusive-sans,"Inclusive Sans"), Arial, sans-serif;--font-family-mono:var(--font-space-mono,ui-monospace, Consolas, "Liberation Mono", monospace);--font-family-numeral:var(--font-family-mono);--font-family-hand:var(--font-sue-ellen-francisco,cursive);--text-xs:.75rem;--text-sm:.875rem;--text-base:clamp(1rem, .97rem + .15vw, 1.0625rem);--text-md:1.125rem;--text-lg:clamp(1.25rem, 1.15rem + .4vw, 1.375rem);--text-xl:clamp(1.4rem, 1.2rem + .8vw, 1.8rem);--text-2xl:clamp(1.75rem, 1.45rem + 1.3vw, 2.4rem);--text-3xl:clamp(2.1rem, 1.6rem + 2.2vw, 3.25rem);--leading-tight:1.12;--leading-snug:1.3;--leading-body:1.62;--leading-mono:1.55;--tracking-label:.08em;--tracking-display:-.012em;--weight-regular:400;--weight-medium:500;--weight-bold:700;--space-3xs:.125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4.5rem;--space-4xl:6rem;--gutter:clamp(1rem, .4rem + 2.6vw, 2.5rem);--section-gap:clamp(3rem, 2rem + 4vw, 5.5rem);--width-max:1360px;--width-doc:72rem;--measure:68ch;--measure-narrow:56ch;--target-min:44px;--radius-none:0;--radius-sm:2px;--radius-md:4px;--border-hair:1px solid var(--color-rule);--border-ink:1px solid var(--color-rule-strong);--shadow-paper:0 1px 0 var(--color-shadow-paper);--shadow-dialog:0 28px 64px -24px var(--color-shadow-dialog);--duration-fast:.12s;--duration-base:.18s;--duration-medium:.28s;--duration-page:.4s;--duration-stroke:.72s;--ease-out:cubic-bezier(.2, .7, .2, 1);--ease-draw:cubic-bezier(.65, 0, .35, 1);--ease-standard:cubic-bezier(.2, 0, 0, 1);--ease-emphasized:cubic-bezier(.3, 0, 0, 1);--ease-exit:cubic-bezier(.4, 0, 1, 1);--duration-sheet:.42s;--duration-swap:.34s;--ease-sheet:cubic-bezier(.22, 1, .36, 1);--sheet-travel-in:7%;--sheet-travel-out:3.5%;--color-grid-minor:light-dark(#4c69801c,#84a0c417);--color-grid-major:light-dark(#4c698026,#84a0c420);--color-grid-paper:light-dark(#4e677d12,#84a0c40d);--color-margin-rule:light-dark(#c4565657,#e0848433);--color-grid-mark:light-dark(#3c5c766b,#8ca8cc42);--color-contour:light-dark(#2c485ea8,#96b0d299);--contour-home:.9;--contour-lab:.95;--z-raised:1;--z-sticky:10;--z-transition:50;--z-skip:100}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark;--highlight-blend:normal;--highlight-opacity:.42}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--highlight-blend:normal;--highlight-opacity:.42}}:root{--calm-centre:radial-gradient(ellipse 60% 64% at 50% 43%, #00000038, #000);--content-start:max(var(--gutter), calc((100vw - var(--width-max)) / 2 + var(--gutter)))}.bg-contours,.paper-grid,.workspace-grid{z-index:-1;pointer-events:none;position:fixed;inset:0}.paper-grid,.workspace-grid{mask-image:var(--calm-centre)}.paper-grid{background-image:linear-gradient(to right, var(--color-grid-paper) 1px, transparent 1px), linear-gradient(to bottom, var(--color-grid-paper) 1px, transparent 1px), linear-gradient(to right, color-mix(in srgb, var(--color-grid-paper) 80%, transparent) .65px, transparent .65px), linear-gradient(to bottom, color-mix(in srgb, var(--color-grid-paper) 80%, transparent) .65px, transparent .65px);background-position:-.35px 0,0 .25px,0 0,0 0;background-size:140px 140px,140px 140px,28px 28px,28px 28px}.workspace-grid{background-image:linear-gradient(to right, var(--color-grid-major) .85px, transparent .85px), linear-gradient(to bottom, var(--color-grid-major) .85px, transparent .85px), linear-gradient(to right, var(--color-grid-minor) .6px, transparent .6px), linear-gradient(to bottom, var(--color-grid-minor) .6px, transparent .6px), radial-gradient(circle, var(--color-grid-major) 1.1px, transparent 1.3px);background-position:0 0,0 0,0 0,0 0,-50px -50px;background-size:100px 100px,100px 100px,20px 20px,20px 20px,100px 100px}.paper-grid:after,.workspace-grid:after{content:"";background-image:linear-gradient(var(--color-grid-major), var(--color-grid-major)), linear-gradient(var(--color-grid-major), var(--color-grid-major)), linear-gradient(var(--color-grid-paper), var(--color-grid-paper)), linear-gradient(var(--color-grid-major), var(--color-grid-major)), linear-gradient(var(--color-grid-major), var(--color-grid-major));background-position:18px 211.5px,22.5px 207px,calc(100% - 22px) 0,right 18px bottom 53px,right 22.5px bottom 49px;background-repeat:no-repeat;background-size:9px .75px,.75px 9px,.65px 100%,9px .75px,.75px 9px;position:absolute;inset:0}@media (width>=1600px){.paper-grid:before{content:"";top:0;bottom:0;left:calc(var(--content-start) - 12px);border-inline:1px solid var(--color-margin-rule);width:4px;position:absolute}}.workspace-grid:before{content:"";opacity:.7;background-image:repeating-linear-gradient(to bottom, var(--color-grid-major) 0 .75px, transparent .75px 10px), repeating-linear-gradient(to right, var(--color-grid-major) 0 .75px, transparent .75px 10px);background-position:0 0,100% 100%;background-repeat:no-repeat;background-size:4px 100%,100% 4px;position:absolute;inset:76px 11px 18px}.bg-contours{color:var(--color-contour);opacity:var(--contour-home);overflow:clip}.bg-contours[data-environment=lab]{opacity:var(--contour-lab)}.bg-art{opacity:.5;position:absolute;inset:0}.bg-formula{opacity:.55;width:122px;height:auto;position:absolute;bottom:40px;left:82%;overflow:visible;translate:-50%;rotate:19deg}.bg-formula path{stroke-width:1.1px;vector-effect:non-scaling-stroke}@media (width<640px){.bg-formula{display:none}}[data-environment=portfolio] .bg-art{mask-image:linear-gradient(to right, #000 calc(var(--content-start) - 16px), #00000057 calc(var(--content-start) + 56px), #0000001f 50%, #00000057 calc(100% - var(--content-start) - 56px), #000 calc(100% - var(--content-start) + 16px))}.grid-marks{width:100%;height:100%;color:var(--color-grid-mark);mask-image:var(--calm-centre);position:absolute;inset:0}.grid-marks path{stroke-width:1px}.margin-art{width:var(--size);max-width:none;height:auto;rotate:var(--tilt,0deg);mask-image:linear-gradient(calc(var(--toward,0deg) - var(--tilt,0deg)), #000 30%, rgb(0 0 0/var(--fade-to,.4)));position:absolute;overflow:visible}.margin-art :is(path,circle,ellipse,rect,line,polygon,polyline){vector-effect:non-scaling-stroke}.margin-art g{stroke-width:1.2px}.margin-art .art-primary{stroke-width:1.6px}.art-construction{stroke-width:1px;opacity:.5}.art-fill{fill:currentColor;fill-opacity:.1}.data-field{width:var(--field-width);height:var(--field-height);rotate:none}.point{fill:currentColor}.point--dark{fill-opacity:.85}.point--mid{fill-opacity:.5}.point--light{fill-opacity:.22}.point--open{fill:none;stroke:currentColor;stroke-width:1.2px}.point-base{fill:var(--color-canvas)}.star-glow{fill:currentColor;fill-opacity:.14}.margin-art .chart-line{stroke-width:1px;opacity:.35}.margin-art[data-tier=tablet],.margin-art[data-tier=desktop],.margin-art[data-tier=doc]{display:none}@media (width>=640px){.margin-art[data-tier=tablet]{display:block}}@media (width>=1024px){.margin-art[data-tier=desktop]{display:block}}.on-grid{--tilt:0deg;translate:.5px .5px}[data-environment=portfolio] [data-motif=star]{--size:clamp(56px, calc(var(--content-start) - 120px), 84px);--toward:90deg;left:calc(28px - var(--size) / 2);top:calc(280px - var(--size) / 2)}.star-orbit{opacity:.6}[data-environment=portfolio] [data-motif=libra]{--size:75px;--toward:90deg;top:128.5px;left:.5px}[data-environment=portfolio] [data-motif=flowers]{--size:84px;--toward:45deg;bottom:24px;left:0}@supports (left:round(down, 1px, 1px)){[data-environment=portfolio] [data-motif=star]{left:calc(max(28px, round(down, var(--content-start) / 2, 28px)) - var(--size) / 2)}[data-environment=portfolio] [data-motif=libra]{left:max(.5px, min(max(28px, round(down, var(--content-start) / 2, 28px)) + 4.5px, var(--content-start) - 87.5px))}[data-environment=portfolio] [data-motif=flowers]{left:max(0px, round(down, (var(--content-start) - 84px) / 2, 28px));top:round(down,100% - 108px,28px);bottom:auto}}.lit-cells{width:var(--cells-width);height:var(--cells-height);opacity:.3;position:absolute;bottom:0;right:0}@supports (left:round(down, 1px, 1px)){.lit-cells{left:round(up, 100% - var(--cells-width), 28px);top:round(up, 100% - var(--cells-height), 28px);bottom:auto;right:auto}}@media (width<640px){.lit-cells{display:none}}[data-environment=lab] [data-motif=set-square]{--size:clamp(64px, 9vh, 92px);--tilt:-6deg;--toward:45deg;bottom:3%;left:16px}[data-environment=lab] [data-motif=dotted-circle]{--size:clamp(40px, 6.5vh, 60px);--toward:-45deg;bottom:40px;right:36px}[data-environment=lab] [data-motif=points]{--field-width:clamp(200px, 20vw, 340px);--field-height:clamp(60px, 10vh, 100px);bottom:86px;left:82%;translate:-50%;mask-image:none}@media (width>=1024px){[data-environment=lab] [data-motif=set-square]{bottom:4%;left:22px}[data-environment=lab] [data-motif=pencil]{--size:clamp(64px, 8vh, 84px);--tilt:-32deg;--toward:45deg;bottom:6%;left:clamp(110px,9vh + 44px,140px)}}:root:has(main .doc) [data-environment=lab] :is([data-motif=pencil],[data-motif=set-square],[data-motif=points]){display:none}@media (width<1400px){:root:has(main .doc) [data-environment=lab] .bg-art{display:none}}@media (width>=1400px){:root:has(main .doc) [data-environment=lab] .bg-art{mask-image:linear-gradient(to right, #000 calc(var(--content-start) - 12px), transparent calc(var(--content-start) + 4px), transparent calc(100% - var(--content-start) - 4px), #000 calc(100% - var(--content-start) + 12px))}:root:has(main .doc) [data-environment=lab] .margin-art{--middle:calc(var(--content-start) / 2);--size:min(var(--doc-size), calc(var(--content-start) - 18px));--toward:90deg;--fade-to:.6}:root:has(main .doc) [data-environment=lab] .margin-art[data-tier=doc]{display:block}:root:has(main .doc) [data-environment=lab] [data-motif=chart-fragment]{--doc-size:58px;left:calc(var(--middle) - var(--size) / 2);top:48%}:root:has(main .doc) [data-environment=lab] [data-motif=chart-fragment-wide]{--doc-size:76px;--toward:270deg;right:calc(var(--middle) - var(--size) / 2);top:42%}:root:has(main .doc) [data-environment=lab] [data-motif=dotted-circle]{--doc-size:56px;--toward:270deg;right:calc(var(--middle) - var(--size) / 2);bottom:5%}:root:has(main .doc) .bg-formula{left:auto;right:calc(var(--content-start) / 2);bottom:26%;translate:50%}}@media (width<1600px){:root:has(main .doc) .bg-formula{display:none}}@media (width>=1024px) and (height<760px){:root:not(:has(main .doc)) [data-environment=lab] [data-motif=pencil]{display:none}}@media (width<1024px){.bg-contours,.bg-contours[data-environment=lab]{opacity:calc(var(--contour-home) * .75)}}@media (width<640px){.bg-contours,.bg-contours[data-environment=lab]{opacity:calc(var(--contour-home) * .6)}[data-environment=lab] [data-motif=dotted-circle]{right:16px}}@media (prefers-reduced-transparency:reduce),(forced-colors:active){.bg-contours,.paper-grid,.workspace-grid{display:none!important}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scrollbar-gutter:stable;scroll-padding-top:var(--space-lg);hanging-punctuation:first last}html:has(dialog[open]){overflow:hidden}body{isolation:isolate;background-color:var(--color-canvas);background-image:var(--texture-image);min-height:100dvh;color:var(--color-ink);font-family:var(--font-family-sans);font-size:var(--text-base);line-height:var(--leading-body);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;overflow-wrap:break-word}@media (prefers-reduced-transparency:reduce),(forced-colors:active){body{background-image:none}}img,picture,svg,video,canvas{max-width:100%;display:block}img,video{height:auto}[hidden],html:not(.js) [data-requires-js],html.js [data-no-js]{display:none!important}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer}:where(h1,h2,h3,h4){font-family:var(--font-family-serif);font-weight:600;line-height:var(--leading-tight);letter-spacing:var(--tracking-display);text-wrap:balance}p,li,dd{text-wrap:pretty}:where(ul,ol)[role=list]{padding:0;list-style:none}:where(code,kbd,samp,pre){font-family:var(--font-family-mono);font-size:.92em}hr{border:0;border-top:var(--border-hair)}a{color:var(--color-link);text-underline-offset:.2em;transition:color var(--duration-fast) var(--ease-out), text-decoration-thickness var(--duration-fast) var(--ease-out);text-decoration-line:underline;text-decoration-thickness:1px}a:hover{color:var(--color-link-hover);text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}::selection{background:color-mix(in srgb, var(--color-highlight) 75%, transparent);color:var(--color-highlight-ink)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.container{width:100%;max-width:var(--width-max);padding-inline:var(--gutter);margin-inline:auto}.meta{font-family:var(--font-family-mono);font-size:var(--text-xs);line-height:var(--leading-mono);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-secondary)}.numeral{font-family:var(--font-family-numeral);font-variant-numeric:tabular-nums;letter-spacing:.02em;font-weight:600}.btn{justify-content:center;align-items:center;gap:var(--space-xs);min-height:var(--target-min);padding:var(--space-xs) var(--space-md);border:var(--border-ink);border-radius:var(--radius-sm);color:var(--color-ink);font-family:var(--font-family-sans);font-size:var(--text-sm);white-space:nowrap;transition:transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);background:0 0;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{color:var(--color-ink);box-shadow:2px 2px 0 var(--color-rule-strong);text-decoration:none;transform:translate(-1px,-1px)}.btn:active{box-shadow:none;transform:none}.btn--primary{border-color:var(--color-button);background:var(--color-button);color:var(--color-button-ink)}.btn--primary:hover{color:var(--color-button-ink);box-shadow:2px 2px 0 var(--color-highlight)}.btn[disabled],.btn[aria-disabled=true]{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}.chips{gap:0 var(--space-lg);margin-top:var(--space-sm);flex-wrap:wrap;display:flex}.chip{min-height:var(--target-min);color:var(--color-ink-secondary);font-family:var(--font-family-mono);font-size:var(--text-sm);isolation:isolate;background:0 0;border:0;align-items:center;gap:.55em;padding:0;display:inline-flex;position:relative}.chip:hover{color:var(--color-ink)}.chip__box{border:1.5px solid;width:.62em;height:.62em}.chip__count{color:var(--color-ink-muted);font-size:var(--text-xs)}.chip[aria-pressed=true]{color:var(--color-ink);font-weight:var(--weight-bold)}.chip[aria-pressed=true] .chip__box{background:currentColor}.chip:after{content:"";z-index:-1;background:var(--color-highlight);height:.5em;opacity:var(--highlight-opacity);mix-blend-mode:var(--highlight-blend);transform-origin:0;transition:transform var(--duration-base) var(--ease-draw);border-radius:2px 4px 3px 5px;position:absolute;bottom:.7rem;left:1.1em;right:-.2em;transform:scaleX(0)}.chip[aria-pressed=true]:after{transform:scaleX(1)}.chips--segmented{gap:var(--space-2xs) var(--space-xs)}.chips--segmented .chip{padding-inline:var(--space-md);font-family:var(--font-family-sans);font-weight:500}.chips--segmented .chip:before{content:"";z-index:-1;border:var(--border-hair);border-radius:var(--radius-md);background:var(--color-panel-strong);transition:background-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);position:absolute;inset:.3125rem 0}.chips--segmented .chip:hover:before{border-color:var(--color-rule-strong)}.chips--segmented .chip[aria-pressed=true]{color:var(--color-selected-ink);font-weight:var(--weight-bold)}.chips--segmented .chip[aria-pressed=true]:before{border-color:var(--color-link);background:var(--color-selected)}.chips--segmented .chip:after{left:var(--space-md);right:var(--space-md);background:var(--color-tag);opacity:1;mix-blend-mode:normal;border-radius:1px;height:2px;bottom:.5rem}.chips--segmented .chip[aria-pressed=true] .chip__count{color:inherit}.action-link{min-height:var(--target-min);font-family:var(--font-family-mono);font-size:var(--text-sm);color:var(--color-link);align-items:center;gap:.4em;text-decoration:none;display:inline-flex}.action-link:hover{text-decoration:underline 1px}.action-link__arrow{transition:transform var(--duration-base) var(--ease-out)}.action-link:hover .action-link__arrow{transform:translate(2px)}.prose{max-width:var(--measure);font-size:var(--text-base)}.prose>*+*{margin-top:var(--space-md)}.prose :where(h2){margin-top:var(--space-2xl);font-size:var(--text-xl)}.prose :where(h3){margin-top:var(--space-xl);font-size:var(--text-lg)}.prose :where(h4){margin-top:var(--space-lg);font-family:var(--font-family-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-label);text-transform:uppercase}.prose :where(ul,ol){padding-left:1.4em}.prose :where(li+li){margin-top:var(--space-2xs)}.prose :where(blockquote){padding-left:var(--space-md);border-left:2px solid var(--color-highlight);color:var(--color-ink-secondary);font-family:var(--font-family-serif);font-style:italic}.prose :where(:not(pre)>code){border-radius:var(--radius-sm);background:var(--color-panel);padding:.1em .3em;font-size:.86em}.prose :where(pre){padding:var(--space-md);border:var(--border-hair);border-radius:var(--radius-sm);font-size:var(--text-sm);line-height:var(--leading-mono);max-width:100%;overflow-x:auto}.prose :where(pre.astro-code){background-color:var(--color-panel)!important}@media (prefers-reduced-motion:no-preference){.prose :where(pre.astro-code,pre.astro-code span){transition:color .36s var(--ease-standard)}}.prose :where(img){border:var(--border-hair)}.table-scroll{border-top:var(--border-ink);border-bottom:var(--border-hair);max-width:100%;overflow-x:auto}.table-scroll table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.table-scroll :where(th,td){padding:var(--space-xs) var(--space-sm);border-bottom:var(--border-hair);text-align:left;vertical-align:top}.table-scroll th{font-family:var(--font-family-mono);font-size:var(--text-xs);font-weight:var(--weight-regular);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-secondary)}:root{--ruler-image:linear-gradient(var(--color-rule-strong), var(--color-rule-strong)), repeating-linear-gradient(to right, var(--color-rule) 0 1px, transparent 1px 12px);--ruler-size:100% 1px, 100% 6px;--ruler-position:bottom, bottom 1px left 0;--ruler-height:7px}.vt-stage{z-index:var(--z-transition);pointer-events:none;position:fixed;inset:0;overflow:hidden}.vt-stage .bg-contours,.vt-stage .workspace-grid,.vt-stage .paper-grid{z-index:0;position:absolute}html .vt-stage .site-header[data-variant]{background-image:none;border-bottom-color:#0000;position:absolute;inset:0 0 auto}.vt-rule{height:var(--ruler-height);position:absolute;inset:0 0 auto}.vt-rule__hair,.vt-rule__ruler{position:absolute;inset:0}.vt-rule__hair{border-bottom:var(--border-hair)}.vt-rule__ruler{background-image:var(--ruler-image);background-size:var(--ruler-size);background-position:var(--ruler-position);background-repeat:no-repeat}html.vt-leaving body{pointer-events:none}html.vt-leaving:not(.vt-swapping) .site-header[data-variant=main]{border-bottom-color:#0000}html.vt-leaving-lab .site-header[data-variant=lab]{background-image:none}.vt-marker{z-index:var(--z-transition);background:var(--color-highlight);transform-origin:0;pointer-events:none;border-radius:2px 3px 1px 2px;height:3px;position:fixed}.vt-loader{z-index:calc(var(--z-transition) + 1);place-content:center;justify-items:center;gap:var(--space-sm);color:var(--color-ink-secondary);font-family:var(--font-family-mono);font-size:var(--text-sm);pointer-events:none;animation:vt-fade var(--duration-medium) var(--ease-standard) .2s both;display:grid;position:fixed;inset:0}.vt-loader__ring{border:1.5px solid var(--color-rule-strong);border-top-color:var(--color-ink);border-radius:50%;width:2.25rem;height:2.25rem;animation:.9s linear infinite vt-spin}@keyframes vt-spin{to{rotate:1turn}}html.vt-swapping .site-nav__link[aria-current=page]:after{opacity:0}html.vt-swapping .site-nav__link[data-vt-nav=to]{color:var(--color-ink)}html.vt-swapping .site-nav__link[data-vt-nav=from]{color:var(--color-ink-secondary)}@keyframes vt-rise{0%{opacity:0;translate:0 10px}}@keyframes vt-slide{0%{opacity:0;translate:-10px}}@keyframes vt-fade{0%{opacity:0}}@keyframes vt-sheet-fwd{0%{opacity:0;translate:32px}}@keyframes vt-sheet-back{0%{opacity:0;translate:-32px}}@media (prefers-reduced-motion:no-preference){html:is(.vt-from-main,.vt-from-me,.vt-from-resume) body[data-surface=lab] main>:not(.workspace),html:is(.vt-from-main,.vt-from-me,.vt-from-resume) body[data-surface=lab] .ws-bar{animation:vt-rise var(--duration-medium) var(--ease-standard) 30ms both}html:is(.vt-from-main,.vt-from-me,.vt-from-resume) body[data-surface=lab] .ws-panel{animation:vt-slide var(--duration-medium) var(--ease-standard) both}html:is(.vt-from-main,.vt-from-me,.vt-from-resume) body[data-surface=lab] .lab-grid>li{animation:vt-rise var(--duration-medium) var(--ease-standard) both;animation-delay:calc(60ms + min(var(--i,0), 7) * 35ms)}html:is(.vt-from-main,.vt-from-me,.vt-from-resume) body[data-surface=lab] .site-footer{animation:vt-fade var(--duration-medium) var(--ease-standard) .2s both}html.vt-from-lab body:is([data-surface=main],[data-surface=me],[data-surface=resume]) main{animation:vt-rise var(--duration-page) var(--ease-standard) 40ms both}html.vt-from-lab body:is([data-surface=main],[data-surface=me],[data-surface=resume]) .paper-grid{animation:vt-fade var(--duration-medium) var(--ease-standard) both}html.vt-from-lab body:is([data-surface=main],[data-surface=me],[data-surface=resume]) .site-footer{animation:vt-fade var(--duration-medium) var(--ease-standard) .2s both}html.vt-fwd:is(.vt-from-main,.vt-from-me,.vt-from-resume) body:is([data-surface=main],[data-surface=me],[data-surface=resume]) main{animation:vt-sheet-fwd var(--duration-swap) var(--ease-sheet) both}html.vt-back:is(.vt-from-main,.vt-from-me,.vt-from-resume) body:is([data-surface=main],[data-surface=me],[data-surface=resume]) main{animation:vt-sheet-back var(--duration-swap) var(--ease-sheet) both}html:is(.vt-from-main,.vt-from-me,.vt-from-resume) body:is([data-surface=main],[data-surface=me],[data-surface=resume]) .site-footer{animation:vt-fade var(--duration-swap) var(--ease-standard) .12s both}}.sheet-tabs__list{isolation:isolate;gap:0 var(--space-lg);overscroll-behavior-x:contain;scrollbar-width:none;margin:0;padding:0;list-style:none;display:flex;position:relative;overflow-x:auto}.sheet-tabs__list::-webkit-scrollbar{display:none}.sheet-tabs__marker-slot{z-index:-1;pointer-events:none;position:absolute;inset:0}.sheet-tabs--explorer .sheet-tabs__marker-slot{z-index:1}.sheet-tab{min-height:var(--target-min);color:var(--color-ink-secondary);font-size:var(--text-md);font-weight:var(--weight-medium);white-space:nowrap;transition:color var(--duration-fast) var(--ease-out);align-items:baseline;gap:.5em;padding-block:.7rem .55rem;line-height:1.3;text-decoration:none;display:inline-flex;position:relative}.sheet-tab:hover{color:var(--color-ink);text-decoration:none}.sheet-tab__index,.sheet-tab__count{color:var(--color-ink-muted);font-size:var(--text-xs);transition:color var(--duration-fast) var(--ease-out);font-weight:600}.sheet-tab__index:has(.icon){flex:0 0 1rem;align-self:center;display:inline-flex;transform:translateY(-.03em)}.sheet-tab__count:before{content:"("}.sheet-tab__count:after{content:")"}.sheet-tab[data-current],.sheet-tab[data-current] .sheet-tab__index{color:var(--color-ink)}.sheet-tabs__marker{left:var(--marker-x,0);top:calc(var(--marker-y,0) + var(--marker-h,0) - 4px);width:var(--marker-w,0);background:var(--color-highlight);opacity:0;border-radius:2px 3px 1px 2px;height:4px;position:absolute}[data-sheets][data-ready] .sheet-tabs__marker{opacity:1}[data-sheets]:not([data-ready]) .sheet-tab[data-current]:after{content:"";background:var(--color-highlight);border-radius:2px 3px 1px 2px;height:4px;position:absolute;inset:auto 0 0}.sheet-tabs--index{z-index:var(--z-sticky);border-bottom:var(--border-ink);background:color-mix(in srgb, var(--color-canvas) 94%, transparent);position:sticky;top:0}.sheets__stage{position:relative}.sheet{scroll-margin-top:calc(var(--target-min) + var(--space-lg))}html.js [data-sheets]:not([data-ready]) [data-sheet-panel]:not([data-default]),html.js [data-sheets]:not([data-ready]):has([data-sheet-panel]:target) [data-sheet-panel]:not(:target){display:none}html.js [data-sheets]:not([data-ready]):has([data-sheet-panel]:target) [data-sheet-panel]:target{display:block}html.js [data-sheets] .sheet__title{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}html.vt-sheet::view-transition{pointer-events:none}html.vt-sheet::view-transition-group(root){animation-duration:var(--duration-fast)}html.vt-sheet::view-transition-group(sheet){animation-duration:var(--duration-sheet);animation-timing-function:var(--ease-sheet);overflow:clip}html.vt-sheet::view-transition-old(sheet),html.vt-sheet::view-transition-new(sheet){mix-blend-mode:normal;height:auto;animation-duration:var(--duration-sheet);animation-fill-mode:both}html.vt-sheet::view-transition-old(sheet){animation-timing-function:var(--ease-standard)}html.vt-sheet::view-transition-new(sheet){animation-timing-function:var(--ease-sheet)}html[data-sheet-dir=forward]::view-transition-old(sheet){animation-name:sheet-out-forward}html[data-sheet-dir=forward]::view-transition-new(sheet){animation-name:sheet-in-forward}html[data-sheet-dir=backward]::view-transition-old(sheet){animation-name:sheet-out-backward}html[data-sheet-dir=backward]::view-transition-new(sheet){animation-name:sheet-in-backward}html.vt-sheet::view-transition-group(sheet-marker){animation-duration:var(--duration-medium);animation-timing-function:var(--ease-emphasized)}html.vt-sheet::view-transition-group(sheet-footer){animation-duration:var(--duration-sheet);animation-timing-function:var(--ease-sheet)}@keyframes sheet-out-forward{0%{opacity:1;translate:0}55%{opacity:0}to{opacity:0;translate:calc(var(--sheet-travel-out) * -1) 0;scale:.99}}@keyframes sheet-in-forward{0%{opacity:0;translate:var(--sheet-travel-in) 0}20%{opacity:0}70%{opacity:1}to{opacity:1;translate:0}}@keyframes sheet-out-backward{0%{opacity:1;translate:0}55%{opacity:0}to{opacity:0;translate:var(--sheet-travel-out) 0;scale:.99}}@keyframes sheet-in-backward{0%{opacity:0;translate:calc(var(--sheet-travel-in) * -1) 0}20%{opacity:0}70%{opacity:1}to{opacity:1;translate:0}}@media (width<640px){:root{--sheet-travel-in:9%;--sheet-travel-out:4%}.sheet-tabs--index .sheet-tabs__list{padding-right:2rem;mask-image:linear-gradient(90deg,#000 calc(100% - 2rem),#0000)}}html.vt-filtering{view-transition-name:none}html.vt-filtering::view-transition{pointer-events:none}html.vt-filtering::view-transition-group(*){animation-duration:var(--duration-medium);animation-timing-function:var(--ease-standard)}@media print{body{background:0 0}.no-print,.bg-contours,.paper-grid,.workspace-grid{display:none!important}}.icon[data-astro-cid-zgufigjl]{flex:none}.contact-modal[data-astro-cid-bdknwr47]{--modal-top:clamp(1rem, 8dvh, 5rem);width:min(37rem,100vw - 2rem);max-height:calc(100dvh - var(--modal-top) - 1rem);margin:var(--modal-top) auto auto;padding:0 var(--space-lg) var(--space-lg);border:var(--border-ink);border-radius:var(--radius-sm);background-color:var(--color-canvas);background-image:var(--texture-image);color:var(--color-ink);box-shadow:var(--shadow-dialog);overscroll-behavior:contain;overflow:auto}.contact-modal[data-astro-cid-bdknwr47]::backdrop{background:var(--color-backdrop)}.contact-modal[data-astro-cid-bdknwr47]{opacity:0;transition:opacity .18s var(--ease-standard), transform .18s var(--ease-standard), display .18s allow-discrete, overlay .18s allow-discrete;transform:translateY(8px)}.contact-modal[data-astro-cid-bdknwr47][open]{opacity:1;transform:none}.contact-modal[data-astro-cid-bdknwr47]::backdrop{opacity:0;transition:opacity .18s var(--ease-standard), display .18s allow-discrete, overlay .18s allow-discrete}.contact-modal[data-astro-cid-bdknwr47][open]::backdrop{opacity:1}@starting-style{.contact-modal[data-astro-cid-bdknwr47][open]{opacity:0;transform:translateY(8px)}.contact-modal[data-astro-cid-bdknwr47][open]::backdrop{opacity:0}}.contact-modal__head[data-astro-cid-bdknwr47]{z-index:1;margin-bottom:var(--space-xs);padding-top:var(--space-md);padding-bottom:var(--space-2xs);border-bottom:var(--border-hair);background:inherit;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.contact-modal__close[data-astro-cid-bdknwr47]{width:var(--target-min);height:var(--target-min);margin-right:calc(var(--space-xs) * -1);border-radius:var(--radius-sm);color:var(--color-ink-secondary);background:0 0;border:1px solid #0000;place-items:center;padding:0;display:grid}.contact-modal__close[data-astro-cid-bdknwr47]:hover:not(:disabled){border-color:var(--color-rule);color:var(--color-ink)}.contact-modal__close[data-astro-cid-bdknwr47]:disabled{opacity:.45}.contact-modal__title[data-astro-cid-bdknwr47]{font-size:var(--text-xl)}.contact-modal__intro[data-astro-cid-bdknwr47]{margin-top:var(--space-2xs);color:var(--color-ink-secondary);font-size:var(--text-sm)}.contact-form[data-astro-cid-bdknwr47]{margin-top:var(--space-md)}.contact-form__grid[data-astro-cid-bdknwr47]{gap:var(--space-sm) var(--space-md);display:grid}.contact-field[data-astro-cid-bdknwr47]{gap:var(--space-3xs);min-width:0;display:grid}.contact-field__label[data-astro-cid-bdknwr47]{color:var(--color-ink);font-size:var(--text-sm);font-weight:600}.contact-field__control[data-astro-cid-bdknwr47]{width:100%;min-height:var(--target-min);border:1px solid var(--color-ink-muted);border-radius:var(--radius-sm);background:var(--color-canvas);color:var(--color-ink);font-family:var(--font-family-sans);font-size:var(--text-base);line-height:var(--leading-snug);padding:.5rem .65rem}.contact-field__control[data-astro-cid-bdknwr47]:hover{border-color:var(--color-ink-secondary)}.contact-field__control[data-astro-cid-bdknwr47]:focus-visible{border-color:var(--color-focus);outline-offset:1px}.contact-field__control[data-astro-cid-bdknwr47][aria-invalid=true]{border-color:var(--color-danger);box-shadow:inset 3px 0 0 var(--color-danger)}.contact-field__control[data-astro-cid-bdknwr47]:read-only{color:var(--color-ink-secondary)}.contact-field__control--message[data-astro-cid-bdknwr47]{resize:vertical;min-height:9.5rem}.contact-field__error[data-astro-cid-bdknwr47]{color:var(--color-danger);font-size:var(--text-sm)}.contact-field__error[data-astro-cid-bdknwr47]:empty,.contact-field__count[data-astro-cid-bdknwr47]:empty{display:none}.contact-field__foot[data-astro-cid-bdknwr47]{justify-content:space-between;align-items:baseline;gap:var(--space-sm);display:flex}.contact-field__count[data-astro-cid-bdknwr47]{color:var(--color-ink-muted);font-family:var(--font-family-mono);font-size:var(--text-xs);white-space:nowrap;margin-left:auto}.contact-field__count[data-astro-cid-bdknwr47][data-over]{color:var(--color-danger)}.contact-form__trap[data-astro-cid-bdknwr47]{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.contact-form__turnstile[data-astro-cid-bdknwr47]{margin-top:var(--space-sm)}.contact-form__problem[data-astro-cid-bdknwr47]{margin-top:var(--space-sm);padding:var(--space-2xs) var(--space-sm);border:1px solid var(--color-danger);border-radius:var(--radius-sm);color:var(--color-ink);font-size:var(--text-sm);white-space:pre-line;border-left-width:3px}.contact-form__problem[data-astro-cid-bdknwr47]:empty{display:none}.contact-form__actions[data-astro-cid-bdknwr47]{align-items:center;gap:var(--space-xs) var(--space-md);margin-top:var(--space-md);flex-wrap:wrap;display:flex}.contact-form__submit[data-astro-cid-bdknwr47][aria-disabled=true]{cursor:progress;opacity:.75}.contact-form__status[data-astro-cid-bdknwr47]{color:var(--color-ink-secondary);font-size:var(--text-sm)}.contact-form__status[data-astro-cid-bdknwr47]:empty{display:none}.contact-modal__done[data-astro-cid-bdknwr47]{margin-top:var(--space-md);padding:var(--space-md) 0 var(--space-2xs)}.contact-modal__done-title[data-astro-cid-bdknwr47]{align-items:center;gap:var(--space-2xs);font-size:var(--text-lg);display:flex}.contact-modal__done-title[data-astro-cid-bdknwr47] .contact-modal__done-mark{color:var(--color-success)}[data-astro-cid-bdknwr47][data-preview] .contact-modal__done-title[data-astro-cid-bdknwr47] .contact-modal__done-mark{display:none}.contact-modal__done-body[data-astro-cid-bdknwr47]{margin-top:var(--space-2xs);color:var(--color-ink-secondary)}.contact-modal__done-close[data-astro-cid-bdknwr47]{margin-top:var(--space-md)}.contact-modal__direct[data-astro-cid-bdknwr47]{align-items:center;gap:0 var(--space-sm);margin-top:var(--space-md);padding-top:var(--space-xs);border-top:var(--border-hair);color:var(--color-ink-secondary);font-family:var(--font-family-mono);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.contact-modal__address[data-astro-cid-bdknwr47]{overflow-wrap:anywhere}.contact-modal__direct[data-astro-cid-bdknwr47]:not([data-emphasis]) .contact-modal__direct-label[data-astro-cid-bdknwr47]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.contact-modal__direct[data-astro-cid-bdknwr47][data-emphasis]{border-top-color:var(--color-ink-muted);color:var(--color-ink)}.contact-modal__direct-label[data-astro-cid-bdknwr47]{font-family:var(--font-family-sans)}[data-astro-cid-bdknwr47][data-contact-address]{user-select:all}.contact-modal__copy[data-astro-cid-bdknwr47]{min-height:2.25rem;padding:0 var(--space-2xs);color:var(--color-link);font-family:var(--font-family-mono);font-size:var(--text-xs);text-underline-offset:.2em;background:0 0;border:0;align-items:center;gap:.35em;text-decoration:underline;display:inline-flex}.contact-modal__copy[data-astro-cid-bdknwr47]:hover{color:var(--color-link-hover)}.contact-modal__copy-icon[data-astro-cid-bdknwr47]{display:grid}.contact-modal__copy-icon[data-astro-cid-bdknwr47]>*{grid-area:1/1}.contact-modal__copy-icon[data-astro-cid-bdknwr47] .contact-modal__icon-check,[data-astro-cid-bdknwr47][data-copied] .contact-modal__copy-icon[data-astro-cid-bdknwr47] .contact-modal__icon-copy{visibility:hidden}[data-astro-cid-bdknwr47][data-copied] .contact-modal__copy-icon[data-astro-cid-bdknwr47] .contact-modal__icon-check{visibility:visible}@media (width<640px){.contact-modal[data-astro-cid-bdknwr47]{--modal-top:.75rem;width:calc(100vw - 1.5rem);padding-inline:var(--space-md)}}@media (width>=640px){.contact-form__grid[data-astro-cid-bdknwr47]{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-field--subject[data-astro-cid-bdknwr47],.contact-field--message[data-astro-cid-bdknwr47]{grid-column:1/-1}}.ext-link[data-astro-cid-pqi4yrft]{align-items:center;gap:.25em;display:inline-flex}.ext-link[data-astro-cid-pqi4yrft] .ext-link__icon{transition:transform var(--duration-fast) var(--ease-out)}.ext-link[data-astro-cid-pqi4yrft]:hover .ext-link__icon{transform:translate(1px,-1px)}.ext-link[data-astro-cid-uqds6afo]{align-items:center;gap:.25em;display:inline-flex}.btn[data-astro-cid-uqds6afo].ext-link{gap:var(--space-xs)}[data-astro-cid-uqds6afo]:where(button.contact-link){color:var(--color-link);font:inherit;text-underline-offset:.2em;cursor:pointer;background:0 0;border:0;align-items:center;padding:0;text-decoration:underline 1px;display:inline-flex}[data-astro-cid-uqds6afo]:where(button.contact-link):hover{color:var(--color-link-hover);text-decoration-thickness:2px}.socials[data-astro-cid-65jgskrx]{flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.socials--icons[data-astro-cid-65jgskrx]{gap:var(--space-2xs)}.socials--inline[data-astro-cid-65jgskrx]{gap:0 var(--space-md)}.socials__link[data-astro-cid-65jgskrx]{align-items:center;gap:var(--space-xs);min-height:var(--target-min);color:var(--color-ink);text-decoration:none;display:inline-flex}.socials--icons[data-astro-cid-65jgskrx] .socials__link[data-astro-cid-65jgskrx]{min-width:var(--target-min);border-radius:var(--radius-sm);color:var(--color-ink-secondary);transition:color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);border:1px solid #0000;justify-content:center}.socials--icons[data-astro-cid-65jgskrx] .socials__link[data-astro-cid-65jgskrx]:hover{border-color:var(--color-rule);color:var(--color-ink)}.socials--inline[data-astro-cid-65jgskrx] .socials__link{min-height:2rem;color:var(--color-ink);font-size:var(--text-sm);gap:.2em;text-decoration:none}.socials--inline[data-astro-cid-65jgskrx] .socials__link:hover{text-underline-offset:.2em;text-decoration:underline}.socials__icon[data-astro-cid-65jgskrx]{flex:none}.socials--inline[data-astro-cid-65jgskrx] .socials__ext{color:var(--color-ink-muted)}.site-footer[data-astro-cid-bddg4lij]{margin-top:var(--space-3xl);padding-block:var(--space-md) var(--space-2xs);border-top:var(--border-ink)}.site-footer__grid[data-astro-cid-bddg4lij]{gap:var(--space-xs) var(--space-2xl);display:grid}.site-footer__row[data-astro-cid-bddg4lij]{align-items:baseline;gap:0 var(--space-md);display:grid}.site-footer__label[data-astro-cid-bddg4lij]{color:var(--color-ink-muted);line-height:2rem}.site-footer__links[data-astro-cid-bddg4lij]{gap:0 var(--space-md);flex-wrap:wrap;margin:0;padding:0;display:flex}.site-footer__links[data-astro-cid-bddg4lij] a[data-astro-cid-bddg4lij]{min-height:2rem;color:var(--color-ink);font-size:var(--text-sm);align-items:center;text-decoration:none;display:inline-flex}.site-footer__links[data-astro-cid-bddg4lij] a[data-astro-cid-bddg4lij]:hover{text-underline-offset:.2em;text-decoration:underline}.site-footer__colophon[data-astro-cid-bddg4lij]{color:var(--color-ink-secondary);font-size:var(--text-sm);line-height:2rem}.site-footer__base[data-astro-cid-bddg4lij]{justify-content:space-between;align-items:center;gap:0 var(--space-sm);margin-top:var(--space-sm);border-top:var(--border-hair);color:var(--color-ink-secondary);font-family:var(--font-family-mono);font-size:var(--text-xs);flex-wrap:wrap;display:flex}.site-footer__top[data-astro-cid-bddg4lij]{min-height:var(--target-min);color:var(--color-ink-secondary);align-items:center;gap:.4em;display:inline-flex}.site-footer__top[data-astro-cid-bddg4lij] .site-footer__top-icon{transform:rotate(-90deg)}body[data-surface=lab] .site-footer[data-astro-cid-bddg4lij] .container[data-astro-cid-bddg4lij]{max-width:none}@media (width>=640px){.site-footer__row[data-astro-cid-bddg4lij]{grid-template-columns:6.5rem minmax(0,1fr)}}@media (width>=1024px){.site-footer[data-astro-cid-bddg4lij]{padding-block:var(--space-xl) var(--space-2xs)}.site-footer__grid[data-astro-cid-bddg4lij]{gap:var(--space-xl);grid-template-columns:repeat(3,minmax(0,1fr))}.site-footer__row[data-astro-cid-bddg4lij]{grid-template-columns:minmax(0,1fr);align-content:start}.site-footer__label[data-astro-cid-bddg4lij]{margin-bottom:var(--space-2xs)}.site-footer__links[data-astro-cid-bddg4lij],.site-footer__row[data-astro-cid-bddg4lij] .socials{flex-direction:column;align-items:flex-start}.site-footer__colophon[data-astro-cid-bddg4lij]{max-width:34ch;line-height:var(--leading-body)}.site-footer__base[data-astro-cid-bddg4lij]{margin-top:var(--space-lg)}}.theme-toggle[data-astro-cid-xcti7gnb]{min-width:var(--target-min);min-height:var(--target-min);color:var(--color-ink-secondary);background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.theme-toggle[data-astro-cid-xcti7gnb]:hover{color:var(--color-ink)}.theme-toggle__icons[data-astro-cid-xcti7gnb]{display:grid}.theme-toggle__icons[data-astro-cid-xcti7gnb]>span[data-astro-cid-xcti7gnb]{transition:opacity .22s var(--ease-standard), transform .32s var(--ease-standard);grid-area:1/1}.theme-toggle__moon[data-astro-cid-xcti7gnb]{opacity:0;transform:rotate(-30deg)scale(.8)}html[data-theme=dark] .theme-toggle__sun[data-astro-cid-xcti7gnb]{opacity:0;transform:rotate(30deg)scale(.8)}html[data-theme=dark] .theme-toggle__moon[data-astro-cid-xcti7gnb]{opacity:1;transform:none}@media (prefers-color-scheme:dark){html:not([data-theme=light]) .theme-toggle__sun[data-astro-cid-xcti7gnb]{opacity:0;transform:rotate(30deg)scale(.8)}html:not([data-theme=light]) .theme-toggle__moon[data-astro-cid-xcti7gnb]{opacity:1;transform:none}}.site-header[data-astro-cid-jae56hh5]{border-bottom:var(--border-hair)}.site-header[data-astro-cid-jae56hh5][data-variant=lab]{background-image:var(--ruler-image);background-size:var(--ruler-size);background-position:var(--ruler-position);background-repeat:no-repeat;border-bottom:0}.site-header__bar[data-astro-cid-jae56hh5]{align-items:center;gap:0 var(--space-md);padding-block:var(--space-2xs);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand tools""nav nav";display:grid}.site-header__brand[data-astro-cid-jae56hh5]{align-items:center;gap:var(--space-xs);grid-area:brand;min-width:0;display:flex}.wordmark[data-astro-cid-jae56hh5]{min-height:var(--target-min);color:var(--color-ink);font-family:var(--font-family-sans);font-size:var(--text-md);font-weight:var(--weight-bold);letter-spacing:-.01em;align-items:center;text-decoration:none;display:inline-flex}.site-nav[data-astro-cid-jae56hh5]{grid-area:nav;min-width:0}.site-nav[data-astro-cid-jae56hh5] .site-nav__contact{min-height:var(--target-min);color:var(--color-ink-secondary);font-family:var(--font-family-mono);font-size:var(--text-sm);text-decoration:none}.site-nav[data-astro-cid-jae56hh5] .site-nav__contact:hover{color:var(--color-ink);text-underline-offset:.3em;text-decoration:underline}.site-nav__list[data-astro-cid-jae56hh5]{justify-content:space-between;gap:0 var(--space-md);margin:0;padding:0;display:flex}.site-nav__link[data-astro-cid-jae56hh5]{min-height:var(--target-min);color:var(--color-ink-secondary);font-family:var(--font-family-mono);font-size:var(--text-sm);font-weight:var(--weight-regular);white-space:nowrap;transition:color var(--duration-fast) var(--ease-out);align-items:center;gap:.2em;text-decoration:none;display:inline-flex;position:relative}.site-nav__link[data-astro-cid-jae56hh5]:hover{color:var(--color-ink);text-decoration:none}.site-nav__link[data-astro-cid-jae56hh5] .site-nav__away{color:var(--color-ink-muted);transition:transform var(--duration-fast) var(--ease-out)}@media (prefers-reduced-motion:no-preference){.site-nav__link[data-astro-cid-jae56hh5]:hover .site-nav__away{transform:translate(1px,-1px)}}.site-nav__link[data-astro-cid-jae56hh5][aria-current=page]{color:var(--color-ink)}.site-nav__link[data-astro-cid-jae56hh5][aria-current=page]:after{content:"";background:var(--color-highlight);border-radius:2px 3px 1px 2px;height:3px;position:absolute;inset:auto 0 .45rem}.site-header__tools[data-astro-cid-jae56hh5]{align-items:center;gap:var(--space-md);grid-area:tools;display:flex}@media (width>=768px){.site-header__bar[data-astro-cid-jae56hh5]{padding-block:var(--space-xs);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"brand nav tools"}.site-nav__list[data-astro-cid-jae56hh5]{justify-content:flex-end;gap:0 var(--space-xl)}.site-header[data-astro-cid-jae56hh5][data-variant=main] .site-header__tools[data-astro-cid-jae56hh5]{padding-left:var(--space-lg);border-left:var(--border-hair)}}.site-header[data-astro-cid-jae56hh5][data-variant=lab] .container[data-astro-cid-jae56hh5]{max-width:none}.site-header[data-astro-cid-jae56hh5][data-variant=lab] .site-header__bar[data-astro-cid-jae56hh5]{padding-block:0 var(--space-3xs);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand tools"}.lab-brand[data-astro-cid-jae56hh5]{min-height:var(--target-min);color:var(--color-ink-secondary);font-family:var(--font-family-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);align-items:center;text-decoration:none;display:inline-flex}.lab-brand[data-astro-cid-jae56hh5]:hover{color:var(--color-ink)}.lab-brand__slash[data-astro-cid-jae56hh5]{color:var(--color-ink-muted);font-family:var(--font-family-mono);font-size:var(--text-xs)}.lab-mark[data-astro-cid-jae56hh5]{background:var(--color-ink);color:var(--color-ink-inverse);font-family:var(--font-family-mono);font-size:var(--text-sm);font-weight:var(--weight-bold);letter-spacing:.14em;align-items:center;padding-inline:.55em;line-height:1.9;text-decoration:none;display:inline-flex}.lab-mark[data-astro-cid-jae56hh5]:hover{color:var(--color-ink-inverse)}.site-header[data-astro-cid-jae56hh5][data-variant=lab] .site-nav__link[data-astro-cid-jae56hh5],.site-header[data-astro-cid-jae56hh5][data-variant=lab] .site-header__tools[data-astro-cid-jae56hh5] .contact-link{min-height:var(--target-min);color:var(--color-ink);font-family:var(--font-family-mono);font-size:var(--text-sm);font-weight:var(--weight-regular);letter-spacing:0;align-items:center;text-decoration:none;display:inline-flex}.site-header[data-astro-cid-jae56hh5][data-variant=lab] .site-nav__link[data-astro-cid-jae56hh5]:hover,.site-header[data-astro-cid-jae56hh5][data-variant=lab] .site-header__tools[data-astro-cid-jae56hh5] .contact-link:hover{text-underline-offset:.3em;text-decoration:underline}.site-header[data-astro-cid-jae56hh5][data-variant=lab] .site-nav__list[data-astro-cid-jae56hh5]{justify-content:flex-start;gap:0 var(--space-lg)}.site-header[data-astro-cid-jae56hh5][data-variant=lab] .site-header__tools[data-astro-cid-jae56hh5]{gap:var(--space-sm)}@media (width>=768px){.site-header[data-astro-cid-jae56hh5][data-variant=lab] .site-nav__list[data-astro-cid-jae56hh5]{justify-content:flex-end}.site-header[data-astro-cid-jae56hh5][data-variant=lab] .site-header__tools[data-astro-cid-jae56hh5]{padding-left:var(--space-sm)}}.skip-link[data-astro-cid-z4jru4n3]{top:var(--space-xs);left:var(--space-xs);z-index:var(--z-skip);padding:var(--space-xs) var(--space-md);border:var(--border-ink);background:var(--color-canvas);color:var(--color-ink);font-family:var(--font-family-mono);font-size:var(--text-sm);position:absolute;transform:translateY(-200%)}.skip-link[data-astro-cid-z4jru4n3]:focus-visible{transform:none}main[data-astro-cid-z4jru4n3]:focus{outline:none}
