/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--sky-font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--sky-spacing:.25rem;--sky-font-weight-normal:400;--sky-font-weight-semibold:600;--sky-leading-tight:1.25;--sky-leading-snug:1.375;--sky-radius-md:.375rem;--sky-radius-lg:.5rem;--sky-radius-xl:.75rem;--sky-default-transition-duration:.15s;--sky-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.sky\:pointer-events-none{pointer-events:none}.sky\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sky\:absolute{position:absolute}.sky\:relative{position:relative}.sky\:top-0{top:0}.sky\:top-1{top:var(--sky-spacing)}.sky\:top-3{top:calc(var(--sky-spacing) * 3)}.sky\:top-full{top:100%}.sky\:right-1{right:var(--sky-spacing)}.sky\:bottom-1{bottom:var(--sky-spacing)}.sky\:left-0{left:0}.sky\:left-1{left:var(--sky-spacing)}.sky\:left-3{left:calc(var(--sky-spacing) * 3)}.sky\:z-20{z-index:20}.sky\:col-span-2{grid-column:span 2/span 2}.sky\:m-0{margin:0}.sky\:mt-0\.5{margin-top:calc(var(--sky-spacing) * .5)}.sky\:mt-1{margin-top:var(--sky-spacing)}.sky\:mr-0\.5{margin-right:calc(var(--sky-spacing) * .5)}.sky\:mb-3{margin-bottom:calc(var(--sky-spacing) * 3)}.sky\:ml-0\.5{margin-left:calc(var(--sky-spacing) * .5)}.sky\:block{display:block}.sky\:flex{display:flex}.sky\:grid{display:grid}.sky\:inline-flex{display:inline-flex}.sky\:h-0{height:0}.sky\:min-h-0{min-height:0}.sky\:w-0{width:0}.sky\:w-full{width:100%}.sky\:min-w-0{min-width:0}.sky\:flex-1{flex:1}.sky\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sky\:grid-cols-\[auto_auto\]{grid-template-columns:auto auto}.sky\:flex-col{flex-direction:column}.sky\:flex-wrap{flex-wrap:wrap}.sky\:items-baseline{align-items:baseline}.sky\:items-center{align-items:center}.sky\:items-end{align-items:flex-end}.sky\:items-start{align-items:flex-start}.sky\:justify-between{justify-content:space-between}.sky\:gap-1{gap:var(--sky-spacing)}.sky\:gap-1\.5{gap:calc(var(--sky-spacing) * 1.5)}.sky\:gap-5{gap:calc(var(--sky-spacing) * 5)}.sky\:gap-x-2{column-gap:calc(var(--sky-spacing) * 2)}.sky\:gap-x-4{column-gap:calc(var(--sky-spacing) * 4)}.sky\:gap-y-2{row-gap:calc(var(--sky-spacing) * 2)}.sky\:gap-y-4{row-gap:calc(var(--sky-spacing) * 4)}.sky\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sky\:overflow-clip{overflow:clip}.sky\:overflow-hidden{overflow:hidden}.sky\:rounded-lg{border-radius:var(--sky-radius-lg)}.sky\:rounded-md{border-radius:var(--sky-radius-md)}.sky\:rounded-xl{border-radius:var(--sky-radius-xl)}.sky\:border{border-style:var(--tw-border-style);border-width:1px}.sky\:p-4{padding:calc(var(--sky-spacing) * 4)}.sky\:px-2\.5{padding-inline:calc(var(--sky-spacing) * 2.5)}.sky\:px-3{padding-inline:calc(var(--sky-spacing) * 3)}.sky\:py-1\.5{padding-block:calc(var(--sky-spacing) * 1.5)}.sky\:pt-3{padding-top:calc(var(--sky-spacing) * 3)}.sky\:pt-4{padding-top:calc(var(--sky-spacing) * 4)}.sky\:pb-1{padding-bottom:var(--sky-spacing)}.sky\:pb-3{padding-bottom:calc(var(--sky-spacing) * 3)}.sky\:pb-\[0\.15em\]{padding-bottom:.15em}.sky\:text-right{text-align:right}.sky\:font-sans{font-family:var(--sky-font-sans)}.sky\:text-\[12px\]{font-size:12px}.sky\:text-\[13px\]{font-size:13px}.sky\:text-\[14px\]{font-size:14px}.sky\:text-\[15px\]{font-size:15px}.sky\:leading-none{--tw-leading:1;line-height:1}.sky\:leading-snug{--tw-leading:var(--sky-leading-snug);line-height:var(--sky-leading-snug)}.sky\:leading-tight{--tw-leading:var(--sky-leading-tight);line-height:var(--sky-leading-tight)}.sky\:font-normal{--tw-font-weight:var(--sky-font-weight-normal);font-weight:var(--sky-font-weight-normal)}.sky\:font-semibold{--tw-font-weight:var(--sky-font-weight-semibold);font-weight:var(--sky-font-weight-semibold)}.sky\:whitespace-nowrap{white-space:nowrap}.sky\: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,)}.sky\:opacity-75{opacity:.75}.sky\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.sky\:outline-offset-4{outline-offset:4px}.sky\:transition-\[grid-template-rows\,opacity\]{transition-property:grid-template-rows,opacity;transition-timing-function:var(--tw-ease,var(--sky-default-transition-timing-function));transition-duration:var(--tw-duration,var(--sky-default-transition-duration))}.sky\:transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--sky-default-transition-timing-function));transition-duration:var(--tw-duration,var(--sky-default-transition-duration))}.sky\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--sky-default-transition-timing-function));transition-duration:var(--tw-duration,var(--sky-default-transition-duration))}.sky\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--sky-default-transition-timing-function));transition-duration:var(--tw-duration,var(--sky-default-transition-duration))}.sky\:duration-150{--tw-duration:.15s;transition-duration:.15s}.sky\:duration-500{--tw-duration:.5s;transition-duration:.5s}.sky\:outline-none{--tw-outline-style:none;outline-style:none}.sky\:\[grid-area\:1\/1\]{grid-area:1/1}.sky\:has-\[\:focus-visible\]\:outline-2:has(:focus-visible){outline-style:var(--tw-outline-style);outline-width:2px}@media (prefers-reduced-motion:reduce){.sky\:motion-reduce\:transition-none{transition-property:none}}@media (min-width:40rem){.sky\:sm\:top-4{top:calc(var(--sky-spacing) * 4)}.sky\:sm\:left-4{left:calc(var(--sky-spacing) * 4)}.sky\:sm\:p-5{padding:calc(var(--sky-spacing) * 5)}.sky\:sm\:px-4{padding-inline:calc(var(--sky-spacing) * 4)}.sky\:sm\:pt-4{padding-top:calc(var(--sky-spacing) * 4)}}@media (min-width:48rem){.sky\:md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}.flow-button.flow-button{--flow-fg:var(--fg);--flow-bg:var(--bg);isolation:isolate;border:1.5px solid var(--border);min-height:40px;color:var(--flow-fg);box-shadow:none;cursor:pointer;vertical-align:middle;background:0 0;border-radius:100px;justify-content:center;align-items:center;gap:4px;padding:10px 30px;font-size:11px;font-weight:600;line-height:1.5;text-decoration:none;transition:border-color .6s cubic-bezier(.23,1,.32,1),color .6s cubic-bezier(.23,1,.32,1),border-radius .6s cubic-bezier(.23,1,.32,1),transform .15s;display:inline-flex;position:relative;overflow:hidden}.flow-button .flow-content{z-index:1;justify-content:center;align-items:center;gap:10px;transition:transform .8s ease-out;display:inline-flex;position:relative;transform:translate(-7px)}.flow-button .flow-fill{z-index:0;pointer-events:none;background:var(--flow-fg);opacity:0;border-radius:50%;width:16px;height:16px;transition:transform .8s cubic-bezier(.19,1,.22,1),opacity .8s cubic-bezier(.19,1,.22,1);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(1)}.flow-button .flow-arrow{z-index:2;fill:none;stroke:currentColor;stroke-width:2px;pointer-events:none;width:16px;height:16px;transition:left .8s cubic-bezier(.34,1.56,.64,1),right .8s cubic-bezier(.34,1.56,.64,1);position:absolute}.flow-button .flow-arrow--in{left:-25%}.flow-button .flow-arrow--out{right:12px}.flow-button.flow-button:is(:hover,:focus-visible){color:var(--flow-bg);background:0 0;border-color:#0000;border-radius:12px}.flow-button:is(:hover,:focus-visible) .flow-fill{opacity:1;transform:translate(-50%,-50%) scale(var(--flow-scale,30))}.flow-button:is(:hover,:focus-visible) .flow-content{transform:translate(7px)}.flow-button:is(:hover,:focus-visible) .flow-arrow--in{left:12px}.flow-button:is(:hover,:focus-visible) .flow-arrow--out{right:-25%}.flow-button.flow-button:active{transform:scale(.95)}.flow-button:disabled{opacity:.45;cursor:not-allowed}.flow-button--compact.flow-button{min-height:32px;padding:6px 27px;font-size:9px}.flow-button--icon.flow-button{flex-shrink:0;width:36px;min-width:36px;height:36px;min-height:36px;padding:8px}.flow-button--icon .flow-content,.flow-button--icon:is(:hover,:focus-visible) .flow-content{transform:none}.flow-button--swatch.flow-button{border-radius:100px;flex-shrink:0;width:16px;height:16px;min-height:16px;padding:0}.flow-button--swatch .flow-content,.flow-button--swatch:is(:hover,:focus-visible) .flow-content{transform:none}.flow-button--swatch .flow-fill{background:var(--accent)}.flow-button--swatch[aria-pressed=true]{outline:1px solid var(--accent);outline-offset:2px}.flow-button[aria-pressed=true]:not(.flow-button--swatch){border-color:var(--accent);color:var(--accent)}.flow-button[aria-pressed=true]:not(.flow-button--swatch):is(:hover,:focus-visible){color:var(--flow-bg)}.intro-skip.flow-button{--flow-fg:#fff;--flow-bg:#08121a;border-color:#ffffff80}.contact-arrow.flow-button{width:42px;height:42px}.command-item.flow-button{text-align:left;justify-content:start;min-height:39px;margin-block:2px}.command-item.flow-button .flow-content{justify-content:space-between;width:100%}.command-item.flow-button kbd{color:inherit}.project-links{gap:8px}.project-links a.flow-button{color:var(--fg);border-bottom:1.5px solid var(--border)}.project-links a.flow-button:is(:hover,:focus-visible){color:var(--bg);border-color:#0000}#contribution-skyline .flow-button{border-style:solid;border-width:1.5px}#contribution-skyline .flow-button .flow-fill{border-radius:50%}@media (prefers-reduced-motion:reduce){.flow-button.flow-button,.flow-button .flow-content,.flow-button .flow-arrow,.flow-button .flow-fill{transition:none}.flow-button.flow-button:active{transform:none}}@media (hover:none){.flow-button.flow-button{min-height:44px}.flow-button--swatch.flow-button{width:24px;height:24px;min-height:24px}}.dock-nav{z-index:40;justify-content:center;align-items:center;width:min(740px,100% - 24px);min-height:80px;margin:14px auto 8px;padding-top:12px;display:flex;position:sticky;top:48px}.macos-dock{--dock-size:46px;--dock-gap:6px;--dock-padding:12px;align-items:end;gap:var(--dock-gap);width:max-content;padding:10px var(--dock-padding) 15px;border:1px solid var(--border);background:var(--surface);border-radius:21px;display:flex}@supports (color:color-mix(in lab, red, red)){.macos-dock{background:color-mix(in srgb,var(--surface) 88%,transparent)}}.macos-dock{-webkit-backdrop-filter:blur(18px);box-shadow:0 6px 20px #0002,inset 0 1px #ffffff0c}.dock-slot{--dock-scale:1;width:var(--dock-size);height:var(--dock-size);flex-shrink:0;position:relative}.dock-link{width:var(--dock-size);height:var(--dock-size);transform:translateX(-50%) scale(var(--dock-scale));transform-origin:bottom;-webkit-tap-highlight-color:transparent;border-radius:12px;display:block;position:absolute;bottom:0;left:50%}.dock-tile{border:1px solid var(--border);background:var(--raised);width:100%;height:100%;color:var(--fg);border-radius:12px;place-items:center;display:grid;position:relative;box-shadow:inset 0 1px #ffffff0b}.dock-link:is(:hover,:focus-visible,[aria-current]) .dock-tile{color:var(--accent);border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dock-link:is(:hover,:focus-visible,[aria-current]) .dock-tile{border-color:color-mix(in srgb,var(--accent) 45%,var(--border))}}.dock-tile svg{stroke:currentColor;stroke-width:1.7px;width:49%;height:49%}.dock-tile img{object-fit:contain;border-radius:inherit;width:100%;height:100%}.dock-dot{background:var(--accent);opacity:0;border-radius:50%;width:4px;height:4px;position:absolute;bottom:-9px;left:50%;transform:translate(-50%)}.dock-link[aria-current] .dock-dot{opacity:1}.dock-label{pointer-events:none;bottom:calc(var(--dock-size) * var(--dock-scale) + 12px);opacity:0;white-space:nowrap;border:1px solid var(--border);background:var(--raised);color:var(--fg);font:10px/1.5 var(--sans);border-radius:6px;padding:4px 9px;position:absolute;left:50%;transform:translate(-50%)}.dock-slot:hover .dock-label,.dock-slot:focus-within .dock-label{opacity:1}.dock-link:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.dock-fallback{border:1px solid var(--border);background:var(--surface);border-radius:16px;flex-wrap:wrap;justify-content:center;gap:5px;padding:10px;display:flex}.dock-fallback a{color:var(--fg);font:10px/1.5 var(--mono);padding:5px 7px}:root{scroll-padding-top:156px}@media (max-width:600px){:root{scroll-padding-top:116px}.dock-nav{min-height:68px;margin-block:8px;top:8px}.macos-dock{border-radius:17px}.dock-tile,.dock-link{border-radius:10px}.dock-label{bottom:auto;top:calc(var(--dock-size) + 16px)}}@media (prefers-reduced-transparency:reduce){.macos-dock{background:var(--surface);-webkit-backdrop-filter:none}}@media print{.dock-nav{display:none}}#contribution-skyline{--color-background:var(--bg);--color-foreground:var(--fg);--color-border:var(--border);--color-muted-foreground:var(--muted);--sky-font-sans:var(--sans)}#contribution-skyline *,#contribution-skyline :before,#contribution-skyline :after{border-style:solid;border-width:0}#contribution-skyline .sky\:border{border-width:1px}#contribution-skyline .sky\:border-0{border-width:0}#contribution-skyline .skyline-card{border:0;border-radius:0;padding:0}#contribution-skyline button svg{stroke-width:unset}#contribution-skyline canvas{display:block}.github-activity .section-heading{align-items:end}.github-activity .section-heading>a{color:var(--muted);font:10px/1.5 var(--mono)}.github-activity .section-heading>a:hover{color:var(--accent)}.activity-meta{color:var(--quiet);font:9px/1.7 var(--mono);flex-wrap:wrap;justify-content:space-between;gap:8px 20px;margin-top:14px;display:flex}.activity-meta a:hover{color:var(--accent)}.activity-fallback{min-height:180px;color:var(--muted);border:1px solid var(--border);border-radius:8px;place-items:center;display:grid}.skyline-error{color:var(--muted);padding:24px}@media (max-width:480px){.github-activity .section-heading{gap:14px}.github-activity .section-heading>a{font-size:9px}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}