:root{--color-background:#fff;--color-foreground:#0c0a09;--color-card:#fff;--color-card-foreground:#0c0a09;--color-popover:#fff;--color-popover-foreground:#0c0a09;--color-primary:#1c1917;--color-primary-foreground:#fafaf9;--color-secondary:#f5f5f4;--color-secondary-foreground:#1c1917;--color-muted:#f5f5f4;--color-muted-foreground:#78716c;--color-accent:#f5f5f4;--color-accent-foreground:#1c1917;--color-destructive:#ef4444;--color-destructive-foreground:#fafaf9;--color-border:#e7e5e4;--color-input:#e7e5e4;--color-ring:#0c0a09;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:2.5rem;--spacing-3xl:3rem;--spacing-4xl:4rem;--spacing-5xl:6rem;--spacing-6xl:8rem;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-full:9999px;--font-family-sans:"Plus Jakarta Sans Variable", "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-mono:"JetBrains Mono", SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-size-4xl:2.25rem;--font-size-5xl:3rem;--font-size-6xl:3.75rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--letter-spacing-tight:-.025em;--letter-spacing-normal:0;--letter-spacing-wide:.025em;--line-height-tight:1.2;--line-height-snug:1.35;--line-height-normal:1.6;--line-height-relaxed:1.8;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--shadow-xl:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--transition-fast:.15s ease-in-out;--transition-normal:.25s ease-in-out;--transition-slow:.4s ease-in-out;--z-dropdown:1000;--z-sticky:1020;--z-fixed:1030;--z-modal-backdrop:1040;--z-modal:1050;--z-popover:1060;--z-tooltip:1070;--z-toast:1080}.dark{--color-background:#0c0a09;--color-foreground:#fafaf9;--color-card:#0c0a09;--color-card-foreground:#fafaf9;--color-popover:#0c0a09;--color-popover-foreground:#fafaf9;--color-primary:#fafaf9;--color-primary-foreground:#1c1917;--color-secondary:#292524;--color-secondary-foreground:#fafaf9;--color-muted:#292524;--color-muted-foreground:#a8a29e;--color-accent:#292524;--color-accent-foreground:#fafaf9;--color-destructive:#7f1d1d;--color-destructive-foreground:#fafaf9;--color-border:#292524;--color-input:#292524;--color-ring:#d6d3d1}*,:before,:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}img{max-width:100%;height:auto}*{margin:0;padding:0}html{color-scheme:light;overflow-y:scroll}html.dark{color-scheme:dark}html,body{width:100%;height:100%}body{background-color:var(--color-background);color:var(--color-foreground);font-family:var(--font-family-sans);font-size:var(--font-size-base);line-height:var(--line-height-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.flex{display:flex}.inline-flex{display:inline-flex}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.w-full{width:100%}.h-full{height:100%}.text-center{text-align:center}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.text-sm{font-size:var(--font-size-sm)}.leading-tight{line-height:var(--line-height-tight)}.leading-snug{line-height:var(--line-height-snug)}.leading-normal{line-height:var(--line-height-normal)}.leading-relaxed{line-height:var(--line-height-relaxed)}.mt-1{margin-top:.25rem}.list-none{list-style-type:none}.text-lg{font-size:var(--font-size-lg)}.rounded{border-radius:var(--radius-md)}.rounded-full{border-radius:var(--radius-full)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.transition{transition:all var(--transition-normal)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.translate-y-3{transform:translateY(.75rem)}.translate-y-0{transform:translateY(0)}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html #back-to-top{opacity:1;pointer-events:auto}article{max-width:100%;font-family:var(--font-family-sans);line-height:var(--line-height-relaxed)}article pre{font-size:var(--font-size-sm);font-family:var(--font-family-mono);background-color:var(--color-muted);padding:var(--spacing-md);border-radius:var(--radius-md);margin:var(--spacing-lg) 0;overflow-x:auto}article code{font-size:var(--font-size-sm);font-family:var(--font-family-mono)}article p code{background-color:var(--color-muted);border-radius:var(--radius-xs);padding:.125rem .25rem;font-size:.8em}article h1,article h2,article h3,article h4,article h5,article h6{font-family:var(--font-family-sans);font-weight:var(--font-weight-semibold);color:var(--color-foreground);letter-spacing:var(--letter-spacing-tight);line-height:var(--line-height-snug)}article h1{font-size:var(--font-size-3xl);margin-top:var(--spacing-3xl);margin-bottom:var(--spacing-lg)}article h2{font-size:var(--font-size-2xl);margin-top:var(--spacing-2xl);margin-bottom:var(--spacing-md)}article h3{font-size:var(--font-size-xl);margin-top:var(--spacing-xl);margin-bottom:var(--spacing-md)}article p{margin-bottom:var(--spacing-lg);font-family:var(--font-family-sans)}article a{font-family:var(--font-family-sans);color:currentColor;text-underline-offset:2px;transition:all var(--transition-normal);text-decoration:underline #00000026}article a:hover{color:var(--color-foreground);text-decoration-color:#00000040}.dark article a{text-decoration-color:#ffffff4d}.dark article a:hover{text-decoration-color:#ffffff80}article img{margin:var(--spacing-lg) auto;max-width:100%;height:auto}article ul,article ol{margin-top:var(--spacing-md);margin-bottom:var(--spacing-md);padding-left:var(--spacing-xl)}article ul{list-style-type:disc}article ol{list-style-type:decimal}article li{margin-bottom:var(--spacing-xs);line-height:var(--line-height-relaxed)}article ul ul,article ol ul,article ul ol,article ol ol{margin-top:var(--spacing-xs);margin-bottom:var(--spacing-xs);padding-left:var(--spacing-lg)}article ul ul{list-style-type:circle}article ul ul ul{list-style-type:square}nav#table-of-contents ol{padding-left:0;list-style-type:none}nav#table-of-contents ol ol{padding-left:var(--spacing-lg);margin-top:var(--spacing-xs)}nav#table-of-contents li{margin-bottom:var(--spacing-xs)}ul ul,ol ul,ul ol,ol ol{padding-left:var(--spacing-lg)}.page-title{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);letter-spacing:-.035em;color:var(--color-foreground);line-height:1.1}@media (width>=640px){.page-title{font-size:var(--font-size-5xl)}}.section-header{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:.05em;text-transform:uppercase;color:var(--color-muted-foreground)}.section-link{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-muted-foreground);transition:color var(--transition-fast);text-decoration:none}.section-link:hover{color:var(--color-foreground)}.section-header-container{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.container{width:100%;max-width:768px;margin-left:auto;margin-right:auto;padding-left:2rem;padding-right:2rem}.relative{position:relative}.fixed{position:fixed}.absolute{position:absolute}.top-0{top:0}.left-0{left:0}.right-0{right:0}.bottom-0{bottom:0}.inset-0{inset:0}.z-50{z-index:var(--z-fixed)}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-col-reverse{flex-direction:column-reverse}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.grid{display:grid}.space-y-2>*+*{margin-top:.5rem}.space-y-3>*+*{margin-top:.75rem}.space-y-4>*+*{margin-top:1rem}.space-y-10>*+*{margin-top:2.5rem}.space-y-16>*+*{margin-top:4rem}.space-y-20>*+*{margin-top:5rem}.space-y-24>*+*{margin-top:6rem}.space-y-1>*+*{margin-top:.25rem}.space-y-6>*+*{margin-top:1.5rem}.space-x-2>*+*{margin-left:.5rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-y-2{row-gap:.5rem}.gap-x-2{column-gap:.5rem}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-32{padding-top:8rem;padding-bottom:8rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.pl-6{padding-left:1.5rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pr-10{padding-right:2.5rem}.mt-2{margin-top:.5rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.w-4{width:1rem}.w-10{width:2.5rem}.w-fit{width:fit-content}.h-4{height:1rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.size-8{width:2rem;height:2rem}.max-w-lg{max-width:32rem}.max-w-screen{max-width:100vw}.max-h-96{max-height:24rem}.min-w-32{min-width:8rem}.text-xs{font-size:var(--font-size-xs)}.text-2xl{font-size:var(--font-size-2xl)}.text-3xl{font-size:var(--font-size-3xl)}.text-4xl{font-size:var(--font-size-4xl)}.text-5xl{font-size:var(--font-size-5xl)}.text-6xl{font-size:var(--font-size-6xl)}.tracking-tight{letter-spacing:var(--letter-spacing-tight)}.tracking-normal{letter-spacing:var(--letter-spacing-normal)}.tracking-wide{letter-spacing:var(--letter-spacing-wide)}.font-bold{font-weight:var(--font-weight-bold)}.font-sans,.font-serif{font-family:var(--font-family-sans)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.text-left{text-align:left}.text-right{text-align:right}.underline{text-decoration:underline}.underline-offset-4{text-underline-offset:4px}.text-nowrap{white-space:nowrap}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fill-none{fill:none}.stroke-current{stroke:currentColor}.stroke-2{stroke-width:2px}.opacity-75{opacity:.75}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:ease-in-out}.-translate-y-1\/2{transform:translateY(-50%)}.translate-x-1{transform:translate(.25rem)}.translate-x-2{transform:translate(.5rem)}.translate-x-3{transform:translate(.75rem)}.-translate-x-1{transform:translate(-.25rem)}.scale-x-0{transform:scaleX(0)}.scale-x-100{transform:scaleX(1)}.group:hover .group-hover\:translate-x-0{transform:translate(0)}.group:hover .group-hover\:scale-x-100{transform:scaleX(1)}.flex-1{flex:1}.text-primary{color:var(--color-primary)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.bg-background{background-color:var(--color-background)}.bg-primary{background-color:var(--color-primary)}.bg-accent{background-color:var(--color-accent)}.bg-popover{background-color:var(--color-popover)}.text-popover-foreground{color:var(--color-popover-foreground)}.backdrop-blur-sm{backdrop-filter:blur(4px)}.saturate-200{filter:saturate(2)}.border{border:1px solid var(--color-border)}.border-input{border:1px solid var(--color-input)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.overflow-hidden{overflow:hidden}.bg-background\/5{background-color:color-mix(in srgb, var(--color-background) 5%, transparent)}.bg-background\/25{background-color:color-mix(in srgb, var(--color-background) 25%, transparent)}.bg-background\/75{background-color:color-mix(in srgb, var(--color-background) 75%, transparent)}.bg-black\/5{background-color:#0000000d}.bg-black\/15{background-color:#00000026}.bg-white\/5{background-color:#ffffff0d}.border-black\/15{border:1px solid #00000026}.border-white\/20{border:1px solid #fff3}.border-foreground\/20{border:1px solid color-mix(in srgb, var(--color-foreground) 20%, transparent)}.hover\:bg-background\/5:hover{background-color:color-mix(in srgb, var(--color-background) 5%, transparent)}.hover\:bg-black\/5:hover{background-color:#0000000d}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:bg-primary\/90:hover{background-color:color-mix(in srgb, var(--color-primary) 90%, transparent)}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}.hover\:underline:hover{text-decoration:underline}.group-hover\:stroke-black:hover .group-hover\:stroke-black{stroke:#000}.group-hover\:dark\:stroke-white .dark .group:hover .group-hover\:dark\:stroke-white{stroke:#fff}.dark .dark\:text-white{color:#fff}.dark .dark\:bg-background\/25{background-color:color-mix(in srgb, var(--color-background) 25%, transparent)}.dark .dark\:bg-background\/75{background-color:color-mix(in srgb, var(--color-background) 75%, transparent)}.dark .dark\:text-foreground\/75{color:color-mix(in srgb, var(--color-foreground) 75%, transparent)}@media (width>=640px){.sm\:bottom-0{bottom:0}.sm\:right-0{right:0}.sm\:top-auto{top:auto}.sm\:flex-col{flex-direction:column}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-left{text-align:left}.sm\:mt-0{margin-top:0}}@media (width>=768px){.md\:max-w-\[420px\]{max-width:420px}}.tag-list{flex-wrap:wrap;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.work-list{gap:0}.work-entry{border-bottom:1px solid var(--color-border);padding:1.5rem 0}.work-entry:first-child{padding-top:0}.work-entry:last-child{border-bottom:none}.work-entry-header{margin-bottom:.75rem}.work-entry-company{font-weight:var(--font-weight-semibold);font-size:var(--font-size-lg);color:var(--color-foreground);letter-spacing:var(--letter-spacing-tight)}.work-entry-meta{flex-wrap:wrap;align-items:baseline;gap:.5rem;margin-top:.125rem;display:flex}.work-entry-role{font-size:var(--font-size-sm);color:var(--color-muted-foreground)}.work-entry-date{font-size:var(--font-size-xs);color:var(--color-muted-foreground);opacity:.75}.work-entry-role+.work-entry-date:before{content:"·";margin-right:.5rem}.work-entry-content{font-size:var(--font-size-sm);color:var(--color-muted-foreground)}.work-entry-content ul{padding-left:var(--spacing-lg)}.work-entry-content li{line-height:var(--line-height-normal)}.tag{font-family:var(--font-family-sans);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-muted-foreground);background-color:var(--color-muted);border-radius:var(--radius-full);line-height:var(--line-height-normal);border:1px solid var(--color-border);padding:.2rem .625rem;display:inline-block}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-vietnamese-wght-normal.qRpaaN48.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-ext-wght-normal.DmpS2jIq.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-wght-normal.eXO_dkmS.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff")}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}.link-base[data-astro-cid-4tk4wvsf]{color:var(--color-foreground);font-weight:var(--font-weight-medium);transition:color var(--transition-fast);text-decoration:none}.link-base[data-astro-cid-4tk4wvsf]:hover{color:var(--color-muted-foreground)}.link-underline[data-astro-cid-4tk4wvsf]{text-underline-offset:4px;text-decoration:underline;text-decoration-color:var(--color-border)}.link-underline[data-astro-cid-4tk4wvsf]:hover{text-decoration-color:var(--color-muted-foreground)}.header-name[data-astro-cid-4oan7hod]{font-weight:var(--font-weight-bold);font-size:var(--font-size-base);letter-spacing:var(--letter-spacing-tight)}.nav-link[data-astro-cid-4oan7hod]{color:var(--color-muted-foreground);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);transition:all var(--transition-fast);padding:.25rem .625rem;text-decoration:none}.nav-link[data-astro-cid-4oan7hod]:hover,.nav-link--active[data-astro-cid-4oan7hod]{color:var(--color-foreground);background-color:var(--color-muted)}.back-to-top-button[data-astro-cid-m765rkco]{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-muted-foreground);border:1px solid var(--color-border);cursor:pointer;transition:all var(--transition-fast);border-radius:var(--radius-full);white-space:nowrap;background:0 0;flex-shrink:0;align-items:center;gap:.375rem;height:32px;padding:.375rem .75rem;display:inline-flex}.back-to-top-button[data-astro-cid-m765rkco]:hover{color:var(--color-foreground);background-color:var(--color-muted);border-color:var(--color-muted-foreground)}.back-to-top-button[data-astro-cid-m765rkco] svg[data-astro-cid-m765rkco]{flex-shrink:0}@media (width<=640px){.back-to-top-button[data-astro-cid-m765rkco] span[data-astro-cid-m765rkco]{display:none}.back-to-top-button[data-astro-cid-m765rkco]{justify-content:center;width:32px;padding:.375rem}}.theme-toggle-button[data-astro-cid-6kgiinfj]{width:32px;height:32px;padding:var(--spacing-xs);border-radius:var(--radius-full);border:1px solid var(--color-border);color:var(--color-muted-foreground);cursor:pointer;background-color:#0000;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s ease-in-out;display:flex;position:relative}.theme-toggle-button[data-astro-cid-6kgiinfj]:hover{background-color:var(--color-muted);border-color:var(--color-muted-foreground);color:var(--color-foreground)}.theme-toggle-button[data-astro-cid-6kgiinfj] svg[data-astro-cid-6kgiinfj]{opacity:0;transition:all .15s ease-in-out;position:absolute;transform:scale(.8)}:root:not(.dark) .theme-toggle-button[data-astro-cid-6kgiinfj] .sun-icon[data-astro-cid-6kgiinfj],:root.dark .theme-toggle-button[data-astro-cid-6kgiinfj] .moon-icon[data-astro-cid-6kgiinfj]{opacity:1;transform:scale(1)}@media (prefers-color-scheme:dark){:root:not([data-theme]) .theme-toggle-button[data-astro-cid-6kgiinfj] .moon-icon[data-astro-cid-6kgiinfj]{opacity:1;transform:scale(1)}:root:not([data-theme]) .theme-toggle-button[data-astro-cid-6kgiinfj] .sun-icon[data-astro-cid-6kgiinfj]{opacity:0;transform:scale(.8)}}:root[data-theme=system] .theme-toggle-button[data-astro-cid-6kgiinfj] .system-icon[data-astro-cid-6kgiinfj]{opacity:1;transform:scale(1)}:root[data-theme=system] .theme-toggle-button[data-astro-cid-6kgiinfj] .sun-icon[data-astro-cid-6kgiinfj],:root[data-theme=system] .theme-toggle-button[data-astro-cid-6kgiinfj] .moon-icon[data-astro-cid-6kgiinfj]{opacity:0;transform:scale(.8)}.footer[data-astro-cid-buwxlt3j]{padding:var(--spacing-md) 0;font-size:var(--font-size-sm);border-top:1px solid var(--color-border);margin-top:3rem}.footer-content[data-astro-cid-buwxlt3j]{justify-content:space-between;align-items:center;gap:var(--spacing-xl);min-height:40px;display:flex}.footer-copyright[data-astro-cid-buwxlt3j]{color:var(--color-muted-foreground);flex-shrink:0}.footer-actions[data-astro-cid-buwxlt3j]{flex-shrink:0;align-items:center;gap:.5rem;display:flex}@media (width<=640px){.footer-content[data-astro-cid-buwxlt3j]{gap:var(--spacing-3xl);text-align:center;flex-direction:column;min-height:auto}.footer-actions[data-astro-cid-buwxlt3j]{justify-content:center;gap:.5rem}}.skip-to-content[data-astro-cid-6ezw5tpv]{background:var(--color-primary);color:var(--color-primary-foreground);z-index:1000;border-radius:4px;padding:8px;font-weight:600;text-decoration:none;transition:top .3s;position:absolute;top:-40px;left:6px}.skip-to-content[data-astro-cid-6ezw5tpv]:focus{top:6px}
