.intro[data-astro-cid-5y43w45z]{z-index:500;background-color:var(--bg);place-items:center;animation:.42s 4.6s forwards intro-veil;display:grid;position:fixed;inset:0;overflow:hidden}.intro[data-astro-cid-5y43w45z][data-state=landing]{animation:none}html[data-intro-played] .intro[data-astro-cid-5y43w45z]{display:none}.intro[data-astro-cid-5y43w45z][data-state=done]{opacity:0;pointer-events:none;transition:opacity .3s;animation:none}.intro__stage[data-astro-cid-5y43w45z]{transform-origin:50%;animation:3.6s linear forwards logo-stage}.intro__fly[data-astro-cid-5y43w45z]{transform-origin:50%;transition:transform .64s cubic-bezier(.55,0,.2,1)}.logo-anim[data-astro-cid-5y43w45z]{width:min(92vw,78svh,68rem);height:auto;color:var(--fg);animation:3.6s linear forwards logo-stroke;display:block}.logo__frame[data-astro-cid-5y43w45z] line[data-astro-cid-5y43w45z],.logo__letters[data-astro-cid-5y43w45z] line[data-astro-cid-5y43w45z]{stroke:currentColor;vector-effect:non-scaling-stroke;stroke-linecap:butt}@keyframes logo-stroke{0%,50%{stroke-width:1.5px}56%{stroke-width:1.05px}61%{stroke-width:.78px}66%,to{stroke-width:.62px}}.logo__mask[data-astro-cid-5y43w45z] rect[data-astro-cid-5y43w45z]{fill:var(--bg);transform-box:view-box;transform-origin:0 0;animation-duration:3.6s;animation-timing-function:linear;animation-fill-mode:forwards}.logo__mask--left[data-astro-cid-5y43w45z]{animation-name:logo-mask-left}.logo__mask--right[data-astro-cid-5y43w45z]{animation-name:logo-mask-right}.logo__mask--top[data-astro-cid-5y43w45z]{animation-name:logo-mask-top}.logo__mask--bottom[data-astro-cid-5y43w45z]{animation-name:logo-mask-bottom}@keyframes logo-mask-left{0%,30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(0)}50%,to{transform:translate(457.5px)}}@keyframes logo-mask-right{0%,30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(1555px)}50%,to{transform:translate(1097.5px)}}@keyframes logo-mask-top{0%,30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translateY(95.77px)}50%,to{transform:translate(0)}}@keyframes logo-mask-bottom{0%,30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translateY(544.23px)}50%,to{transform:translateY(640px)}}.logo__edge[data-astro-cid-5y43w45z],.logo__letter[data-astro-cid-5y43w45z]{transform-box:view-box;transform-origin:0 0;animation-duration:3.6s;animation-timing-function:linear;animation-fill-mode:forwards}.logo__edge--top[data-astro-cid-5y43w45z]{animation-name:logo-edge-top}.logo__edge--bottom[data-astro-cid-5y43w45z]{animation-name:logo-edge-bottom}.logo__edge--left[data-astro-cid-5y43w45z]{animation-name:logo-edge-left}.logo__edge--right[data-astro-cid-5y43w45z]{animation-name:logo-edge-right}.logo__letter--D[data-astro-cid-5y43w45z]{animation-name:logo-D}.logo__letter--I[data-astro-cid-5y43w45z]{animation-name:logo-I}.logo__letter--F1[data-astro-cid-5y43w45z]{animation-name:logo-F1}.logo__letter--F2[data-astro-cid-5y43w45z]{animation-name:logo-F2}.logo__letter--U[data-astro-cid-5y43w45z]{animation-name:logo-U}.logo__letter--X[data-astro-cid-5y43w45z]{animation-name:logo-X}@keyframes logo-stage{0%,50%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:scale(1)}66%,to{transform:scale(2.43)}}@keyframes logo-D{0%{transform:translate(55px,150.77px)scale(1)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(55px,150.77px)scale(1)}50%{transform:translate(475.64px,249.3px)scale(.417804)}58%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(475.64px,249.3px)scale(.417804)}80%{transform:translate(453.873px,103.989px)scale(1.58368)}to{transform:translate(453.873px,103.989px)scale(1.58368)}}@keyframes logo-I{0%{transform:translate(232.13px,150.77px)scale(1)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(232.13px,150.77px)scale(1)}50%{transform:translate(549.64px,249.3px)scale(.417804)}66%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(549.64px,249.3px)scale(.417804)}88%{transform:translate(890.609px,309.596px)scale(1.17887)}to{transform:translate(890.609px,309.596px)scale(1.17887)}}@keyframes logo-F1{0%{transform:translate(282.33px,150.77px)scale(1)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(282.33px,150.77px)scale(1)}50%{transform:translate(570.62px,249.3px)scale(.417804)}78%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(570.62px,249.3px)scale(.417804)}to{transform:translate(654.282px,270.69px)scale(.953646)}}@keyframes logo-F2{0%{transform:translate(543.3px,150.77px)scale(1)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(543.3px,150.77px)scale(1)}50%{transform:translate(679.65px,249.3px)scale(.417804)}74%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(679.65px,249.3px)scale(.417804)}96%{transform:translate(890px,307.16px)scale(.98235)}to{transform:translate(890px,307.16px)scale(.98235)}}@keyframes logo-U{0%{transform:translate(804.27px,150.77px)scale(1)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(804.27px,150.77px)scale(1)}50%{transform:translate(788.68px,249.3px)scale(.417804)}70%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(788.68px,249.3px)scale(.417804)}92%{transform:translate(890.609px,349.748px)scale(.857568)}to{transform:translate(890.609px,349.748px)scale(.857568)}}@keyframes logo-X{0%{transform:translate(1095.15px,150.77px)scale(1)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(1095.15px,150.77px)scale(1)}50%{transform:translate(910.22px,249.3px)scale(.417804)}62%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(910.22px,249.3px)scale(.417804)}84%{transform:translate(452.472px,104.524px)scale(1.58368)}to{transform:translate(452.472px,104.524px)scale(1.58368)}}@keyframes logo-edge-top{0%,18%{transform:translateY(95.77px)scale(0)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translateY(95.77px)scale(1545)}50%,to{transform:translate(457.5px)scale(612.17)}}@keyframes logo-edge-bottom{0%,18%{transform:translate(10px,544.23px)scale(0)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(10px,544.23px)scale(1545)}50%,to{transform:translate(485.33px,640px)scale(612.17)}}@keyframes logo-edge-left{0%{transform:translateY(544.23px)scale(0)}12%{transform:translateY(324.23px)scale(220)}22%{transform:translateY(104.23px)scale(440)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translateY(95.77px)scale(430)}50%,to{transform:translate(457.5px)scale(612.17)}}@keyframes logo-edge-right{0%{transform:translate(1555px,95.77px)scale(0)}12%{transform:translate(1555px,95.77px)scale(220)}22%{transform:translate(1555px,95.77px)scale(440)}30%{animation-timing-function:cubic-bezier(.32,.72,.24,1);transform:translate(1555px,114.23px)scale(430)}50%,to{transform:translate(1097.5px,27.83px)scale(612.17)}}@keyframes intro-veil{to{opacity:0;visibility:hidden}}@media (prefers-reduced-motion:reduce){.intro[data-astro-cid-5y43w45z]{display:none}}@font-face{font-family:Megrim;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/megrim-latin-ext-400-normal.BTVRVZy6.woff2)format("woff2"),url(/_astro/megrim-latin-ext-400-normal.C_T_v6hM.woff)format("woff");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:Megrim;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/megrim-latin-400-normal.McqJ7mzv.woff2)format("woff2"),url(/_astro/megrim-latin-400-normal.D9TCW8Jy.woff)format("woff");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:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/raleway-cyrillic-ext-wght-normal.Dc5xu4We.woff2)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:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/raleway-cyrillic-wght-normal.B0Yo_ULV.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/raleway-vietnamese-wght-normal.wikBsL6_.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:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/raleway-latin-ext-wght-normal.CwtNDoQR.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:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/raleway-latin-wght-normal.CSF1BaNN.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}:root{--cream:#fdf2ed;--sand:#f1ab86;--terracotta:#b6663e;--stone:#544f51;--espresso:#2e1a0f;--bg:var(--cream);--bg-raised:#fff8f4;--fg:var(--espresso);--fg-muted:var(--stone);--accent:var(--terracotta);--accent-soft:var(--sand);--line:color-mix(in srgb, var(--espresso) 22%, transparent);--line-strong:var(--espresso);--selection:color-mix(in srgb, var(--sand) 55%, transparent);--shadow:0 18px 44px -24px color-mix(in srgb, var(--espresso) 45%, transparent);--font-display:"Megrim", "Raleway", system-ui, sans-serif;--font-body:"Raleway Variable", "Raleway", system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, "SFMono-Regular", "Menlo", monospace;--step--1:clamp(.83rem, .8rem + .15vw, .92rem);--step-0:clamp(1rem, .96rem + .2vw, 1.125rem);--step-1:clamp(1.2rem, 1.12rem + .4vw, 1.4rem);--step-2:clamp(1.45rem, 1.3rem + .75vw, 1.85rem);--step-3:clamp(1.8rem, 1.5rem + 1.5vw, 2.6rem);--step-4:clamp(2.3rem, 1.7rem + 3vw, 4rem);--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-s:1rem;--space-m:1.5rem;--space-l:2.25rem;--space-xl:3.5rem;--space-2xl:clamp(4rem, 9vw, 7rem);--gutter:1.25rem;--width-content:68rem;--width-prose:42rem;--frame-color:var(--line-strong);--frame-width:1px;--frame-inset:12px;--frame-opacity-idle:1;--frame-duration:.52s;--frame-duration-out:.36s;--frame-ease:cubic-bezier(.4, 0, .2, 1);--radius:0;--header-height:4.5rem;color-scheme:light}:root[data-theme=dark]{--bg:#2e1a0f;--bg-raised:#3a2317;--fg:#fdf2ed;--fg-muted:#b8ada7;--accent:#f1ab86;--accent-soft:#b6663e;--line:#fdf2ed3d;--line-strong:#fdf2ed;--selection:#b6663e99;--shadow:0 18px 44px -24px #0009;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#2e1a0f;--bg-raised:#3a2317;--fg:#fdf2ed;--fg-muted:#b8ada7;--accent:#f1ab86;--accent-soft:#b6663e;--line:#fdf2ed3d;--line-strong:#fdf2ed;--selection:#b6663e99;--shadow:0 18px 44px -24px #0009;color-scheme:dark}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-height) + 1rem)}html.is-loaded{scroll-behavior:smooth}body{background-color:var(--bg);min-height:100svh;color:var(--fg);font-family:var(--font-body);font-size:var(--step-0);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;flex-direction:column;font-weight:400;line-height:1.65;display:flex;overflow-x:hidden}::selection{background-color:var(--selection);color:var(--fg)}img,picture,svg,video{max-width:100%;height:auto;display:block}input,button,textarea,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}h1,h2{font-family:var(--font-display);letter-spacing:.02em;text-wrap:balance;font-weight:400;line-height:1.1}h1{font-size:var(--step-4)}h2{font-size:var(--step-3)}h3,h4{font-family:var(--font-body);text-wrap:balance;font-weight:600;line-height:1.25}h3{font-size:var(--step-1)}h4{font-size:var(--step-0);letter-spacing:.01em}p{text-wrap:pretty}a{color:inherit;text-decoration-color:color-mix(in srgb, currentColor 40%, transparent);text-underline-offset:.2em}strong{font-weight:700}small{font-size:var(--step--1)}hr{background-color:var(--line);border:0;height:1px}.container{width:min(100% - (var(--gutter) * 2), var(--width-content));margin-inline:auto}.container-prose{width:min(100% - (var(--gutter) * 2), var(--width-prose));margin-inline:auto}.stack{gap:var(--space-m);flex-direction:column;display:flex}.stack--tight{gap:var(--space-m)}.flow>*+*{margin-block-start:var(--space-s)}main{width:100%;padding-block:var(--space-xl) var(--space-2xl);flex:1 0 auto}section+section{margin-block-start:var(--space-2xl)}.rule{background:linear-gradient(90deg, var(--line-strong), transparent);width:min(100%,26rem);height:1px;margin-block-start:var(--space-xs)}.eyebrow{font-size:var(--step--1);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-weight:600}.muted{color:var(--fg-muted)}.skip-link{z-index:2000;padding:var(--space-2xs) var(--space-s);background-color:var(--bg);border:1px solid var(--line-strong);text-decoration:none;transition:inset-block-start .16s;position:absolute;inset-block-start:-100%;inset-inline-start:var(--space-s)}.skip-link:focus-visible{inset-block-start:var(--space-s)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){html.is-loaded{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.frame{position:relative;overflow:hidden}.frame:before,.frame:after{content:"";pointer-events:none;opacity:var(--frame-opacity-idle,1);background-repeat:no-repeat;background-image:linear-gradient(var(--frame-color), var(--frame-color)), linear-gradient(var(--frame-color), var(--frame-color));transition:opacity .14s;position:absolute;inset:0}.frame:before{background-position:var(--frame-inset) 0, right top;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}.frame:after{background-position:0 100%,0 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}.frame.frame--reveal{--frame-opacity-idle:0}@media (hover:none){.card.frame--reveal,.skill-card.frame--reveal{--frame-opacity-idle:1}}.btn.frame:not(.frame--reveal).is-drawing:before{animation:frame-redraw-top var(--frame-duration) var(--frame-ease) forwards}.btn.frame:not(.frame--reveal).is-drawing:after{animation:frame-redraw-bottom var(--frame-duration) var(--frame-ease) forwards}.btn.frame:not(.frame--reveal).is-erasing:before{animation:frame-restore-top var(--frame-duration-out) var(--frame-ease)}.btn.frame:not(.frame--reveal).is-erasing:after{animation:frame-restore-bottom var(--frame-duration-out) var(--frame-ease)}.frame--reveal.is-drawing:before,.frame--reveal:focus-within:before{opacity:1;animation:frame-draw-top var(--frame-duration) var(--frame-ease) forwards}.frame--reveal.is-drawing:after,.frame--reveal:focus-within:after{opacity:1;animation:frame-draw-bottom var(--frame-duration) var(--frame-ease) forwards}.frame--reveal.is-erasing:before{opacity:1;animation:frame-erase-top var(--frame-duration-out) var(--frame-ease)}.frame--reveal.is-erasing:after{opacity:1;animation:frame-erase-bottom var(--frame-duration-out) var(--frame-ease)}@keyframes frame-draw-top{0%{background-position:0 0,100% 0;background-size:0 var(--frame-width), var(--frame-width) 0}50%{background-position:0 0,100% 0;background-size:100% var(--frame-width), var(--frame-width) 0}51%{background-position:100% 0,100% 0;background-size:100% var(--frame-width), var(--frame-width) 0}62%{background-position:var(--frame-inset) 0, right top;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}to{background-position:var(--frame-inset) 0, right top;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}}@keyframes frame-draw-bottom{0%{background-position:100% 100%,0 100%;background-size:0 var(--frame-width), var(--frame-width) 0}50%{background-position:100% 100%,0 100%;background-size:100% var(--frame-width), var(--frame-width) 0}51%{background-position:0 100%,0 100%;background-size:100% var(--frame-width), var(--frame-width) 0}62%{background-position:0 100%,0 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}to{background-position:0 100%,0 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}}@keyframes frame-erase-top{0%{background-position:var(--frame-inset) 0, right top;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset));opacity:1}38%{background-position:var(--frame-inset) 0, right top;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}50%{background-position:0 0,100% 0;background-size:100% var(--frame-width), var(--frame-width) 0}51%{background-position:0 0,0 0;background-size:100% var(--frame-width), var(--frame-width) 0}99%{background-position:0 0,0 0;background-size:0 var(--frame-width), var(--frame-width) 0;opacity:1}to{background-size:0 var(--frame-width), var(--frame-width) 0;opacity:0}}@keyframes frame-erase-bottom{0%{background-position:0 100%,0 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset));opacity:1}38%{background-position:0 100%,0 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}50%{background-position:100% 100%,0 100%;background-size:100% var(--frame-width), var(--frame-width) 0}51%{background-position:100% 100%,100% 100%;background-size:100% var(--frame-width), var(--frame-width) 0}99%{background-position:100% 100%,100% 100%;background-size:0 var(--frame-width), var(--frame-width) 0;opacity:1}to{background-size:0 var(--frame-width), var(--frame-width) 0;opacity:0}}@keyframes frame-redraw-top{0%{background-position:var(--frame-inset) 0, right top;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}18%{background-position:var(--frame-inset) 0, right top;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}40%{background-position:0 0,100% 0;background-size:100% var(--frame-width), var(--frame-width) 0}41%{background-position:0 0,0 0;background-size:100% var(--frame-width), var(--frame-width) 0}62%{background-position:0 0,0 0;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}to{background-position:0 0,0 0;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}}@keyframes frame-redraw-bottom{0%{background-position:0 100%,0 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}18%{background-position:0 100%,0 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}40%{background-position:100% 100%,0 100%;background-size:100% var(--frame-width), var(--frame-width) 0}41%{background-position:100% 100%,100% 100%;background-size:100% var(--frame-width), var(--frame-width) 0}62%{background-position:100% 100%,100% 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}to{background-position:100% 100%,100% 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}}@keyframes frame-restore-top{0%{background-position:0 0,0 0;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}38%{background-position:0 0,0 0;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}59%{background-position:0 0,0 0;background-size:100% var(--frame-width), var(--frame-width) 0}60%{background-position:0 0,100% 0;background-size:100% var(--frame-width), var(--frame-width) 0}82%{background-position:var(--frame-inset) 0, right top;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}to{background-position:var(--frame-inset) 0, right top;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}}@keyframes frame-restore-bottom{0%{background-position:100% 100%,100% 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}38%{background-position:100% 100%,100% 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}59%{background-position:100% 100%,100% 100%;background-size:100% var(--frame-width), var(--frame-width) 0}60%{background-position:100% 100%,0 100%;background-size:100% var(--frame-width), var(--frame-width) 0}82%{background-position:0 100%,0 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) 0}to{background-position:0 100%,0 100%;background-size:calc(100% - var(--frame-inset)) var(--frame-width), var(--frame-width) calc(100% - var(--frame-inset))}}@media (prefers-reduced-motion:reduce){.frame--reveal.is-drawing:before,.frame--reveal.is-drawing:after,.frame--reveal:focus-within:before,.frame--reveal:focus-within:after{opacity:1;animation:none!important}.frame--reveal.is-erasing:before,.frame--reveal.is-erasing:after{opacity:0;animation:none!important}.btn.frame.is-drawing:before,.btn.frame.is-drawing:after,.btn.frame.is-erasing:before,.btn.frame.is-erasing:after{animation:none!important}}.btn{--frame-color:var(--line-strong);--frame-inset:10px;--frame-opacity-idle:1;justify-content:center;align-items:center;gap:var(--space-2xs);letter-spacing:.02em;cursor:pointer;background-color:#0000;border:0;min-height:2.9rem;padding:.8rem 1.4rem;font-weight:500;line-height:1.2;text-decoration:none;transition:background-color .22s,color .22s;display:inline-flex}.btn:hover,.btn:focus-visible{background-color:var(--accent-soft);color:var(--espresso)}:root[data-theme=dark] .btn:hover,:root[data-theme=dark] .btn:focus-visible{color:var(--cream)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .btn:hover,:root:not([data-theme=light]) .btn:focus-visible{color:var(--cream)}}.btn--primary{background-color:var(--accent-soft);color:var(--espresso)}:root[data-theme=dark] .btn--primary{color:var(--cream)}.btn--primary:hover,.btn--primary:focus-visible{color:var(--fg);background-color:#0000}.btn--ghost{--frame-opacity-idle:0}.btn--icon{width:2.9rem;min-width:2.9rem;padding:0}.btn--block{width:100%}.btn[disabled],.btn[aria-disabled=true]{opacity:.5;pointer-events:none}.theme-icon--moon,:root[data-theme=dark] .theme-icon--sun{display:none}:root[data-theme=dark] .theme-icon--moon{display:block}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-icon--sun{display:none}:root:not([data-theme=light]) .theme-icon--moon{display:block}}.nav-link{--frame-color:var(--line-strong);--frame-inset:10px;--nav-item-py:.6rem;--nav-item-px:1.1rem;--nav-item-line-height:1.65;--nav-item-min-height:2.2rem;padding:var(--nav-item-py) var(--nav-item-px);min-height:var(--nav-item-min-height);line-height:var(--nav-item-line-height);font-family:var(--font-display);font-size:var(--step-1);letter-spacing:.04em;white-space:nowrap;justify-content:center;align-items:center;text-decoration:none;transition:color .2s;display:inline-flex}.nav-link[aria-current]{color:var(--accent);font-weight:500}.nav-link--cta{--frame-inset:10px;--frame-opacity-idle:1;font-family:var(--font-display);letter-spacing:.04em}.nav-link--cta[aria-current]{color:inherit}.nav-separator{background-color:var(--line);width:1px;height:1.35rem;margin-inline:clamp(.25rem,1vw,.6rem)}.link-inline{transition:background-size .28s var(--frame-ease);background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:100% 1px;text-decoration:none;position:relative}.link-inline:hover,.link-inline:focus-visible{color:var(--accent);background-position:100% 100%;background-size:0 1px}.link-arrow{font-weight:600;font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);align-items:center;gap:.5rem;text-decoration:none;display:inline-flex}.link-arrow svg{transition:transform .24s var(--frame-ease)}.link-arrow:hover svg,.link-arrow:focus-visible svg,a:hover .link-arrow svg,.card:hover .link-arrow svg{transform:translate(.35rem)}.tag{font-size:var(--step--1);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);border:1px solid var(--line);align-items:center;padding:.2rem .65rem;text-decoration:none;transition:border-color .2s,color .2s;display:inline-flex}a.tag:hover,a.tag:focus-visible{color:var(--accent);border-color:var(--accent)}.tag-list{gap:var(--space-2xs);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.before-header{width:100%;min-height:calc(100vh - var(--header-height));min-height:calc(100svh - var(--header-height));padding-block:var(--space-xl) var(--space-l);flex-direction:column;justify-content:center;display:flex}.site-header{z-index:100;background-color:var(--bg);width:100%;transition:box-shadow .24s,background-color .24s;position:sticky;top:0}.site-header[data-stuck=true]{background-color:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(10px);box-shadow:0 1px 0 var(--line)}.site-header__inner{justify-content:space-between;align-items:center;gap:var(--space-s);min-height:var(--header-height);padding-block:var(--space-2xs);display:flex}.brand{align-items:baseline;gap:.55rem;line-height:1;text-decoration:none;display:inline-flex}.brand__mark{aspect-ratio:1;background-color:currentColor;width:clamp(1.5rem,4vw,2.5rem);display:none;-webkit-mask:url(/favicon.svg) 50%/contain no-repeat;mask:url(/favicon.svg) 50%/contain no-repeat}.brand__name{font-family:var(--font-display);font-size:var(--step-0);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;align-self:center}@media (width>=30rem){.brand__mark{display:inline}.brand__name{font-size:var(--step-1)}}.header-actions{align-items:center;gap:var(--space-2xs);display:flex}.nav-desktop{display:none}.mobile-nav{display:contents}.mobile-nav__toggle{z-index:200;background-color:var(--bg);width:3.5rem;min-width:3.5rem;height:3.5rem;box-shadow:var(--shadow);--frame-inset:10px;--frame-opacity-idle:1;margin-inline:auto;position:fixed;inset-block-end:calc(var(--space-s) + env(safe-area-inset-bottom));inset-inline:0}.mobile-nav__panel{inset-inline:var(--gutter);z-index:190;width:min(22rem, calc(100% - var(--gutter) * 2));padding:var(--space-s);background-color:var(--bg);box-shadow:var(--shadow);opacity:0;visibility:hidden;transition:opacity .22s ease, transform .22s var(--frame-ease), visibility 0s linear .22s;margin-inline:auto;position:fixed;inset-block-end:calc(5.75rem + env(safe-area-inset-bottom));transform:translateY(.75rem)}.mobile-nav[data-menu-open=true] .mobile-nav__panel{opacity:1;visibility:visible;transition:opacity .22s ease, transform .22s var(--frame-ease), visibility 0s linear 0s;transform:translateY(0)}.mobile-nav__panel ul{gap:var(--space-3xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.mobile-nav__panel .nav-link{justify-content:center;width:100%;min-height:3rem}.mobile-nav__panel .nav-separator{width:100%;height:1px;margin-block:var(--space-2xs);margin-inline:0}.menu-toggle__icon{flex-direction:column;justify-content:center;gap:.3rem;width:1.25rem;height:1.1rem;display:inline-flex}.menu-toggle__icon span{width:100%;height:1.5px;transition:transform .24s var(--frame-ease), opacity .18s ease;background-color:currentColor;display:block}.mobile-nav[data-menu-open=true] .menu-toggle__icon span:first-child{transform:translateY(.45rem)rotate(45deg)}.mobile-nav[data-menu-open=true] .menu-toggle__icon span:nth-child(2){opacity:0}.mobile-nav[data-menu-open=true] .menu-toggle__icon span:last-child{transform:translateY(-.45rem)rotate(-45deg)}@media (width<=47.999rem){.site-header{order:-1}.before-header{min-height:0;padding-block:var(--space-l) var(--space-m)}.site-footer{padding-block-end:calc(var(--space-xl) + 3.5rem)}}@media (width>=48rem){.nav-desktop{align-items:center;gap:clamp(.25rem,1vw,.75rem);margin:0;padding:0;list-style:none;display:flex}.mobile-nav{display:none}}.site-footer{padding-block:var(--space-xl);border-top:1px solid var(--line);margin-block-start:auto}.site-footer__grid{gap:var(--space-l);display:grid}.site-footer__identity p{color:var(--fg-muted);font-size:var(--step--1)}.site-footer__title{font-family:var(--font-display);font-size:var(--step-2);letter-spacing:.08em;text-transform:uppercase;margin-block-end:var(--space-2xs)}.site-footer__columns{gap:var(--space-m);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.site-footer h2{font-family:var(--font-body);font-size:var(--step--1);letter-spacing:.16em;text-transform:uppercase;color:var(--fg-muted);margin-block-end:var(--space-2xs);font-weight:600}.site-footer ul{gap:var(--space-3xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.site-footer a{font-size:var(--step--1);text-decoration:none}.social-list{flex-wrap:wrap;gap:var(--space-2xs)!important;flex-direction:row!important}.social-link{--frame-inset:8px;--frame-opacity-idle:0;width:2.6rem;height:2.6rem;color:var(--fg-muted);justify-content:center;align-items:center;transition:color .2s;display:inline-flex}.social-link:hover,.social-link:focus-visible{color:var(--accent)}.social-link svg{width:1.15rem;height:1.15rem}.site-footer__bottom{justify-content:space-between;align-items:center;gap:var(--space-2xs);border-top:1px solid var(--line);font-size:var(--step--1);color:var(--fg-muted);flex-wrap:wrap;margin-block-start:var(--space-l);padding-block-start:var(--space-s);display:flex}@media (width>=48rem){.site-footer__grid{align-items:start;gap:var(--space-2xl);grid-template-columns:1.4fr 1fr}.site-footer__columns{grid-template-columns:repeat(2,minmax(0,1fr))}}.site-footer__identity{--frame-inset:14px;padding:var(--space-m)}.company-meta{gap:var(--space-2xs);flex-direction:column;margin-block-start:var(--space-s);display:flex}.company-meta dt{font-size:var(--step--1);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);font-weight:600}.company-meta dd{font-size:var(--step--1);margin:0}.page-header{gap:var(--space-xs);flex-direction:column;margin-block-end:var(--space-xl);display:flex}.page-header p{max-width:var(--width-prose);color:var(--fg-muted);font-size:var(--step-1)}.hero{gap:var(--space-l);display:grid}.hero__text{gap:var(--space-s);flex-direction:column;align-items:flex-start;display:flex}.hero__subtitle{max-width:36rem;font-size:var(--step-1);color:var(--fg-muted)}.hero__actions{gap:var(--space-2xs);flex-wrap:wrap;margin-block-start:var(--space-2xs);display:flex}.portrait{--frame-inset:16px;--portrait-focus:50% 18%;justify-self:center;width:100%;max-width:24rem;margin:0;padding:1rem}.portrait__media{position:relative;overflow:hidden}.portrait img{aspect-ratio:4/5;object-fit:cover;object-position:var(--portrait-focus);width:100%;display:block}.portrait__card{justify-content:center;align-items:center;gap:var(--space-3xs);padding:var(--space-s);text-align:center;color:#fdf2ed;opacity:0;transition:opacity .3s var(--frame-ease);background-color:#2e1a0fbd;flex-direction:column;display:flex;position:absolute;inset:0}.portrait:focus-within .portrait__card,.portrait.is-revealed .portrait__card{opacity:1}@media (hover:hover){.portrait:hover .portrait__card{opacity:1}}.portrait__name{font-family:var(--font-display);font-size:var(--step-2);letter-spacing:.06em;text-transform:uppercase;line-height:1.1}.portrait__role{font-size:var(--step--1);letter-spacing:.14em;text-transform:uppercase;opacity:.85}@media (prefers-reduced-motion:reduce){.portrait__card{transition:none}}.portrait figcaption{font-size:var(--step--1);color:var(--fg-muted);text-align:center;margin-block-start:var(--space-2xs)}@media (width>=52rem){.hero{align-items:center;gap:var(--space-2xl);grid-template-columns:1.35fr 1fr}.portrait{justify-self:end}}.section__head{gap:var(--space-2xs);flex-direction:column;margin-block-end:var(--space-l);display:flex}.section__head p{max-width:var(--width-prose);color:var(--fg-muted)}.prose-columns{gap:var(--space-m);max-width:var(--width-prose);display:grid}.prose-columns--two{max-width:none}@media (width>=52rem){.prose-columns--two{gap:var(--space-xl);grid-template-columns:repeat(2,minmax(0,1fr))}}.section-split{gap:var(--space-l);align-items:center;display:grid}@media (width>=52rem){.section-split{gap:var(--space-xl);grid-template-columns:1.35fr 1fr}.section-split--media-first{grid-template-columns:1fr 1.35fr}}.illus{--frame-inset:16px;justify-self:center;width:100%;margin:0;padding:.85rem}.illus img{aspect-ratio:4/3;object-fit:cover;width:100%}.skill-card__glyph{margin-block-start:auto;margin-inline:auto;padding-block-start:var(--space-s)}.bonus{text-align:center}.bonus .section__head{align-items:center}.bonus .section__head p{margin-inline:auto}.bonus .card-grid{max-width:58rem;margin-inline:auto}.skill-card--bonus{gap:var(--space-s);align-items:center}.skill-card--bonus .glyph{margin-inline:auto}.skill-card--bonus h4{font-size:var(--step-1)}.section__head--sub{margin-block-end:var(--space-m)}.section__head--sub h3{font-family:var(--font-display);font-size:var(--step-2);letter-spacing:.02em;font-weight:400}.timeline{gap:0;margin:0;padding:0;list-style:none;display:grid}.timeline__item{gap:var(--space-3xs);padding:var(--space-m) 0 var(--space-m) var(--space-m);border-left:1px solid var(--line);display:grid;position:relative}.timeline__item:before{content:"";background-color:var(--accent);width:8px;height:8px;position:absolute;inset-block-start:calc(var(--space-m) + .55rem);inset-inline-start:-4.5px;transform:rotate(45deg)}.timeline__period{font-size:var(--step--1);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-weight:600}.timeline__place{font-size:var(--step--1);color:var(--fg-muted)}.timeline__item p:last-child{color:var(--fg-muted);margin-block-start:var(--space-3xs)}@media (width>=52rem){.timeline__item{column-gap:var(--space-m);grid-template-columns:12rem minmax(0,1fr);align-items:start}.timeline__period{grid-row:span 3;padding-block-start:.35rem}}.card-grid{gap:var(--space-m);grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr));margin:0;padding:0;list-style:none;display:grid}.card-grid--wide{grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr))}@media (width<=51.999rem){.card-grid--rail{scroll-snap-type:x mandatory;margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);scroll-padding-inline:var(--gutter);padding-block:8px var(--space-2xs);overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent;grid-template-columns:none;grid-auto-columns:min(78%,20rem);grid-auto-flow:column;margin-block-start:-8px;overflow-x:auto}.card-grid--rail>li{scroll-snap-align:start}.card-grid--rail .card__footer{display:none}.card-grid--rail .card__result{-webkit-line-clamp:1;line-clamp:1}}@media (prefers-reduced-motion:reduce){.card-grid--rail{scroll-behavior:auto}}.card{--frame-inset:14px;gap:var(--space-2xs);height:100%;padding:var(--space-m);transition:transform .3s var(--frame-ease);flex-direction:column;display:flex}.card:hover{transform:translateY(-3px)}.card__media{margin-block-end:var(--space-2xs);overflow:hidden}.card__media img{aspect-ratio:16/9;object-fit:cover;width:100%;transition:transform .5s var(--frame-ease)}.card:hover .card__media img{transform:scale(1.03)}.card__meta{align-items:center;gap:var(--space-2xs);font-size:var(--step--1);color:var(--fg-muted);flex-wrap:wrap;display:flex}.card__title{font-size:var(--step-1)}.card__title a{text-decoration:none}.card__title a:after{content:"";position:absolute;inset:0}.card p{color:var(--fg-muted)}.card>p,.card__result{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.card__footer{margin-block-start:auto;padding-block-start:var(--space-2xs)}.card--featured{gap:var(--space-s)}@media (width>=52rem){.card--featured{align-items:center;gap:var(--space-l);padding:var(--space-l);grid-column:1/-1;grid-template-columns:1fr 1fr;display:grid}.card--featured .card__media{grid-row:span 5;margin:0}.card--featured>p{-webkit-line-clamp:4;line-clamp:4}.card--featured .card__media img{aspect-ratio:4/3}.card--featured .card__title{font-size:var(--step-2);font-family:var(--font-display);font-weight:400}}.skill-card{--frame-inset:12px;gap:var(--space-2xs);padding:var(--space-m);flex-direction:column;display:flex}.skill-card p{color:var(--fg-muted);font-size:var(--step--1)}.callout{--frame-inset:18px;align-items:flex-start;gap:var(--space-s);padding:var(--space-l);background-color:var(--bg-raised);flex-direction:column;display:flex}.callout p{max-width:38rem;color:var(--fg-muted)}@media (width>=52rem){.callout{padding:var(--space-xl)}}.contact-form{gap:var(--space-m);flex-direction:column;width:100%;max-width:48rem;display:flex}.contact-form .field{gap:var(--space-3xs);width:100%;display:grid}.field-label{font-family:var(--font-body);font-size:var(--step-0);font-weight:600;line-height:1.3}.field-shell{--frame-inset:10px;width:100%;min-height:3.2rem;padding:.75rem 1rem;transition:background-color .2s;display:block}.field-shell:focus-within{background-color:var(--bg-raised)}.form-input{box-sizing:border-box;width:100%;color:inherit;font:inherit;resize:vertical;-webkit-appearance:none;appearance:none;background:0 0;border:0;outline:0;margin:0;padding:0;line-height:1.4;display:block}.field-shell-textarea .form-input{min-height:5.12rem}.field-hint,.field-error{font-size:var(--step--1);color:var(--fg-muted)}.field-error{color:var(--accent);display:none}.field[data-invalid=true] .field-error{display:block}.field[data-invalid=true] .field-shell{--frame-color:var(--accent)}.form-status{padding:var(--space-s);font-size:var(--step--1);background-color:var(--bg-raised);display:none}.form-status[data-state=success],.form-status[data-state=error]{display:block}.btn-form{width:min(100%,15rem)}.contact-modal{--frame-inset:14px;width:min(28rem, calc(100vw - 2 * var(--gutter)));height:fit-content;padding:var(--space-l);color:var(--fg);background-color:var(--bg-raised);border:0;margin:auto;position:fixed;inset:0}.contact-modal h2{font-family:var(--font-display);font-size:var(--step-2);letter-spacing:.02em;margin-block-end:var(--space-2xs);font-weight:400}.contact-modal p{color:var(--fg-muted);margin-block-end:var(--space-2xs)}.contact-modal__secours{font-size:var(--step--1)}.contact-modal .btn{margin-block-start:var(--space-s)}.contact-modal::backdrop{background-color:#2e1a0f8c}.honeypot{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}@media (width>=34rem){.contact-form .field{align-items:start;column-gap:var(--space-s);grid-template-columns:1fr 3fr}.field-label{padding-block-start:.8rem}.field-error,.contact-form>.field-hint{grid-column:2}}.contact-grid{gap:var(--space-l);display:grid}@media (width>=52rem){.contact-grid{gap:var(--space-2xl);grid-template-columns:1.2fr 1fr;align-items:start}}.info-list{gap:var(--space-m);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.info-list dt{font-size:var(--step--1);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);margin-block-end:var(--space-3xs);font-weight:600}.info-list dd{margin:0}.empty-state{--frame-inset:16px;padding:var(--space-xl) var(--space-l);text-align:center;color:var(--fg-muted)}.post-nav{gap:var(--space-s);border-top:1px solid var(--line);margin-block-start:var(--space-xl);padding-block-start:var(--space-l);display:grid}@media (width>=40rem){.post-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.post-nav__item--next{text-align:right}}.post-nav__label{font-size:var(--step--1);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);margin-block-end:var(--space-3xs);display:block}.post-nav a{font-weight:600;text-decoration:none}.steps{gap:var(--space-s);flex-direction:column;display:flex}.step{--frame-inset:12px;padding:0}.step__summary{align-items:center;gap:var(--space-s);padding:var(--space-m);cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;list-style:none;transition:background-color .2s;display:grid}.step__summary::-webkit-details-marker{display:none}.step__summary:hover{background-color:var(--bg-raised)}.step:hover,.step[open]{--frame-color:var(--accent)}.step:hover .step__title,.step[open] .step__title,.step:hover .step__chevron,.step[open] .step__chevron,.step[open] .step__number{color:var(--accent)}.step__title,.step__chevron{transition:color .2s}.step__number{font-family:var(--font-display);font-size:var(--step-3);color:var(--accent);border-inline-end:1px solid var(--line);padding-inline-end:var(--space-s);line-height:1}.step__heading{gap:var(--space-3xs);flex-direction:column;min-width:0;display:flex}.step__title{font-size:var(--step-1);letter-spacing:.02em;text-wrap:balance;font-weight:600}.step__lead{font-size:var(--step--1);color:var(--fg-muted)}.step__chevron{color:var(--fg-muted);transition:transform .24s var(--frame-ease);flex-shrink:0}.step[open] .step__chevron{transform:rotate(180deg)}.step__body{gap:var(--space-s);padding:0 var(--space-m) var(--space-m);color:var(--fg-muted);flex-direction:column;display:flex}@media (width>=40rem){.step__body{padding-inline-start:calc(var(--space-m) * 2 + 2.6rem)}}.step__points{gap:var(--space-2xs);flex-direction:column;margin:0;padding-inline-start:1.1rem;display:flex}.step__points li::marker{color:var(--accent)}.step__points strong{color:var(--fg)}.card__result{font-size:var(--step--1)}.card__result strong{color:var(--fg)}.glyph{width:100%;max-width:11rem;height:auto;color:var(--accent);display:block;overflow:visible}.glyph path,.glyph line,.glyph rect,.glyph circle,.glyph polyline{stroke:currentColor;stroke-width:1.5px;fill:none;stroke-linecap:round;stroke-linejoin:round}@media (prefers-reduced-motion:reduce){.glyph *{stroke-dashoffset:0!important;animation:none!important}.glyph .glyph--motion-only{display:none}}.prose{max-width:var(--width-prose);font-size:var(--step-0);line-height:1.75}.prose>*+*{margin-block-start:var(--space-m)}.prose h2{font-size:var(--step-2);margin-block-start:var(--space-xl)}.prose h3{font-size:var(--step-1);margin-block-start:var(--space-l)}.prose h2+*,.prose h3+*{margin-block-start:var(--space-s)}.prose a{color:var(--accent);text-underline-offset:.2em;text-decoration:underline 1px}.prose ul,.prose ol{gap:var(--space-2xs);flex-direction:column;padding-inline-start:1.25rem;display:flex}.prose li::marker{color:var(--accent)}.prose blockquote{border-inline-start:2px solid var(--accent);color:var(--fg-muted);padding-inline-start:var(--space-m);font-style:italic}.prose img,.prose video{width:100%}.prose figure figcaption{font-size:var(--step--1);color:var(--fg-muted);text-align:center;margin-block-start:var(--space-2xs)}.prose code{font-family:var(--font-mono);background-color:var(--bg-raised);border:1px solid var(--line);padding:.15em .4em;font-size:.9em}.prose pre{padding:var(--space-m);border:1px solid var(--line);font-size:var(--step--1);line-height:1.6;overflow-x:auto}.prose pre code{background:0 0;border:0;padding:0}.prose hr{margin-block:var(--space-xl)}.prose table{border-collapse:collapse;width:100%;font-size:var(--step--1)}.prose th,.prose td{padding:var(--space-2xs) var(--space-xs);border-bottom:1px solid var(--line);text-align:left}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}.article-header{gap:var(--space-s);flex-direction:column;margin-block-end:var(--space-xl);display:flex}.article-header h1{font-size:var(--step-3)}.article-meta{align-items:center;gap:var(--space-2xs) var(--space-s);font-size:var(--step--1);color:var(--fg-muted);flex-wrap:wrap;display:flex}.article-cover{--frame-inset:16px;margin-block-end:var(--space-xl);padding:.75rem}.article-cover img{aspect-ratio:16/9;object-fit:cover;width:100%}::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2;animation:theme-wipe .6s var(--frame-ease) forwards}@keyframes theme-wipe{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}@media (prefers-reduced-motion:reduce){::view-transition-new(root){animation:none}}
