@font-face{font-family:Lora;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/03b436aa846269de-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Lora;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/0086f8992871c45b-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Lora;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ab00a911ac2adf48-s.woff2) format("woff2");unicode-range:u+0302-0303,u+0305,u+0307-0308,u+0310,u+0312,u+0315,u+031a,u+0326-0327,u+032c,u+032f-0330,u+0332-0333,u+0338,u+033a,u+0346,u+034d,u+0391-03a1,u+03a3-03a9,u+03b1-03c9,u+03d1,u+03d5-03d6,u+03f0-03f1,u+03f4-03f5,u+2016-2017,u+2034-2038,u+203c,u+2040,u+2043,u+2047,u+2050,u+2057,u+205f,u+2070-2071,u+2074-208e,u+2090-209c,u+20d0-20dc,u+20e1,u+20e5-20ef,u+2100-2112,u+2114-2115,u+2117-2121,u+2123-214f,u+2190,u+2192,u+2194-21ae,u+21b0-21e5,u+21f1-21f2,u+21f4-2211,u+2213-2214,u+2216-22ff,u+2308-230b,u+2310,u+2319,u+231c-2321,u+2336-237a,u+237c,u+2395,u+239b-23b7,u+23d0,u+23dc-23e1,u+2474-2475,u+25af,u+25b3,u+25b7,u+25bd,u+25c1,u+25ca,u+25cc,u+25fb,u+266d-266f,u+27c0-27ff,u+2900-2aff,u+2b0e-2b11,u+2b30-2b4c,u+2bfe,u+3030,u+ff5b,u+ff5d,u+1d400-1d7ff,u+1ee??}@font-face{font-family:Lora;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/36008747766f78c6-s.woff2) format("woff2");unicode-range:u+0001-000c,u+000e-001f,u+007f-009f,u+20dd-20e0,u+20e2-20e4,u+2150-218f,u+2190,u+2192,u+2194-2199,u+21af,u+21e6-21f0,u+21f3,u+2218-2219,u+2299,u+22c4-22c6,u+2300-243f,u+2440-244a,u+2460-24ff,u+25a0-27bf,u+28??,u+2921-2922,u+2981,u+29bf,u+29eb,u+2b??,u+4dc0-4dff,u+fff9-fffb,u+10140-1018e,u+10190-1019c,u+101a0,u+101d0-101fd,u+102e0-102fb,u+10e60-10e7e,u+1d2c0-1d2d3,u+1d2e0-1d37f,u+1f0??,u+1f100-1f1ad,u+1f1e6-1f1ff,u+1f30d-1f30f,u+1f315,u+1f31c,u+1f31e,u+1f320-1f32c,u+1f336,u+1f378,u+1f37d,u+1f382,u+1f393-1f39f,u+1f3a7-1f3a8,u+1f3ac-1f3af,u+1f3c2,u+1f3c4-1f3c6,u+1f3ca-1f3ce,u+1f3d4-1f3e0,u+1f3ed,u+1f3f1-1f3f3,u+1f3f5-1f3f7,u+1f408,u+1f415,u+1f41f,u+1f426,u+1f43f,u+1f441-1f442,u+1f444,u+1f446-1f449,u+1f44c-1f44e,u+1f453,u+1f46a,u+1f47d,u+1f4a3,u+1f4b0,u+1f4b3,u+1f4b9,u+1f4bb,u+1f4bf,u+1f4c8-1f4cb,u+1f4d6,u+1f4da,u+1f4df,u+1f4e3-1f4e6,u+1f4ea-1f4ed,u+1f4f7,u+1f4f9-1f4fb,u+1f4fd-1f4fe,u+1f503,u+1f507-1f50b,u+1f50d,u+1f512-1f513,u+1f53e-1f54a,u+1f54f-1f5fa,u+1f610,u+1f650-1f67f,u+1f687,u+1f68d,u+1f691,u+1f694,u+1f698,u+1f6ad,u+1f6b2,u+1f6b9-1f6ba,u+1f6bc,u+1f6c6-1f6cf,u+1f6d3-1f6d7,u+1f6e0-1f6ea,u+1f6f0-1f6f3,u+1f6f7-1f6fc,u+1f7??,u+1f800-1f80b,u+1f810-1f847,u+1f850-1f859,u+1f860-1f887,u+1f890-1f8ad,u+1f8b0-1f8bb,u+1f8c0-1f8c1,u+1f900-1f90b,u+1f93b,u+1f946,u+1f984,u+1f996,u+1f9e9,u+1fa00-1fa6f,u+1fa70-1fa7c,u+1fa80-1fa89,u+1fa8f-1fac6,u+1face-1fadc,u+1fadf-1fae9,u+1faf0-1faf8,u+1fb??}@font-face{font-family:Lora;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d38f9d4e0f4772b-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Lora;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/08aedeceaf1dcd57-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Lora;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/5c0c2bcbaa4149ca-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Lora;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/03b436aa846269de-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Lora;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/0086f8992871c45b-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Lora;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/ab00a911ac2adf48-s.woff2) format("woff2");unicode-range:u+0302-0303,u+0305,u+0307-0308,u+0310,u+0312,u+0315,u+031a,u+0326-0327,u+032c,u+032f-0330,u+0332-0333,u+0338,u+033a,u+0346,u+034d,u+0391-03a1,u+03a3-03a9,u+03b1-03c9,u+03d1,u+03d5-03d6,u+03f0-03f1,u+03f4-03f5,u+2016-2017,u+2034-2038,u+203c,u+2040,u+2043,u+2047,u+2050,u+2057,u+205f,u+2070-2071,u+2074-208e,u+2090-209c,u+20d0-20dc,u+20e1,u+20e5-20ef,u+2100-2112,u+2114-2115,u+2117-2121,u+2123-214f,u+2190,u+2192,u+2194-21ae,u+21b0-21e5,u+21f1-21f2,u+21f4-2211,u+2213-2214,u+2216-22ff,u+2308-230b,u+2310,u+2319,u+231c-2321,u+2336-237a,u+237c,u+2395,u+239b-23b7,u+23d0,u+23dc-23e1,u+2474-2475,u+25af,u+25b3,u+25b7,u+25bd,u+25c1,u+25ca,u+25cc,u+25fb,u+266d-266f,u+27c0-27ff,u+2900-2aff,u+2b0e-2b11,u+2b30-2b4c,u+2bfe,u+3030,u+ff5b,u+ff5d,u+1d400-1d7ff,u+1ee??}@font-face{font-family:Lora;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/36008747766f78c6-s.woff2) format("woff2");unicode-range:u+0001-000c,u+000e-001f,u+007f-009f,u+20dd-20e0,u+20e2-20e4,u+2150-218f,u+2190,u+2192,u+2194-2199,u+21af,u+21e6-21f0,u+21f3,u+2218-2219,u+2299,u+22c4-22c6,u+2300-243f,u+2440-244a,u+2460-24ff,u+25a0-27bf,u+28??,u+2921-2922,u+2981,u+29bf,u+29eb,u+2b??,u+4dc0-4dff,u+fff9-fffb,u+10140-1018e,u+10190-1019c,u+101a0,u+101d0-101fd,u+102e0-102fb,u+10e60-10e7e,u+1d2c0-1d2d3,u+1d2e0-1d37f,u+1f0??,u+1f100-1f1ad,u+1f1e6-1f1ff,u+1f30d-1f30f,u+1f315,u+1f31c,u+1f31e,u+1f320-1f32c,u+1f336,u+1f378,u+1f37d,u+1f382,u+1f393-1f39f,u+1f3a7-1f3a8,u+1f3ac-1f3af,u+1f3c2,u+1f3c4-1f3c6,u+1f3ca-1f3ce,u+1f3d4-1f3e0,u+1f3ed,u+1f3f1-1f3f3,u+1f3f5-1f3f7,u+1f408,u+1f415,u+1f41f,u+1f426,u+1f43f,u+1f441-1f442,u+1f444,u+1f446-1f449,u+1f44c-1f44e,u+1f453,u+1f46a,u+1f47d,u+1f4a3,u+1f4b0,u+1f4b3,u+1f4b9,u+1f4bb,u+1f4bf,u+1f4c8-1f4cb,u+1f4d6,u+1f4da,u+1f4df,u+1f4e3-1f4e6,u+1f4ea-1f4ed,u+1f4f7,u+1f4f9-1f4fb,u+1f4fd-1f4fe,u+1f503,u+1f507-1f50b,u+1f50d,u+1f512-1f513,u+1f53e-1f54a,u+1f54f-1f5fa,u+1f610,u+1f650-1f67f,u+1f687,u+1f68d,u+1f691,u+1f694,u+1f698,u+1f6ad,u+1f6b2,u+1f6b9-1f6ba,u+1f6bc,u+1f6c6-1f6cf,u+1f6d3-1f6d7,u+1f6e0-1f6ea,u+1f6f0-1f6f3,u+1f6f7-1f6fc,u+1f7??,u+1f800-1f80b,u+1f810-1f847,u+1f850-1f859,u+1f860-1f887,u+1f890-1f8ad,u+1f8b0-1f8bb,u+1f8c0-1f8c1,u+1f900-1f90b,u+1f93b,u+1f946,u+1f984,u+1f996,u+1f9e9,u+1fa00-1fa6f,u+1fa70-1fa7c,u+1fa80-1fa89,u+1fa8f-1fac6,u+1face-1fadc,u+1fadf-1fae9,u+1faf0-1faf8,u+1fb??}@font-face{font-family:Lora;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/6d38f9d4e0f4772b-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Lora;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/08aedeceaf1dcd57-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Lora;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/5c0c2bcbaa4149ca-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Lora Fallback;src:local("Times New Roman");ascent-override:87.33%;descent-override:23.78%;line-gap-override:0.00%;size-adjust:115.20%}.__className_b36659{font-family:Lora,Lora Fallback;font-style:normal}.__variable_b36659{--font-display:"Lora","Lora Fallback"}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/88da59c891d37117-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/1e377d93cbdd6b44-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/36d711d427a06e51-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/f1f7cdf240180e28-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/55fbdf033607a0e1-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/b6a6f0b43d027304-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Source Sans\ 3;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/9cf9c6e84ed13b5e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/88da59c891d37117-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/1e377d93cbdd6b44-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/36d711d427a06e51-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/f1f7cdf240180e28-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/55fbdf033607a0e1-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/b6a6f0b43d027304-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Source Sans\ 3;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/9cf9c6e84ed13b5e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/88da59c891d37117-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/1e377d93cbdd6b44-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/36d711d427a06e51-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/f1f7cdf240180e28-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/55fbdf033607a0e1-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Source Sans\ 3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/b6a6f0b43d027304-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Source Sans\ 3;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/9cf9c6e84ed13b5e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Source Sans\ 3 Fallback;src:local("Arial");ascent-override:109.21%;descent-override:42.66%;line-gap-override:0.00%;size-adjust:93.76%}.__className_caee08{font-family:Source Sans\ 3,Source Sans\ 3 Fallback;font-style:normal}.__variable_caee08{--font-body:"Source Sans 3","Source Sans 3 Fallback"}:root{--paper:#f4f1ec;--paper-elevated:#ffffff;--ink:#1a1814;--ink-muted:#5c574f;--ink-faint:#8a847a;--line:#e8e4dc;--line-strong:#d4cfc4;--accent:#1d4f4f;--accent-soft:#e8f0ef;--sidebar:#ece8e2;--container:1120px;--gutter:clamp(24px,4vw,48px);--sidebar-w:280px;--radius:2px;--sticky-contact-bar:64px;--sidebar-sticky-top:calc(var(--sticky-contact-bar) + 18px)}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--font-body),ui-sans-serif,system-ui,sans-serif;font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}.skip-link{position:absolute;left:-9999px;top:0;padding:8px 16px;background:var(--accent);color:#fff;z-index:100}.skip-link:focus{left:16px;top:16px}.page{min-height:100vh;display:flex;flex-direction:column}.shell{width:100%}.container{width:100%;max-width:calc(var(--container) + var(--gutter) * 2);margin:0 auto;padding-inline:var(--gutter)}.shell-header{background:var(--paper-elevated);padding-block:56px 48px}.shell-contact{width:100%;background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.contact-bar-sentinel{width:100%;height:0;pointer-events:none}.contact-bar-anchor{position:relative;width:100%}.contact-bar-track{width:100%;background:var(--paper-elevated);border-bottom:1px solid transparent;transition:border-color .25s ease}.contact-bar-track.is-pinned{position:fixed;top:0;left:0;right:0;z-index:50;border-bottom-color:var(--line)}.contact-bar-inner{display:flex;align-items:center;gap:0 16px;padding-block:16px;min-height:64px}.contact-bar-actions{flex-shrink:0;margin-left:auto}.contact-bar-avatar-wrap{flex-shrink:0;overflow:hidden;height:32px}.contact-bar-avatar{width:32px;height:32px;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;background:var(--sidebar)}.contact-bar-avatar img{width:100%;height:100%;object-fit:cover;display:block}.contact-bar-items{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;flex:1 1;min-width:0}.contact-bar-items a,.contact-bar-items span{display:inline-flex;align-items:center;gap:7px;font-size:.875rem;color:var(--ink-muted);white-space:nowrap}.contact-bar-items a:hover{color:var(--accent)}.contact-bar-items svg{flex-shrink:0;opacity:.55}.contact-bar-name{margin:0;flex:1 1;min-width:0;font-family:var(--font-display),Georgia,serif;font-size:1.125rem;font-weight:600;line-height:1.2;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shell-body{flex:1 1;background:var(--paper);padding-block:56px 64px}.shell-footer{background:var(--paper-elevated);border-top:1px solid var(--line);padding-block:24px}.header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:32px}.header-identity{display:grid;grid-template-columns:96px 1fr;grid-gap:28px;gap:28px;align-items:start;flex:1 1;min-width:0}.header-photo{flex-shrink:0;width:96px;height:96px;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;background:var(--sidebar)}.header-photo img{width:100%;height:100%;object-fit:cover;display:block}.header-copy{min-width:0;display:flex;flex-direction:column;gap:14px;align-self:start}.shell-header h1{margin:0;font-family:var(--font-display),Georgia,serif;font-size:clamp(2.5rem,4.5vw,3.5rem);font-weight:400;line-height:1;letter-spacing:-.015em;color:var(--ink)}.header-role{margin:0;font-size:1.125rem;font-weight:500;color:var(--accent);letter-spacing:.01em;line-height:1.4}.header-summary{margin:0;max-width:82ch;color:var(--ink-muted);font-size:1.0625rem;line-height:1.65}.header-actions{flex-shrink:0;display:flex;flex-direction:row;align-items:center;gap:8px}.menu-wrap{position:relative;flex-shrink:0}.btn:focus-visible,.dropdown-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:disabled,.dropdown-item:disabled{opacity:.55;cursor:not-allowed}.dropdown-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:216px;padding:6px;background:var(--paper-elevated);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:0 8px 24px rgba(26,24,20,.1)}.dropdown-item{display:block;width:100%;padding:10px 12px;font-family:inherit;font-size:.875rem;font-weight:500;text-align:left;color:var(--ink);background:transparent;border:none;border-radius:var(--radius);cursor:pointer;transition:background .15s ease,color .15s ease}.dropdown-item:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.dropdown-item-link{display:flex;align-items:center;gap:8px;text-decoration:none}.dropdown-item-static{display:flex;align-items:center;gap:8px;cursor:default;color:var(--ink-muted)}.dropdown-item-static:hover{background:transparent;color:var(--ink-muted)}.dropdown-item-link svg,.dropdown-item-static svg{flex-shrink:0;opacity:.55}.dropdown-divider{height:1px;background:var(--line);margin:6px 0}.dropdown-contact-group,.menu-label-narrow{display:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding-inline:18px;padding-block:0;font-family:inherit;font-size:.875rem;font-weight:600;line-height:1;letter-spacing:.02em;border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--paper-elevated);color:var(--ink);cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease}.btn:hover{color:var(--accent)}.btn-primary,.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#163d3d;border-color:#163d3d;color:#fff}.btn.btn-icon{width:40px;min-width:40px;padding:0;flex-shrink:0}.btn svg{flex-shrink:0;display:block}.btn.btn-icon svg{width:16px;height:16px}.body-grid{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-gap:56px;gap:56px;align-items:start}.sidebar{position:-webkit-sticky;position:sticky;top:var(--sidebar-sticky-top);padding:28px 24px;background:var(--paper-elevated);border:1px solid var(--line);border-radius:var(--radius)}.main{min-width:0}.section{margin-bottom:40px}.section:last-child{margin-bottom:0}.section-label{margin:0 0 16px;font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.section-title{margin:0 0 24px;font-family:var(--font-display),Georgia,serif;font-size:1.5rem;font-weight:400;line-height:1.25;letter-spacing:-.01em;color:var(--ink);padding-bottom:12px;border-bottom:1px solid var(--line)}.stat-list{display:grid;grid-gap:16px;gap:16px;margin:0;padding:0;list-style:none}.stat-list li{padding-bottom:16px;border-bottom:1px solid var(--line)}.stat-list li:last-child{padding-bottom:0;border-bottom:none}.stat-value{display:block;font-family:var(--font-display),Georgia,serif;font-size:1.625rem;font-weight:600;line-height:1.15;color:var(--accent)}.stat-label{display:block;margin-top:6px;font-size:.8125rem;line-height:1.5;color:var(--ink-muted)}.skill-group{margin-bottom:24px}.skill-group:last-child{margin-bottom:0}.skill-group h3{margin:0 0 8px;font-size:.875rem;font-weight:600;color:var(--ink)}.skill-group p{margin:0;font-size:.875rem;line-height:1.55;color:var(--ink-muted)}.experience-list{display:grid;grid-gap:16px;gap:16px}.job{position:relative;padding:24px 28px;background:var(--paper-elevated);border-radius:0}.job-header{display:grid;grid-template-columns:1fr auto;grid-gap:8px 16px;gap:8px 16px;align-items:baseline}.job-dates{grid-column:1/-1;font-size:.8125rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}.job h3,.job-dates{margin:0;font-weight:600}.job h3{font-size:1.0625rem;color:var(--ink)}.job-role{margin:0;font-size:.9375rem;color:var(--accent);font-weight:500}.job-summary{margin:12px 0 0;line-height:1.6}.job ul,.job-summary{font-size:.9375rem;color:var(--ink-muted)}.job ul{margin:14px 0 0;padding-left:1.15em}.job li{margin:8px 0;padding-left:2px}.job li::marker{color:var(--line-strong)}.job-tech{margin-top:14px;font-size:.8125rem;color:var(--ink-faint);line-height:1.5}.job-tech strong{font-weight:600;color:var(--ink-muted)}.project-list{display:grid;grid-gap:24px;gap:24px}.project{padding-bottom:24px;border-bottom:1px solid var(--line)}.project:last-child{padding-bottom:0;border-bottom:none}.project h3{margin:0;font-size:1rem;font-weight:600}.project-meta{margin:4px 0 0;font-size:.875rem;color:var(--accent);font-weight:500}.project p{margin:10px 0 0;font-size:.9375rem;color:var(--ink-muted);line-height:1.6}.highlight-list{margin:0;padding:0;list-style:none;display:grid;grid-gap:12px;gap:12px}.highlight-list li{position:relative;padding-left:14px;font-size:.875rem;line-height:1.55;color:var(--ink-muted)}.highlight-list li:before{content:"";position:absolute;left:0;top:.55em;width:4px;height:4px;border-radius:50%;background:var(--accent)}.highlight-list-main{display:grid;grid-gap:14px;gap:14px}.highlight-list-main li{font-size:.9375rem;line-height:1.6}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.footer-inner p{margin:0;font-size:.8125rem;color:var(--ink-faint)}.footer-links{display:flex;gap:20px}.footer-links a{font-size:.875rem;font-weight:500;color:var(--ink-muted)}@media print{body{background:#fff;font-size:11pt}.shell-body,.shell-footer,.shell-header{padding-block:24px}.contact-bar-actions,.contact-bar-avatar-wrap,.dropdown-menu,.header-actions,.header-contact-btn,.skip-link{display:none}.contact-bar-track{position:static;box-shadow:none!important}.sidebar{position:static;background:#f5f5f5;-webkit-print-color-adjust:exact;print-color-adjust:exact}.job,.section{page-break-inside:avoid;break-inside:avoid}a{color:var(--ink)}}@media (max-width:1099px){.shell-contact.is-contact-narrow:not(.is-contact-revealed){background:transparent;border-top-color:transparent;border-bottom-color:transparent}.header-contact-btn{display:none}.dropdown-contact-group{display:block}.menu-label-wide{display:none}.menu-label-narrow{display:inline}.header-menu-btn{background:var(--accent);border-color:var(--accent);color:#fff}.header-menu-btn:hover{background:#163d3d;border-color:#163d3d;color:#fff}}@media (max-width:960px){.body-grid{grid-template-columns:1fr;gap:40px}.sidebar{position:static}}@media (max-width:768px){.shell-header{padding-block:32px 28px}.contact-bar-inner{padding-block:14px;min-height:56px}.contact-bar-items{gap:10px 18px}.shell-body{padding-block:40px 48px}.header-top{flex-direction:column;align-items:stretch;gap:28px}.header-identity{display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center}.header-photo{width:88px;height:88px}.header-copy{align-items:center;gap:12px;width:100%}.shell-header h1{font-size:clamp(2rem,9vw,2.625rem)}.header-role{font-size:1rem;line-height:1.45;max-width:28ch}.header-summary{font-size:1rem;line-height:1.6;max-width:none}.header-actions{width:100%;flex-direction:column;align-items:stretch;gap:10px}.header-actions .menu-wrap{width:100%}.header-actions .btn{width:100%;min-height:44px;height:auto;padding-block:12px}.sidebar{padding:24px 20px}.job{padding:20px 22px}.job-header{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.job-dates{margin-bottom:2px}}