@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/source-sans-3-cyrillic-ext-400-normal-BwJdxs7r.woff2)format("woff2"),url(/assets/source-sans-3-cyrillic-ext-400-normal-BqOlcezh.woff)format("woff");unicode-range:U+460-52F,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-display:swap;font-weight:400;src:url(/assets/source-sans-3-cyrillic-400-normal-DjhbW-4D.woff2)format("woff2"),url(/assets/source-sans-3-cyrillic-400-normal-DkNBMcYd.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/source-sans-3-greek-ext-400-normal-CpIwTHMM.woff2)format("woff2"),url(/assets/source-sans-3-greek-ext-400-normal-CN4VBqpr.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/source-sans-3-greek-400-normal-DZReXJla.woff2)format("woff2"),url(/assets/source-sans-3-greek-400-normal-DyO2Yfz5.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/source-sans-3-vietnamese-400-normal-CwtaIDr2.woff2)format("woff2"),url(/assets/source-sans-3-vietnamese-400-normal-eMQk7hmk.woff)format("woff");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:"Source Sans 3";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/source-sans-3-latin-ext-400-normal-UNsKFIBq.woff2)format("woff2"),url(/assets/source-sans-3-latin-ext-400-normal-D5P-Ud2J.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/source-sans-3-latin-400-normal-DQi5PRDE.woff2)format("woff2"),url(/assets/source-sans-3-latin-400-normal-RR2C27NP.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:"Source Sans 3";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/source-sans-3-cyrillic-ext-500-normal-D8Dd5jAI.woff2)format("woff2"),url(/assets/source-sans-3-cyrillic-ext-500-normal-BLOQrhpu.woff)format("woff");unicode-range:U+460-52F,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-display:swap;font-weight:500;src:url(/assets/source-sans-3-cyrillic-500-normal-BmnPaoCF.woff2)format("woff2"),url(/assets/source-sans-3-cyrillic-500-normal-C7qwroL1.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/source-sans-3-greek-ext-500-normal-9wgnofA_.woff2)format("woff2"),url(/assets/source-sans-3-greek-ext-500-normal-VGXj8bVn.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/source-sans-3-greek-500-normal-eLQqTu5G.woff2)format("woff2"),url(/assets/source-sans-3-greek-500-normal-DplGkEXg.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/source-sans-3-vietnamese-500-normal-BSXhk166.woff2)format("woff2"),url(/assets/source-sans-3-vietnamese-500-normal-B_7_ZXok.woff)format("woff");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:"Source Sans 3";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/source-sans-3-latin-ext-500-normal-tzH6xoxH.woff2)format("woff2"),url(/assets/source-sans-3-latin-ext-500-normal-CdS-Ceo-.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/source-sans-3-latin-500-normal-DiWS0tcR.woff2)format("woff2"),url(/assets/source-sans-3-latin-500-normal-BHNJO6aI.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:"Source Sans 3";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/source-sans-3-cyrillic-ext-700-normal-BhUSqjb8.woff2)format("woff2"),url(/assets/source-sans-3-cyrillic-ext-700-normal-COA7LiPB.woff)format("woff");unicode-range:U+460-52F,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-display:swap;font-weight:700;src:url(/assets/source-sans-3-cyrillic-700-normal-CIuudVLB.woff2)format("woff2"),url(/assets/source-sans-3-cyrillic-700-normal-D_p3L75o.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/source-sans-3-greek-ext-700-normal-Dd6uIcuy.woff2)format("woff2"),url(/assets/source-sans-3-greek-ext-700-normal-KTP46hTS.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/source-sans-3-greek-700-normal-C8Tp2qRF.woff2)format("woff2"),url(/assets/source-sans-3-greek-700-normal-C-sAg5NG.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/source-sans-3-vietnamese-700-normal-Bgamivog.woff2)format("woff2"),url(/assets/source-sans-3-vietnamese-700-normal-W-J7ohm4.woff)format("woff");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:"Source Sans 3";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/source-sans-3-latin-ext-700-normal-6Xi0A2be.woff2)format("woff2"),url(/assets/source-sans-3-latin-ext-700-normal-C1ecyfgK.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Sans 3";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/source-sans-3-latin-700-normal-CkzU-mV9.woff2)format("woff2"),url(/assets/source-sans-3-latin-700-normal-B-h9tW5h.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:Caveat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/caveat-cyrillic-ext-500-normal-DcrB4vVx.woff2)format("woff2"),url(/assets/caveat-cyrillic-ext-500-normal-DqTXtm5N.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/caveat-cyrillic-500-normal-DpMZbbjM.woff2)format("woff2"),url(/assets/caveat-cyrillic-500-normal-DLSfp5IU.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/caveat-latin-ext-500-normal-jKqJW7bC.woff2)format("woff2"),url(/assets/caveat-latin-ext-500-normal-wUUXxlbS.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:Caveat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/caveat-latin-500-normal-B9SDL8cy.woff2)format("woff2"),url(/assets/caveat-latin-500-normal-Do9veZfZ.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:Caveat;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/caveat-cyrillic-ext-600-normal-DDEJyoof.woff2)format("woff2"),url(/assets/caveat-cyrillic-ext-600-normal-BLVNc-Ct.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/caveat-cyrillic-600-normal-Ba_MyzgW.woff2)format("woff2"),url(/assets/caveat-cyrillic-600-normal-CqH0c_uj.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/caveat-latin-ext-600-normal-DDJRD6ps.woff2)format("woff2"),url(/assets/caveat-latin-ext-600-normal-shBvSnoU.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:Caveat;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/caveat-latin-600-normal-zlTlWIYU.woff2)format("woff2"),url(/assets/caveat-latin-600-normal-DUjB8dgm.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}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page-bg:#fff;--ink:#444741;--ink-soft:#777a73;--pond-green:#183b30;--koi-orange:#d66e38;--font-body:"Source Sans 3", "Helvetica Neue", sans-serif;--font-role:"Caveat", cursive;--pond-width:min(34vw, 620px);--pond-radius:30px;--content-width:min(33vw, 520px);--hero-gap:clamp(56px, 8vh, 72px);--pond-shadow:0 12px 30px #142f2414;--sage:#8a9e7f;--sage-border:#78896d;--forest-ink:#1b2517;--card-border:#e5e7e0}@media (width<=640px){:root{--pond-width:calc(100vw - 40px);--content-width:460px}}:root{font-family:var(--font-body);color:var(--ink);background:var(--page-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{background:var(--page-bg);min-width:320px;min-height:100%}body{min-width:320px;min-height:100dvh;margin:0}button,a{font:inherit}.section-heading{color:var(--forest-ink);letter-spacing:-.01em;text-align:center;margin:0;font-size:clamp(28px,3.2vw,38px);font-weight:700;line-height:1.15}#root{width:100%;min-height:100dvh}::selection{color:var(--ink);background:#dfe9df}.fade-in-section{opacity:0;will-change:opacity;transition:opacity .8s ease-out}.fade-in-section.is-visible{opacity:1}@media (prefers-reduced-motion:reduce){.fade-in-section{opacity:1!important;transition:none!important}}.contact{background:var(--page-bg,#fff);justify-content:center;width:100%;padding:0 20px clamp(64px,10vh,112px);display:flex}.contact__panel{width:var(--pond-width);border-radius:var(--pond-radius,30px);text-align:center;background:radial-gradient(#8a9e7f8c 0%,#8a9e7f40 55%,#0000 80%);border:none;flex-direction:column;align-items:center;gap:18px;max-width:100%;padding:clamp(48px,8vw,76px) clamp(20px,4vw,36px);display:flex}.contact__heading{font-family:var(--font-body);letter-spacing:-.01em;font-size:clamp(28px,2.5vw,32px);font-weight:600}.contact__text{max-width:34ch;color:var(--forest-ink);margin:0;font-size:clamp(16px,1.6vw,19px);line-height:1.6}.contact__links{flex-wrap:wrap;justify-content:center;gap:10px;margin:6px 0 0;padding:0;list-style:none;display:flex}.contact__email,.contact__link{min-height:48px;color:var(--forest-ink);overflow-wrap:anywhere;border-radius:999px;align-items:center;gap:10px;padding:0 20px 0 6px;font-size:15px;font-weight:700;text-decoration:none;transition:background-color .18s,transform .18s,border-color .18s;display:inline-flex}.contact__email{color:#fff;background:var(--forest-ink);border:1px solid var(--forest-ink);margin-top:8px}.contact__email:hover{background:#2a3825;border-color:#2a3825;transform:translateY(-2px)}.contact__link{-webkit-backdrop-filter:blur(6px);background:#ffffff8c;border:1px solid #78896d73}.contact__link:hover{background:#ffffffd9;border-color:#78896db3;transform:translateY(-2px)}.contact__email:focus-visible,.contact__link:focus-visible{outline:2px solid var(--forest-ink);outline-offset:3px}.contact__logo{width:36px;height:36px;color:var(--forest-ink);background:#fff;border-radius:50%;flex:none;place-items:center;display:grid}.contact__logo svg{width:17px;height:17px}@media (width<=640px){.contact__email{max-width:100%;font-size:14px}}@media (prefers-reduced-motion:reduce){.contact__email,.contact__link{transition:none}.contact__email:hover,.contact__link:hover{transform:none}}._page_4q137_1{background:var(--page-bg);justify-content:center;min-height:100dvh;padding:clamp(9rem,27vh,16rem) 24px 48px;display:flex}._hero_4q137_10{flex-direction:column;align-items:center;width:100%;display:flex;position:relative}._navigation_4q137_18{z-index:2;align-items:center;gap:5px;display:flex;position:absolute;top:-72px;left:50%;transform:translate(-50%)}._homeButton_4q137_29{color:#242520;background:#fff;border:0;border-radius:50%;flex:none;place-items:center;width:42px;height:42px;padding:0;text-decoration:none;transition:background-color .18s,transform .18s;display:grid;box-shadow:0 1px 8px #191f1814}._homeButton_4q137_29 svg{stroke-width:2.2px;width:13px;height:13px}._homeButton_4q137_29:hover{background:#f4f4f2;transform:translateY(-1px)}._homeButton_4q137_29:focus-visible{outline:2px solid var(--ink-soft);outline-offset:3px}._pondCaption_4q137_61{color:var(--ink-soft);font-family:var(--font-body);letter-spacing:.005em;text-align:center;max-width:var(--pond-width);margin:16px auto 0;font-size:14px;font-weight:500;line-height:1.5}._introduction_4q137_73{width:min(var(--content-width), var(--pond-width));margin:clamp(38px,5.5vh,52px) auto 0}._copy_4q137_78{color:var(--ink-soft);letter-spacing:.005em;text-align:center;margin:0;font-size:15px;font-weight:400;line-height:1.78}._greeting_4q137_88{margin-bottom:12px}._role_4q137_92{color:var(--ink);font-family:var(--font-role);white-space:nowrap;margin-inline:.12em .18em;font-size:1em;font-weight:600;line-height:1;transition:color .28s,transform .28s;display:inline-block}._role_4q137_92:hover{color:var(--koi-orange);transform:rotate(-2deg)translateY(-1px)}@media (width<=640px){._page_4q137_1{padding:clamp(7.5rem,20vh,11rem) 20px 48px}._navigation_4q137_18{top:-72px}._introduction_4q137_73{width:min(100%,460px);margin:clamp(38px,6vh,54px) auto 0}._copy_4q137_78{font-size:15px;line-height:1.72}._role_4q137_92{font-size:1em}}@media (prefers-reduced-motion:reduce){._role_4q137_92{transition:none}}._pond_1b3o7_1{isolation:isolate;width:var(--pond-width);aspect-ratio:1.57;border-radius:var(--pond-radius);box-shadow:var(--pond-shadow);touch-action:pan-y;background:#244737;position:relative;overflow:hidden}._water_1b3o7_13,._waterTint_1b3o7_14,._fishLayer_1b3o7_15,._ripples_1b3o7_16,._feather_1b3o7_17{position:absolute;inset:0}._water_1b3o7_13{object-fit:cover;object-position:center;filter:saturate(.72)brightness(.68)hue-rotate(14deg);width:100%;height:100%}._waterTint_1b3o7_14{z-index:1;pointer-events:none;mix-blend-mode:multiply;background:radial-gradient(at 48% 44%,#0000 36%,#0d281e3d 100%),#11342521}._fishLayer_1b3o7_15{z-index:2;pointer-events:none;width:100%;height:100%;overflow:hidden}._fishLayer_1b3o7_15 [data-koi]{pointer-events:auto;cursor:pointer;outline:none}._fishLayer_1b3o7_15 [data-koi]:focus,._fishLayer_1b3o7_15 [data-koi]:focus-visible{outline:none}._ripples_1b3o7_16{z-index:3;pointer-events:none;overflow:hidden}._ripple_1b3o7_16{pointer-events:none;transform-origin:50%;border:1px solid #edf8e2cc;border-radius:50%;width:46px;height:46px;margin:-23px 0 0 -23px;position:absolute;box-shadow:0 0 0 4px #d5ecd829,inset 0 0 10px #edf8e238}._feather_1b3o7_17{z-index:4;pointer-events:none;background:linear-gradient(90deg,#fff 0%,#ffffff8c 2%,#0000 5.5% 94.5%,#ffffff8c 98%,#fff 100%),linear-gradient(#fff 0%,#ffffff8c 2%,#0000 6% 94%,#ffffff8c 98%,#fff 100%)}._hoverPill_1b3o7_84{z-index:10;color:var(--forest-ink,#1b2517);font-family:var(--font-body);letter-spacing:.01em;-webkit-backdrop-filter:blur(8px);pointer-events:none;opacity:0;white-space:nowrap;will-change:transform, opacity;background:#fffffff0;border:1px solid #78896d59;border-radius:999px;align-items:center;padding:4px 12px;font-size:12px;font-weight:700;transition:opacity .16s;display:inline-flex;position:absolute;top:0;left:0;transform:translate(-9999px,-9999px);box-shadow:0 4px 14px #142f242e}._hoverPillVisible_1b3o7_111{opacity:1}._emptyNotice_1b3o7_115{z-index:12;color:#fff;font-family:var(--font-body);letter-spacing:.01em;-webkit-backdrop-filter:blur(8px);pointer-events:none;opacity:0;white-space:nowrap;will-change:transform, opacity;background:#183b30e6;border:1px solid #ffffff40;border-radius:999px;align-items:center;padding:6px 14px;font-size:13px;font-weight:600;transition:opacity .28s,transform .28s cubic-bezier(.16,1,.3,1);display:inline-flex;position:absolute;top:0;left:0;transform:translate(-9999px,-9999px);box-shadow:0 6px 20px #00000040}._emptyNoticeVisible_1b3o7_142{opacity:1}@media (width<=640px){._pond_1b3o7_1{border-radius:24px}}.projects{--projects-card-radius:20px;--projects-media-radius:16px;--projects-live:#2fa84f;background:var(--page-bg,#fff);flex-direction:column;align-items:center;gap:36px;width:100%;padding:0 20px clamp(72px,12vh,128px);display:flex}.projects__list{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:28px;width:min(100%,1040px);display:grid}.projects__card{border:1px solid var(--card-border);border-radius:var(--projects-card-radius);background:#fff;flex-direction:column;gap:18px;padding:14px 14px 22px;scroll-margin-top:clamp(40px,10vh,80px);transition:transform .26s,box-shadow .26s,border-color .26s;display:flex;box-shadow:0 8px 24px #1b25170f}.projects__card:hover{transform:translateY(-4px);box-shadow:0 16px 36px #1b25171a}.projects__card--highlighted{border-color:var(--sage);animation:2.4s cubic-bezier(.16,1,.3,1) forwards projectHighlightPulse}@keyframes projectHighlightPulse{0%{transform:translateY(0);box-shadow:0 0 #8a9e7fcc,0 8px 24px #1b25170f}20%{transform:translateY(-6px);box-shadow:0 0 0 6px #8a9e7f8c,0 18px 40px #1b251729}50%{transform:translateY(-4px);box-shadow:0 0 0 4px #8a9e7f59,0 14px 32px #1b25171f}to{transform:translateY(0);box-shadow:0 8px 24px #1b25170f}}.projects__media{aspect-ratio:16/10;border-radius:var(--projects-media-radius);background:#f4f4f2;overflow:hidden}.projects__image{object-fit:cover;object-position:top left;width:100%;height:100%;transition:transform .5s;display:block}.projects__card:hover .projects__image{transform:scale(1.03)}.projects__body{flex-direction:column;flex:auto;gap:14px;padding:0 8px;display:flex}.projects__heading-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.projects__title{color:var(--forest-ink);margin:0;font-size:22px;font-weight:700;line-height:1.2}.projects__live{color:var(--ink-soft);flex:none;align-items:center;gap:7px;font-size:13px;font-weight:500;display:inline-flex}.projects__live-dot{background:var(--projects-live);border-radius:50%;width:8px;height:8px;animation:2.2s ease-out infinite projects-live-pulse;box-shadow:0 0 #2fa84f73}.projects__pitch{color:var(--ink);margin:0;font-size:15px;line-height:1.6}.projects__bullets{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.projects__bullets li{color:var(--ink-soft);padding-left:18px;font-size:14px;line-height:1.5;position:relative}.projects__bullets li:before{content:"";background:var(--sage);border-radius:50%;width:6px;height:6px;position:absolute;top:.55em;left:2px}.projects__chips{flex-wrap:wrap;gap:8px;margin:2px 0 0;padding:0;list-style:none;display:flex}.projects__chip{border:1px solid var(--sage-border);color:var(--forest-ink);background:var(--sage);border-radius:999px;align-items:center;gap:7px;padding:4px 12px 4px 4px;font-size:13px;font-weight:500;line-height:1;display:inline-flex}.projects__chip-logo{background:#fff;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;display:grid}.projects__chip-logo svg{width:12px;height:12px}.projects__actions{flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:4px;display:flex}.projects__button{border:1px solid var(--sage-border);min-height:42px;color:var(--forest-ink);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:14px;font-weight:700;text-decoration:none;transition:background-color .18s,transform .18s;display:inline-flex}.projects__button svg{width:15px;height:15px}.projects__button--filled{background:var(--sage)}.projects__button--filled:hover{background:#7d9271}.projects__button--outline{background:0 0}.projects__button--outline:hover{background:#eef2eb}.projects__button:active{transform:translateY(1px)}.projects__button:focus-visible{outline:2px solid var(--sage-border);outline-offset:3px}@keyframes projects-live-pulse{70%,to{box-shadow:0 0 0 7px #2fa84f00}}@media (width<=860px){.projects__list{grid-template-columns:minmax(0,1fr);width:min(100%,560px)}}@media (width<=640px){.projects{gap:28px}.projects__title{font-size:20px}.projects__actions .projects__button{flex:1 1 0}}@media (prefers-reduced-motion:reduce){.projects__card,.projects__image,.projects__button{transition:none}.projects__card--highlighted{border-color:var(--sage);animation:none;box-shadow:0 0 0 3px #8a9e7f99}.projects__card:hover,.projects__card:hover .projects__image{transform:none}.projects__live-dot{animation:none}}.skills-strip{--skills-bg:#8a9e7f;--skills-border:#78896d;--skills-ink:#1b2517;--skills-width:222px;--skills-height:84px;--skills-gap:14px;--skills-set-width:calc(6 * (var(--skills-width) + var(--skills-gap)));--skills-duration:52s;background:var(--page-bg,#fff);flex-direction:column;align-items:center;gap:28px;width:100%;padding:clamp(64px,10vh,112px) 0;display:flex;overflow:hidden}.skills-strip__heading{font-family:var(--font-body);letter-spacing:-.01em;margin-bottom:20px;padding:0 20px;font-size:clamp(28px,2.5vw,32px);font-weight:600}.skills-strip__defs{width:0;height:0;position:absolute;overflow:hidden}.skills-strip__rows{gap:var(--skills-gap);flex-direction:column;width:100%;display:flex;-webkit-mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}.skills-strip__row{width:100%;overflow:hidden}.skills-strip__track{width:max-content;animation:skills-strip-scroll var(--skills-duration) linear infinite;will-change:transform;display:flex}.skills-strip__track--right{animation-direction:reverse}.skills-strip__track--left{animation-direction:normal}.skills-strip__rows:hover .skills-strip__track,.skills-strip[data-paused=true] .skills-strip__track{animation-play-state:paused}.skills-strip__set{gap:var(--skills-gap);padding:0 var(--skills-gap) 0 0;flex:none;margin:0;list-style:none;display:flex}.skills-strip__skill{flex:0 0 var(--skills-width);width:var(--skills-width);height:var(--skills-height);background:var(--skills-bg);border:none;border-radius:20px;align-items:center;gap:12px;padding:0 12px 0 16px;display:flex;box-shadow:inset 0 0 18px #141e0f26,0 10px 28px -12px #3c503259}.skills-strip__logo{background:#fff;border-radius:50%;flex:none;place-items:center;width:52px;height:52px;display:grid}.skills-strip__icon{width:28px;height:28px}.skills-strip__name{min-width:0;color:var(--skills-ink);white-space:nowrap;font-size:17px;font-weight:700;line-height:1.2}.skills-strip__toggle{border:1px solid var(--skills-border);color:var(--skills-ink);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:8px;padding:8px 16px 8px 12px;font-size:14px;font-weight:500;transition:background-color .18s;display:inline-flex}.skills-strip__toggle svg{width:14px;height:14px}.skills-strip__toggle:hover{background:#eef2eb}.skills-strip__toggle:focus-visible{outline:2px solid var(--skills-border);outline-offset:3px}@keyframes skills-strip-scroll{0%{transform:translate(0,0)}to{transform:translate3d(calc(var(--skills-set-width) * -1), 0, 0)}}@media (prefers-reduced-motion:reduce){.skills-strip__track{will-change:auto;justify-content:center;width:100%;animation:none}.skills-strip__set{flex-wrap:wrap;justify-content:center;padding-right:0}.skills-strip__set[aria-hidden=true],.skills-strip__toggle{display:none}}
