@font-face{font-family:Funnel Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/281f78f0f7b2295a-s.2b6q60c5wuxbk.woff2)format("woff2");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:Funnel Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/17c5b81e8071f959-s.p.3ou6ll3x9dcxi.woff2)format("woff2");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:Funnel Sans Fallback;src:local(Arial);ascent-override:98.88%;descent-override:24.72%;line-gap-override:0.0%;size-adjust:101.13%}.funnel_sans_c8bb453-module__g42Uia__className{font-family:Funnel Sans,Funnel Sans Fallback;font-style:normal;font-weight:400}.funnel_sans_c8bb453-module__g42Uia__variable{--font-body:"Funnel Sans", "Funnel Sans Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.woff2)format("woff2");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:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_7a625e00-module__wRgq4q__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_7a625e00-module__wRgq4q__variable{--font-display:"JetBrains Mono", "JetBrains Mono Fallback"}
*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--blueprint-950:#081a2e;--blueprint-900:#0e2a47;--blueprint-800:#123354;--blueprint-700:#1a3a5c;--blueprint-600:#2e5578;--blueprint-500:#3e6a92;--chalk-100:#eaf2fa;--chalk-300:#bfd8f2;--chalk-400:#9fbbd6;--chalk-500:#6e92b4;--mint-300:#8ff0c4;--mint-400:#5ee6a8;--mint-900:#0a3d28;--signal-amber:#f5c36b;--signal-red:#f08585;--ground:var(--blueprint-900);--ground-deep:var(--blueprint-950);--surface:var(--blueprint-800);--surface-hover:var(--blueprint-700);--hairline:var(--blueprint-600);--edge-dormant:var(--blueprint-500);--line-1:var(--chalk-100);--line-2:var(--chalk-300);--line-3:var(--chalk-400);--line-4:var(--chalk-500);--accent:var(--mint-400);--accent-hover:var(--mint-300);--on-accent:var(--mint-900);--warn:var(--signal-amber);--error:var(--signal-red);--scrim:#081a2ecc;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--grid-unit:64px;--bento-max:1000px;--bento-gap:22px;--img-h-sm:200px;--img-h-hero:420px;--sidebar-fill-opacity:.92;--type-display:2.5rem;--type-title:1.5rem;--type-heading:1.125rem;--type-body:1rem;--type-small:.875rem;--type-label:.75rem;--type-annotation:.6875rem;--type-quote:1.0625rem;--line-hairline:1px;--line-drawn:1.5px;--line-dimension:.75px;--line-heavy:2px;--radius:0;--radius-node:50%;--radius-card:8px;--radius-pill:999px;--shadow-card:0 8px 22px -8px #00000080, 0 2px 6px -2px #00000059;--motion-instant:80ms;--ease-instant:linear;--motion-draw:.24s;--ease-draw:cubic-bezier(.4, 0, .2, 1);--motion-trace:.6s;--ease-trace:cubic-bezier(.65, 0, .35, 1);--motion-hover:.26s;--ease-out:cubic-bezier(0, 0, .2, 1);--motion-reveal:.45s}html{background-color:var(--ground);color:var(--line-1);font-family:var(--font-body), system-ui, sans-serif}h1,h2,h3,h4,h5,h6{font-family:var(--font-display), ui-monospace, monospace}body{background-color:var(--ground);min-height:100vh;color:var(--line-1)}:focus-visible{outline:var(--line-drawn) solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{animation-duration:var(--motion-instant)!important;transition-duration:var(--motion-instant)!important;scroll-behavior:auto!important;animation-iteration-count:1!important}}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.border-hairline{border:var(--line-hairline) solid var(--hairline)}.border-drawn{border:var(--line-drawn) solid var(--line-1)}@keyframes kate-fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:kate-fade-in var(--motion-draw) var(--ease-draw)}.project-card{isolation:isolate;background-color:var(--surface);background-image:linear-gradient(to bottom, color-mix(in srgb, var(--surface) 93%, white) 0%, var(--surface) 55%, color-mix(in srgb, var(--surface) 95%, black) 100%);transition:transform var(--motion-hover) var(--ease-out), box-shadow var(--motion-hover) var(--ease-out);position:relative}.project-card:before{content:"";z-index:-1;border-radius:inherit;background-image:linear-gradient(to bottom, color-mix(in srgb, var(--surface) 86%, white) 0%, color-mix(in srgb, var(--surface) 93%, white) 55%, color-mix(in srgb, var(--surface) 99%, white) 100%);opacity:0;transition:opacity var(--motion-hover) var(--ease-out);pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 40px #ffffff0a}.project-card:hover:before,.project-card:focus-visible:before{opacity:1}.project-card:after{content:"";z-index:1;border:var(--line-hairline) dashed transparent;border-radius:inherit;pointer-events:none;transition:border-color var(--motion-hover) var(--ease-out);position:absolute;inset:0}.project-card:active:after{border:var(--line-heavy) solid var(--accent)}@media (prefers-reduced-motion:no-preference){.project-card:hover,.project-card:focus-visible{transform:translateY(-2px)}}.card-image img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.desktop-field{background-color:var(--ground);background-image:radial-gradient(140% 120% at 50% 35%, var(--ground) 0%, var(--ground-deep) 55%, color-mix(in srgb, var(--ground-deep) 78%, black) 100%)}.social-icon{color:var(--line-4);transition:color var(--motion-hover) var(--ease-out);display:inline-flex;position:relative}.social-icon:hover,.social-icon:focus-visible{color:var(--accent)}.social-tooltip-layer{z-index:30;pointer-events:none;position:fixed;inset:0}.social-tooltip{z-index:20;padding:2px var(--space-1);font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-label);white-space:nowrap;color:var(--accent);background-color:var(--surface);border:var(--line-hairline) solid color-mix(in srgb, var(--accent) 30%, transparent);border-radius:var(--radius-card);opacity:0;transition:opacity .12s var(--ease-out), transform .12s var(--ease-out);pointer-events:none;line-height:1;transition-delay:0s;position:absolute;transform:translateY(2px)}.social-tooltip[data-open]{opacity:1;transition-delay:.15s;transform:translateY(0)}.social-tooltip[data-side=top]{margin-bottom:var(--space-3)}.social-tooltip[data-side=bottom]{margin-top:var(--space-3)}.social-tooltip-layer[data-suppress] .social-tooltip{opacity:0!important;transition-duration:0s!important}@media (prefers-reduced-motion:reduce){.social-tooltip,.social-tooltip[data-open]{transition-property:none;transform:none}}.type-cursor{vertical-align:text-bottom;opacity:.7;background-color:currentColor;width:.5em;height:1em;margin-left:2px;animation:1s step-end infinite type-blink;display:inline-block}@keyframes type-blink{50%{opacity:0}}.project-bento{gap:var(--bento-gap);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;width:100%;display:grid}@media (max-width:560px){.project-bento{grid-template-columns:1fr}}.project-window{width:100%;min-width:0;min-height:0;box-shadow:var(--shadow-card)}.window-titlebar{background-color:color-mix(in srgb, var(--surface) 93%, white);border-bottom:var(--line-hairline) solid #ffffff14;align-items:center;padding:7px 20px;display:flex}.window-titlebar--sm{padding:5px 16px}.card-meta{opacity:0;transition:grid-template-rows var(--motion-hover) var(--ease-out), opacity var(--motion-hover) var(--ease-out);grid-template-rows:0fr;display:grid}.card-meta>*{min-height:0;overflow:hidden}.project-card:hover .card-meta,.project-card:focus-visible .card-meta{opacity:1;grid-template-rows:1fr}.card-meta-rows{-moz-column-gap:var(--space-4);align-items:baseline;column-gap:var(--space-4);row-gap:var(--space-1);margin-top:var(--space-3);padding-top:var(--space-3);border-top:var(--line-hairline) solid var(--hairline);grid-template-columns:max-content 1fr;display:grid}@media (hover:none){.card-meta{opacity:1;grid-template-rows:1fr}}@media (max-width:560px){.card-meta{opacity:1;grid-template-rows:1fr}}@media (prefers-reduced-motion:reduce){.card-meta{transition-property:none}}.status-bar{-moz-column-gap:var(--space-3);align-items:baseline;column-gap:var(--space-3);row-gap:var(--space-1);margin:var(--space-8) 0;font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-annotation);letter-spacing:.02em;flex-wrap:wrap;line-height:1.4;display:flex}.status-bar-pair{align-items:baseline;gap:var(--space-2);display:inline-flex}.status-bar-label,.status-bar-sep{color:var(--line-4)}.status-bar-value{color:var(--accent)}.os-sidebar{border-radius:var(--radius-card);background-color:color-mix(in srgb, var(--ground) calc(var(--sidebar-fill-opacity) * 100%), transparent);box-shadow:var(--shadow-card);position:relative}@media (min-width:1024px){.os-sidebar{top:var(--space-6);height:calc(100dvh - 2 * var(--space-6));position:sticky;overflow-y:auto}}.sidebar-link{color:var(--line-3);transition:color var(--motion-hover) var(--ease-out);text-decoration:none}.sidebar-link:hover,.sidebar-link:focus-visible,.sidebar-link[aria-current=page]{color:var(--accent)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.right-0{right:0}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:var(--space-1);margin-bottom:var(--space-1)}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-4{margin-top:var(--space-4);margin-bottom:var(--space-4)}.my-6{margin-top:var(--space-6);margin-bottom:var(--space-6)}.my-8{margin-top:var(--space-8);margin-bottom:var(--space-8)}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-6{margin-bottom:var(--space-6)}.mb-8{margin-bottom:var(--space-8)}.mr-3{margin-right:var(--space-3)}.mt-1{margin-top:var(--space-1)}.mt-10{margin-top:2.5rem}.mt-12{margin-top:var(--space-12)}.mt-16{margin-top:var(--space-16)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-16{height:var(--space-16)}.h-4{height:var(--space-4)}.h-\[0\.72em\]{height:.72em}.h-\[80px\]{height:80px}.h-\[var\(--img-h-sm\)\]{height:var(--img-h-sm)}.h-full{height:100%}.min-h-0{min-height:0}.min-h-\[1\.5em\]{min-height:1.5em}.min-h-screen{min-height:100vh}.w-24{width:6rem}.w-4{width:var(--space-4)}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-\[var\(--bento-max\)\]{max-width:var(--bento-max)}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-grab{cursor:grab}.cursor-se-resize{cursor:se-resize}.touch-none{touch-action:none}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--space-1)}.gap-12{gap:var(--space-12)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.gap-x-6{-moz-column-gap:var(--space-6);column-gap:var(--space-6)}.gap-y-1{row-gap:var(--space-1)}.gap-y-2{row-gap:var(--space-2)}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:var(--radius)}.rounded-\[var\(--radius-card\)\]{border-radius:var(--radius-card)}.border{border-width:1px}.border-0{border-width:0}.border-drawn{border-width:var(--line-drawn)}.border-hairline{border-width:var(--line-hairline)}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-hairline{border-color:var(--hairline)}.bg-accent{background-color:var(--accent)}.bg-line-1{background-color:var(--line-1)}.bg-surface{background-color:var(--surface)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:var(--space-2)}.p-6{padding:var(--space-6)}.px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.pb-16{padding-bottom:var(--space-16)}.pb-4{padding-bottom:var(--space-4)}.pb-8{padding-bottom:var(--space-8)}.pl-6{padding-left:var(--space-6)}.pt-12{padding-top:var(--space-12)}.pt-3{padding-top:var(--space-3)}.pt-4{padding-top:var(--space-4)}.pt-6{padding-top:var(--space-6)}.pt-8{padding-top:var(--space-8)}.text-left{text-align:left}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.font-body{font-family:var(--font-body), system-ui, sans-serif}.font-display{font-family:var(--font-display), ui-monospace, monospace}.text-annotation{font-size:var(--type-annotation);letter-spacing:.02em;font-weight:400;line-height:1.4}.text-body{font-size:var(--type-body);font-weight:400;line-height:1.7}.text-display{font-size:var(--type-display);letter-spacing:-.01em;font-weight:500;line-height:1.15}.text-heading{font-size:var(--type-heading);font-weight:500;line-height:1.4}.text-label{font-size:var(--type-label);letter-spacing:.02em;font-weight:500;line-height:1.4}.text-small{font-size:var(--type-small);font-weight:400;line-height:1.6}.text-title{font-size:var(--type-title);letter-spacing:-.01em;font-weight:500;line-height:1.25}.font-medium{font-weight:500}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.text-accent{color:var(--accent)}.text-blueprint-900{color:var(--blueprint-900)}.text-line-1{color:var(--line-1)}.text-line-2{color:var(--line-2)}.text-line-3{color:var(--line-3)}.text-line-4{color:var(--line-4)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-instant{transition-duration:80ms}.ease-instant{transition-timing-function:var(--ease-instant)}.os-sidebar h1{font-size:calc(var(--type-display) - 4px)}.cs-h2{margin-top:var(--space-16);margin-bottom:var(--space-6);padding-top:var(--space-3);border-top:var(--line-heavy) solid var(--accent);color:var(--accent);font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-label);letter-spacing:.06em;text-transform:uppercase;font-weight:500;line-height:1.4}.cs-section:first-of-type .cs-h2{margin-top:var(--space-12)}.cs-section:has(>.cs-h2:only-child)+.cs-section>.cs-h2{margin-top:var(--space-6);border-top-color:#0000}.cs-section--step>.cs-h2{margin-top:var(--space-6);border-top-color:#0000}.cs-summary{margin:var(--space-8) 0;font-family:var(--font-body), system-ui, sans-serif;font-size:var(--type-quote);color:var(--line-1);line-height:1.65}.cs-quote{margin:var(--space-8) 0;border-left:var(--line-heavy) solid var(--accent);background-color:var(--surface);color:var(--line-1);font-family:var(--font-body), system-ui, sans-serif;font-size:var(--type-quote);padding:14px 20px;font-style:italic;line-height:1.6}.cs-quote p{font-size:inherit;color:inherit;margin:0}.cs-quote p+p{margin-top:var(--space-3)}.cs-stats{gap:var(--space-4);margin:var(--space-8) 0;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (min-width:720px){.cs-stats--3{grid-template-columns:repeat(3,minmax(0,1fr))}.cs-stats--4{grid-template-columns:repeat(4,minmax(0,1fr))}}.cs-stat{padding:var(--space-4);border:var(--line-hairline) solid var(--hairline);border-radius:var(--radius-card);background-color:var(--surface);transition:transform var(--motion-hover) var(--ease-out), border-color var(--motion-hover) var(--ease-out)}.cs-stat-label{font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-annotation);letter-spacing:.02em;color:var(--line-4);line-height:1.4}.cs-stat-value{margin:var(--space-2) 0 0;font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-title);letter-spacing:-.01em;color:var(--accent);font-weight:500;line-height:1.15}.cs-cards{gap:var(--space-4);margin:var(--space-6) 0;grid-template-columns:1fr;padding:0;list-style:none;display:grid}@media (min-width:720px){.cs-cards--2{grid-template-columns:repeat(2,minmax(0,1fr))}.cs-cards--3,.cs-cards--4{grid-template-columns:repeat(3,minmax(0,1fr))}}.cs-card{padding:var(--space-4);border:var(--line-hairline) solid var(--hairline);border-radius:var(--radius-card);background-color:var(--surface);font-family:var(--font-body), system-ui, sans-serif;font-size:var(--type-small);color:var(--line-2);transition:transform var(--motion-hover) var(--ease-out), border-color var(--motion-hover) var(--ease-out);margin:0;line-height:1.6}.cs-card p{font-size:inherit;color:inherit;margin:0}.cs-card-title{margin-bottom:var(--space-2);color:var(--line-1);font-weight:500;display:block}.cs-steps{gap:var(--space-6);margin:var(--space-8) 0;counter-reset:cs-step;grid-template-columns:repeat(2,minmax(0,1fr));padding:0;list-style:none;display:grid}@media (min-width:720px){.cs-steps--3{grid-template-columns:repeat(3,minmax(0,1fr))}.cs-steps--4{grid-template-columns:repeat(4,minmax(0,1fr))}.cs-steps--5{grid-template-columns:repeat(5,minmax(0,1fr))}}.cs-step{align-items:center;gap:var(--space-3);text-align:center;font-family:var(--font-body), system-ui, sans-serif;font-size:var(--type-small);color:var(--line-3);flex-direction:column;margin:0;line-height:1.5;display:flex}.cs-step:before{counter-increment:cs-step;content:counter(cs-step);border:var(--line-heavy) solid var(--accent);border-radius:var(--radius-node);width:44px;height:44px;color:var(--accent);font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-label);letter-spacing:.02em;transition:background-color var(--motion-hover) var(--ease-out), color var(--motion-hover) var(--ease-out);flex:none;justify-content:center;align-items:center;display:flex}.cs-step p{font-size:inherit;color:inherit;margin:0}.cs-step-label{margin-bottom:var(--space-1);font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-label);letter-spacing:.02em;color:var(--line-1);font-weight:500;display:block}@media (prefers-reduced-motion:no-preference){.cs-stat:hover,.cs-card:hover{transform:translateY(-2px)}}.cs-stat:hover,.cs-card:hover{border-color:var(--accent)}.cs-step:hover:before{background-color:var(--accent);color:var(--on-accent)}.cs-figures{gap:var(--space-4);margin:var(--space-8) 0;grid-template-columns:1fr;display:grid}@media (min-width:720px){.cs-figures--2{grid-template-columns:repeat(2,minmax(0,1fr))}.cs-figures--3{grid-template-columns:repeat(3,minmax(0,1fr))}}.cs-figure{margin:var(--space-6) 0;min-width:0}.cs-figures .cs-figure{margin:0}.cs-figure-frame{border:var(--line-hairline) solid var(--hairline);border-radius:var(--radius-card);transition:border-color var(--motion-hover) var(--ease-out);display:block;position:relative;overflow:hidden}.cs-figure-img{width:100%;height:auto;display:block}a.cs-figure-frame:hover,a.cs-figure-frame:focus-visible{border-color:var(--accent)}.cs-figure-zoom{padding:var(--space-1) var(--space-2);background-color:var(--accent);color:var(--on-accent);font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-annotation);letter-spacing:.02em;text-transform:lowercase;opacity:0;transition:opacity var(--motion-hover) var(--ease-out);position:absolute;bottom:0;right:0}a.cs-figure-frame:hover .cs-figure-zoom,a.cs-figure-frame:focus-visible .cs-figure-zoom{opacity:1}.cs-figure-caption{margin-top:var(--space-3);font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-annotation);letter-spacing:.02em;color:var(--line-4);line-height:1.4}.cs-figure--phone,.cs-hero-phone{max-width:268px;margin-inline:auto}.cs-hero-phone{margin-bottom:var(--space-8)}.cs-figure--phone .cs-figure-frame,.cs-hero-phone .cs-figure-frame{padding:var(--space-2);background-color:var(--ground-deep);border-radius:30px}.cs-figure--phone .cs-figure-img,.cs-hero-phone .cs-figure-img{border-radius:22px}.cs-figures .cs-figure--phone{justify-self:center}.cs-lightbox{border:var(--line-hairline) solid var(--hairline);background-color:var(--surface);width:min(92vw,1100px);max-width:none;max-height:92vh;color:var(--line-2);padding:0;overflow-y:auto}.cs-lightbox::backdrop{background-color:var(--scrim)}.cs-lightbox-bar{z-index:1;padding:var(--space-2);background-color:var(--surface);border-bottom:var(--line-hairline) solid var(--hairline);justify-content:flex-end;display:flex;position:sticky;top:0}.cs-lightbox-close{padding:var(--space-1) var(--space-2);border:var(--line-hairline) solid var(--hairline);color:var(--line-3);font-family:var(--font-display), ui-monospace, monospace;font-size:var(--type-annotation);letter-spacing:.02em;text-transform:lowercase;cursor:pointer;transition:color var(--motion-hover) var(--ease-out), border-color var(--motion-hover) var(--ease-out);background:0 0}.cs-lightbox-close:hover,.cs-lightbox-close:focus-visible{border-color:var(--accent);color:var(--accent)}.cs-lightbox-img{width:100%;height:auto;display:block}.cs-lightbox--phone{width:min(92vw,420px)}.cs-reveal-root [data-reveal]{opacity:0;transition:opacity var(--motion-reveal) var(--ease-out), transform var(--motion-reveal) var(--ease-out);transition-delay:var(--reveal-delay,0s);transform:translateY(10px)}.cs-reveal-root [data-reveal].is-revealed{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.cs-reveal-root [data-reveal]{opacity:1;transition-property:none;transform:none}}.marker\:text-line-4 ::marker{color:var(--line-4)}.marker\:text-line-4::marker{color:var(--line-4)}.hover\:bg-surface-hover:hover{background-color:var(--surface-hover)}.hover\:text-accent:hover{color:var(--accent)}.hover\:text-accent-hover:hover{color:var(--accent-hover)}.hover\:text-line-1:hover{color:var(--line-1)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:opacity-40:disabled{opacity:.4}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[220px_1fr\]{grid-template-columns:220px 1fr}.sm\:items-baseline{align-items:baseline}}@media (min-width:1024px){.lg\:mt-auto{margin-top:auto}.lg\:flex{display:flex}.lg\:w-80{width:20rem}.lg\:flex-1{flex:1}.lg\:shrink-0{flex-shrink:0}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:pt-8{padding-top:var(--space-8)}}
