@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-cyrillic-ext-400-normal.g30qAdWV.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-400-normal.Dsrv2Tcn.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-cyrillic-400-normal.DZqxrq2p.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-400-normal.BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-greek-400-normal._efipK4i.woff2) format("woff2"),url(/_astro/ibm-plex-sans-greek-400-normal.D9ESIMu3.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-vietnamese-400-normal.DG4YqDda.woff2) format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-400-normal.fK1oJ5dG.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-ext-400-normal.C5H60-Va.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-400-normal.RBey6euL.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff) format("woff");unicode-range:U+0000-00FF,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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-cyrillic-ext-500-normal.Cs5J6C77.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-500-normal.DB5PtV2g.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-cyrillic-500-normal.CocWQlwt.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-500-normal.ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-greek-500-normal.JMMifIXV.woff2) format("woff2"),url(/_astro/ibm-plex-sans-greek-500-normal.CuWXN6rf.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-vietnamese-500-normal.e4dixQRQ.woff2) format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-500-normal.BEb3_waV.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-ext-500-normal.DakdToA3.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-500-normal.D0aIdm-b.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff) format("woff");unicode-range:U+0000-00FF,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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-cyrillic-ext-600-normal.DUMzJB7m.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-600-normal.Bz0x94Yp.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-cyrillic-600-normal.71GNu3SW.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-600-normal.BGq0mW3O.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-greek-600-normal.DzTrcv_p.woff2) format("woff2"),url(/_astro/ibm-plex-sans-greek-600-normal.D-CqTdkO.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-vietnamese-600-normal.DpPYBSTl.woff2) format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-600-normal.DgdngZtN.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-ext-600-normal.DOrvGEcy.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-600-normal.DIrixKbi.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff) format("woff");unicode-range:U+0000-00FF,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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-700-normal.BmRLXWpJ.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-700-normal.DCQwxkRk.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-sans-cyrillic-700-normal.D_uavGvn.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-700-normal.RFb1v-CK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-sans-greek-700-normal.wyJ6jzdA.woff2) format("woff2"),url(/_astro/ibm-plex-sans-greek-700-normal.CkZN0sRy.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-sans-vietnamese-700-normal.CkEo6LDy.woff2) format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-700-normal.BV5B8Are.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-sans-latin-ext-700-normal.aMgXseD4.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-700-normal.DZH6Xh-4.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-sans-latin-700-normal.Bxkt5Cjx.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-700-normal.Bth3BMcD.woff) format("woff");unicode-range:U+0000-00FF,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:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-cyrillic-ext-400-normal.CxUI4jC_.woff2) format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-ext-400-normal.BcBv-TKp.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-cyrillic-400-normal.CPQ8oqB-.woff2) format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-400-normal.C7IY3oUc.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-vietnamese-400-normal.DGubAMUE.woff2) format("woff2"),url(/_astro/ibm-plex-serif-vietnamese-400-normal.BY9Vij9A.woff) format("woff");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:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-latin-ext-400-normal.CNMooFZX.woff2) format("woff2"),url(/_astro/ibm-plex-serif-latin-ext-400-normal.DwktX9jl.woff) format("woff");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:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-latin-400-normal.BIGslYFI.woff2) format("woff2"),url(/_astro/ibm-plex-serif-latin-400-normal.BB-zNvJB.woff) format("woff");unicode-range:U+0000-00FF,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:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-cyrillic-ext-600-normal.DXSZftVr.woff2) format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-ext-600-normal.CDMeBxaJ.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-cyrillic-600-normal.6oiym5iu.woff2) format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-600-normal.C8YEAlRA.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-vietnamese-600-normal.BBruYZNA.woff2) format("woff2"),url(/_astro/ibm-plex-serif-vietnamese-600-normal.DZRaS25B.woff) format("woff");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:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-latin-ext-600-normal.CU6LeQOd.woff2) format("woff2"),url(/_astro/ibm-plex-serif-latin-ext-600-normal.D1-_Ic5L.woff) format("woff");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:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-latin-600-normal.DAxitmSu.woff2) format("woff2"),url(/_astro/ibm-plex-serif-latin-600-normal.D3rpGdkS.woff) format("woff");unicode-range:U+0000-00FF,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}:root{--bg: #061612;--paper: #0a221c;--ink: #edf7f1;--muted: rgba(218, 234, 226, .72);--line: rgba(147, 213, 190, .16);--accent: #5dd0ad;--accent-strong: #b7f5dd;--accent-soft: rgba(93, 208, 173, .1);--hero-from: #0c2f27;--hero-to: #071a15;--font-body: "IBM Plex Sans", "Segoe UI", sans-serif;--font-display: "IBM Plex Serif", Georgia, serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;color:var(--ink);background:radial-gradient(ellipse 70% 50% at 12% 0%,rgba(17,122,96,.38),transparent 55%),radial-gradient(ellipse 55% 45% at 92% 12%,rgba(6,64,58,.55),transparent 50%),linear-gradient(165deg,#08241d 0%,var(--bg) 42%,#04110e 100%);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}h1,h2,h3,p{margin:0}.site-shell{position:relative;min-height:100vh;padding:clamp(16px,3.5vw,40px)}.resume-card{width:min(1120px,100%);margin:0 auto;border:1px solid var(--line);border-radius:4px;background:linear-gradient(180deg,rgba(93,208,173,.04),transparent 18%),var(--paper);box-shadow:0 18px 48px #00000059}.hero{border-bottom:1px solid var(--line);background:linear-gradient(115deg,rgba(17,122,96,.28),transparent 48%),linear-gradient(180deg,var(--hero-from),var(--hero-to))}.topbar,.hero-grid,.content-grid{padding-inline:clamp(20px,4.5vw,52px)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:22px}.nav-links,.actions{display:flex;align-items:center;gap:8px}.nav-links{gap:18px}.nav-links a{padding:4px 0;color:var(--muted);font-size:13px;font-weight:500;border-bottom:1px solid transparent;transition:color .16s ease,border-color .16s ease}.nav-links a:hover{color:var(--ink);border-bottom-color:var(--accent)}.language-link{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border:1px solid var(--line);border-radius:2px;color:var(--ink);background:transparent;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .16s ease,border-color .16s ease}.language-link:hover{background:var(--accent-soft);border-color:#5dd0ad52}.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,300px);gap:clamp(28px,5vw,56px);padding-top:clamp(36px,6vw,64px);padding-bottom:clamp(36px,5vw,56px)}.hero-copy{max-width:680px}.eyebrow{display:inline-flex;align-items:center;gap:10px;margin-bottom:16px;color:var(--accent);font-size:13px;font-weight:600;letter-spacing:.01em}.eyebrow:before{width:28px;height:1px;background:var(--accent);content:""}.hero h1{font-family:var(--font-display);font-size:clamp(42px,7vw,72px);font-weight:600;line-height:1.02;letter-spacing:-.03em}.role{margin-top:14px;color:var(--accent-strong);font-size:clamp(17px,2vw,20px);font-weight:600}.summary{max-width:560px;margin-top:18px;color:var(--muted);font-size:clamp(15px,1.5vw,17px);line-height:1.65}.hero-highlights{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.hero-highlights span{padding:6px 10px;border:1px solid var(--line);border-radius:2px;color:var(--muted);background:#edf7f10a;font-size:12px;font-weight:600}.contact-panel{align-self:start}.portrait{width:100%;height:clamp(260px,32vw,360px);margin-bottom:16px;overflow:hidden;border:1px solid rgba(147,213,190,.24);border-radius:2px;background-color:#04110e;background-image:url(/images/denis-merenok.png);background-repeat:no-repeat;background-size:cover;background-position:center 18%}.location,.contact-list a{display:flex;align-items:center;gap:8px}.location{margin-bottom:10px;color:var(--ink);font-size:13px;font-weight:600}.contact-list{display:grid;border-top:1px solid var(--line)}.contact-list a{padding:11px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:13px;font-weight:500;transition:color .16s ease}.contact-list a:hover{color:var(--ink)}.contact-list a svg{color:var(--accent);flex-shrink:0}.content-grid{display:grid;grid-template-columns:280px minmax(0,1fr);gap:clamp(28px,4vw,48px);padding-top:40px;padding-bottom:48px}.side-column,.main-column,.section-block{display:grid;align-content:start;gap:16px}.side-column{gap:28px}.main-column{gap:32px}.section-title{display:flex;align-items:center;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--line);color:var(--ink)}.section-title h2{font-family:var(--font-display);font-size:14px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.section-title svg{color:var(--accent);flex-shrink:0}.prose-card{display:grid;gap:12px}.prose-card p,.case-header p,.feature-grid p,.frontend-grid p,.timeline-item p,.project-card p,.award-list p{color:var(--muted);font-size:14.5px;line-height:1.7}.prose-card p:first-child{color:var(--accent-strong);font-size:15.5px}.stack-groups{display:grid;gap:16px}.stack-group{display:grid;gap:8px}.stack-group__label{margin:0;color:#edf7f180;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.skill-cloud,.tech-strip{display:flex;flex-wrap:wrap;gap:6px}.skill-cloud span,.tech-strip span{padding:5px 9px;border:1px solid var(--line);border-radius:2px;font-size:11px;font-weight:600}.skill-cloud span{color:var(--muted);background:#edf7f10a}.compact-list{display:grid;gap:0;border-top:1px solid var(--line)}.compact-row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}.compact-row strong{font-weight:600}.compact-row span{color:var(--muted)}.case-card{display:grid;gap:20px;padding:22px 0 0;border-top:2px solid var(--accent)}.case-header span{display:block;margin-bottom:8px;color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.case-header h2{margin-bottom:10px;font-family:var(--font-display);font-size:clamp(24px,3.5vw,34px);font-weight:600;line-height:1.15;letter-spacing:-.02em}.metric-grid,.feature-grid,.frontend-grid,.project-grid{display:grid;gap:10px}.metric-grid{grid-template-columns:repeat(3,1fr)}.metric-grid div{min-height:78px;padding:14px;border-radius:2px;color:#062018;background:linear-gradient(145deg,#b7f5dd,#5dd0ad);font-size:12.5px;font-weight:600;line-height:1.45}.feature-grid{grid-template-columns:repeat(2,1fr)}.feature-grid p{position:relative;padding-left:16px}.feature-grid p:before{position:absolute;top:.75em;left:0;width:8px;height:1px;background:var(--accent);content:""}.tech-strip span{color:var(--accent-strong);background:var(--accent-soft);border-color:transparent}.frontend-grid{grid-template-columns:repeat(3,1fr)}.frontend-grid p{padding:16px 0;border-top:1px solid var(--line)}.timeline{display:grid;gap:0;border-top:1px solid var(--line)}.timeline-item{position:relative;padding:16px 0 16px 18px;border-bottom:1px solid var(--line)}.timeline-item:before{position:absolute;top:22px;left:0;width:8px;height:1px;background:var(--accent);content:""}.timeline.small .timeline-item{padding:12px 0 12px 16px}.timeline-item time{display:block;margin-bottom:6px;color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.timeline-item h3,.project-card h3,.award-list h3{margin-bottom:4px;font-family:var(--font-display);font-size:17px;font-weight:600;line-height:1.25;letter-spacing:-.015em}.timeline-item h3 a{display:inline-flex;align-items:center;gap:4px;transition:color .16s ease}.timeline-item h3 a:hover{color:var(--accent)}.timeline-item--current{background:var(--accent-soft);margin-inline:-12px;padding-inline:12px 12px;padding-left:30px;border-bottom-color:transparent}.timeline-item--current:before{left:12px}.timeline-item strong,.project-card span{display:block;margin-bottom:6px;color:var(--accent-strong);font-size:13px;font-weight:600}.experience-bullets{margin:10px 0 0;padding-left:18px;color:var(--muted);font-size:14.5px;line-height:1.65}.experience-bullets li+li{margin-top:6px}.experience-bullets li::marker{color:var(--accent)}.project-grid{grid-template-columns:1fr;gap:0;border-top:1px solid var(--line)}.project-card{display:grid;grid-template-columns:minmax(160px,.85fr) minmax(0,1.4fr);gap:16px 24px;align-items:start;padding:18px 0;border-bottom:1px solid var(--line)}.project-card a{grid-column:2;display:inline-flex;align-items:center;gap:4px;color:var(--accent);font-size:13px;font-weight:600;word-break:break-word}.project-card a:hover{text-decoration:underline;text-underline-offset:3px}.project-card--current{background:var(--accent-soft);margin-inline:-12px;padding-inline:12px}.award-list{display:grid;gap:0;border-top:1px solid var(--line)}.award-list article{padding:12px 0;border-bottom:1px solid var(--line)}@media(max-width:980px){.site-shell{padding:12px}.topbar{align-items:flex-start;flex-wrap:wrap}.nav-links{order:3;width:100%;overflow-x:auto;gap:14px;padding-bottom:2px}.hero-grid,.content-grid{grid-template-columns:1fr}.contact-panel{max-width:360px}.metric-grid,.feature-grid,.frontend-grid,.project-card{grid-template-columns:1fr}.project-card a{grid-column:auto}}@media(prefers-reduced-motion:no-preference){.resume-card{animation:pageIn .48s ease both}@keyframes pageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}}@media(max-width:620px){.topbar,.hero-grid,.content-grid{padding-inline:16px}.actions{width:100%}.language-link{flex:1;justify-content:center}.hero h1{font-size:clamp(36px,12vw,52px)}.timeline-item--current{margin-inline:0;padding-left:18px}.timeline-item--current:before{left:0}}@media print{@page{margin:12mm}body{background:#061612}.site-shell{min-height:auto;padding:0}.nav-links,.actions{display:none}.resume-card{width:100%;border:0;box-shadow:none}.hero{background:linear-gradient(180deg,var(--hero-from),var(--hero-to));print-color-adjust:exact;-webkit-print-color-adjust:exact}.topbar{padding-top:12px}.hero-grid{grid-template-columns:1fr 220px;gap:24px;padding-top:24px;padding-bottom:24px}.hero h1{font-size:42px}.summary,.role{font-size:14px}.content-grid{grid-template-columns:220px 1fr;gap:20px;padding-top:24px;padding-bottom:0}.case-card,.prose-card,.frontend-grid p,.timeline-item,.project-card,.award-list article{break-inside:avoid}.experience-bullets{color:var(--muted)}.project-grid,.frontend-grid,.feature-grid,.metric-grid{grid-template-columns:1fr}}
