@font-face{font-family:EB Garamond Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/eb-garamond-cyrillic-ext-wght-normal-ByugaZpy.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:EB Garamond Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/eb-garamond-cyrillic-wght-normal-DZVSGMRt.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:EB Garamond Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/eb-garamond-greek-ext-wght-normal-jFu40_Kw.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:EB Garamond Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/eb-garamond-greek-wght-normal-Dm53BPoz.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:EB Garamond Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/eb-garamond-vietnamese-wght-normal-B-YjCn1Q.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:EB Garamond Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/eb-garamond-latin-ext-wght-normal-Bgo24x86.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:EB Garamond Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/eb-garamond-latin-wght-normal-BUNBP5ar.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2)format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2)format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2)format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2)format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2)format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2)format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2)format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2)format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2)format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2)format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2)format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2)format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2)format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2)format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2)format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2)format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2)format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2)format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2)format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2)format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.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{--bg:#050810;--bg-elev:#0c1322;--glass-bg:#0e14206b;--glass-bg-modal:#0e1420f0;--glass-border:#ffffff5c;--glass-highlight:#ffffff0a;--sky-top:#02030a;--sky-mid:#060a18;--sky-bottom:#0a1428;--sky-glow-1:#46287866;--sky-glow-2:#143c8257;--sky-glow-1-pos:30% 110%;--sky-glow-2-pos:80% 110%;--celestial-x:50%;--celestial-y:12%;--scroll-progress:0;--orb-color:#b4c8e6;--orb-color-soft:#b4c8e61f;--border:#5a6478;--fg:#e6e9ef;--fg-muted:#8a93a1;--accent:#7ab7ff;--accent-rgb:122, 183, 255;--accent-soft:#7ab7ff1f;--pulse:#7ab7ffd9;--pulse-soft:#7ab7ff73;--pulse-glow:#7ab7ff73;--halt:#c62828;--halt-fg:#fff;--tl-blue:122, 183, 255;--tl-mint:168, 230, 207;--tl-amber:255, 200, 120;--tl-violet:214, 168, 255;--tl-pink:244, 114, 182;--tl-green:34, 197, 94;--tl-green-fg:#4ade80;--tl-cyan:110, 220, 235;--tl-coral:255, 168, 156;--tl-steel:178, 195, 220;--tl-blue-fg:var(--tl-blue);--tl-mint-fg:var(--tl-mint);--tl-amber-fg:var(--tl-amber);--tl-violet-fg:var(--tl-violet);--tl-pink-fg:var(--tl-pink);--tl-cyan-fg:var(--tl-cyan);--tl-coral-fg:var(--tl-coral);--tl-steel-fg:var(--tl-steel);--modal-overlay:#020408b8;--modal-bg:var(--bg-elev);--modal-pad-x:20px;--modal-pad-y:16px;--modal-section-gap:16px;--modal-stack-gap:8px;--shadow:0 12px 40px #00000080;--radius:10px;--max-width:860px;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Roboto Mono", monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:root[data-theme=light]{--bg:#ebeef3;--bg-elev:#f6f8fb;--glass-bg:#ffffff94;--glass-bg-modal:#fffffff5;--glass-border:#141c2880;--glass-highlight:#ffffffa6;--sky-top:#d2d8e1;--sky-mid:#e0e5ec;--sky-bottom:#eef2f6;--sky-glow-1:#b4c3d780;--sky-glow-2:#e1dce673;--sky-glow-2-pos:80% -10%;--orb-color:#e8f0fa;--orb-color-soft:#b4c8e129;--border:#7e889a;--fg:#11161e;--fg-muted:#4b5462;--accent:#1c2230;--accent-rgb:28, 34, 48;--accent-soft:#1c223014;--pulse:var(--border);--pulse-soft:var(--border);--pulse-glow:transparent;--halt:#c62828;--halt-fg:#fff;--tl-green-fg:#15803d;--tl-blue-fg:28, 78, 174;--tl-mint-fg:14, 110, 86;--tl-amber-fg:144, 84, 18;--tl-violet-fg:96, 56, 168;--tl-pink-fg:158, 39, 110;--tl-cyan-fg:14, 100, 130;--tl-coral-fg:168, 56, 36;--tl-steel-fg:60, 80, 120;--modal-overlay:#141a246b;--modal-bg:var(--bg-elev);--shadow:0 12px 40px #0b0d101f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{color:var(--fg);background-color:var(--sky-top);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;padding:0}html{min-height:100lvh}body{background-color:var(--sky-top);min-height:100lvh;position:relative;overflow-x:hidden}body:before{content:"";pointer-events:none;background-image:radial-gradient(ellipse 120% 70% at var(--sky-glow-1-pos), var(--sky-glow-1), transparent 60%), radial-gradient(ellipse 90% 60% at var(--sky-glow-2-pos), var(--sky-glow-2), transparent 60%), linear-gradient(to bottom, var(--sky-top) 0%, var(--sky-mid) 55%, var(--sky-bottom) 100%);background-size:100% 100%;position:fixed;inset:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}code{font-family:var(--font-mono);background:var(--glass-highlight);border:1px solid var(--border);white-space:nowrap;border-radius:4px;padding:.05em .4em;font-size:.88em}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.celestial-sky{z-index:0;pointer-events:none;contain:strict;isolation:isolate;position:fixed;inset:4px 0;overflow:hidden;transform:translateZ(0)}.celestial{left:var(--celestial-x);top:var(--celestial-y);width:14vmin;height:14vmin;position:absolute;transform:translate(-50%,-50%)}.celestial.orb{width:32vmin;height:32vmin}.orb-halo{background:radial-gradient(circle,#dce6f512 0%,#cddaeb0a 24%,#becde105 48%,#aabcd202 70%,#0000 92%);border-radius:50%;position:absolute;inset:-380%}.orb-body{background:radial-gradient(circle at 44% 40%,#ffffff17 0%,#f5f8fc0f 22%,#dce4f008 48%,#becde103 72%,#0000 100%);border-radius:50%;position:absolute;inset:-80%}.atmosphere{pointer-events:none;background:linear-gradient(to bottom, rgba(2, 4, 12, calc(var(--scroll-progress,0) * .55)) 0%, rgba(2, 4, 12, calc(var(--scroll-progress,0) * .35)) 55%, transparent 100%);position:absolute;inset:0}.horizon{pointer-events:none;filter:blur(28px);height:70vh;transform:translate3d(0, calc(var(--scroll-progress,0) * 32vh), 0);will-change:transform;background:radial-gradient(70% 55% at 50% 100%,#8caae652 0%,#5a78c82e 28%,#3250a014 55%,#0000 80%),radial-gradient(90% 65% at 50% 110%,#46328c38 0%,#28286e1a 40%,#0000 75%);position:absolute;bottom:-22vh;left:-10%;right:-10%}.starfield{pointer-events:none;position:absolute;inset:0}.star{background:hsl(var(--star-hue), 70%, 92%);clip-path:polygon(50% 0%,55% 42%,100% 50%,55% 58%,50% 100%,45% 58%,0% 50%,45% 42%);opacity:var(--star-alpha);position:absolute;transform:translate(-50%,-50%)}.orbfield{pointer-events:none;position:absolute;inset:0}.ambient-orb{background:radial-gradient(circle at 42% 36%, rgba(255, 255, 255, calc(var(--orb-alpha,.16) * 1.1)) 0%, rgba(232, 240, 250, calc(var(--orb-alpha,.16) * .85)) 18%, rgba(210, 222, 238, calc(var(--orb-alpha,.16) * .55)) 40%, rgba(190, 205, 225, calc(var(--orb-alpha,.16) * .28)) 62%, rgba(170, 188, 210, calc(var(--orb-alpha,.16) * .1)) 82%, transparent 100%);border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.cloudfield{pointer-events:none;position:absolute;inset:0}.cloud{background:radial-gradient(ellipse, rgba(255, 255, 255, calc(var(--cloud-alpha,.4) * .78)) 0%, rgba(255, 255, 255, calc(var(--cloud-alpha,.4) * .5)) 28%, rgba(255, 255, 255, calc(var(--cloud-alpha,.4) * .22)) 58%, rgba(255, 255, 255, calc(var(--cloud-alpha,.4) * .06)) 82%, #fff0 100%);border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.glass-reflect{border-radius:inherit;pointer-events:none;-webkit-mask-composite:xor;padding:1.5px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.glass-reflect:before{content:"";border-radius:inherit;pointer-events:none;background:radial-gradient(480px circle at var(--reflect-1-x,50%) var(--reflect-1-y,50%), var(--reflect-1-color,transparent) 0%, transparent 70%);position:absolute;inset:0}.skip-link{z-index:100;color:var(--bg);background:var(--accent);border-radius:6px;padding:8px 16px;font-weight:600;text-decoration:none;transition:transform .12s;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus,.skip-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;transform:translateY(0)}#main-content:focus{outline:none}.page{z-index:1;min-height:100vh;padding:0 0 64px;position:relative}.page:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(ellipse 120% 70% at var(--sky-glow-1-pos), var(--sky-glow-1), transparent 60%), radial-gradient(ellipse 90% 60% at var(--sky-glow-2-pos), var(--sky-glow-2), transparent 60%), linear-gradient(to bottom, var(--sky-top) 0%, var(--sky-mid) 55%, var(--sky-bottom) 100%);position:absolute;inset:0}.page-glow{pointer-events:none;z-index:0;width:min(1100px,100vw);height:120vh;max-height:1500px;position:absolute;top:0;right:0}.page-glow:before{content:"";pointer-events:none;background: radial-gradient(ellipse 50% 35% at 82% 10%, var(--accent-soft) 0%, transparent 60%), radial-gradient(ellipse 60% 42% at 76% 16%, var(--accent-soft) 0%, transparent 70%),  radial-gradient(ellipse 55% 35% at 38% 48%, var(--accent-soft) 0%, transparent 75%);position:absolute;inset:0}.container{max-width:var(--max-width);margin:0 auto;padding:0 24px}.footer{z-index:1;border-top:1px solid var(--border);color:var(--fg-muted);margin-top:48px;padding-top:24px;font-size:.85rem;position:relative}.hero{border-bottom:1px solid var(--glass-border);background:var(--glass-bg);-webkit-backdrop-filter:blur(14px)saturate(150%);margin-bottom:48px;padding:36px 0 28px;position:relative}.hero-inner{max-width:var(--max-width);z-index:1;margin:0 auto;padding:0 24px;position:relative}@media (width<=520px){.hero{padding:28px 0 22px}.hero-inner{padding:0 20px}}.hero-eyebrow{color:var(--fg-muted);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:8px;margin:0 0 10px;font-size:.78rem;font-weight:600;display:inline-flex}.hero-eyebrow-dot{background:var(--accent);width:6px;height:6px;box-shadow:0 0 0 3px var(--accent-soft);border-radius:50%;display:inline-block}.hero-name{letter-spacing:-.02em;margin:0 0 4px;font-size:clamp(2rem,5vw,3rem);line-height:1.1}.hero-title{font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-muted);margin:0 0 18px;font-size:.85rem}.hero-summary{appearance:none;font:inherit;color:var(--fg);text-align:left;cursor:pointer;background:0 0;border:0;border-bottom:1px dashed #0000;flex-wrap:wrap;align-items:baseline;gap:8px;max-width:640px;margin:0 0 20px;padding:0;font-size:1.1rem;line-height:1.5;transition:color .12s,border-color .12s;display:inline-flex}.hero-summary-text{display:inline}.hero-long-summary{display:none}.hero-summary-hint{color:var(--accent);white-space:nowrap;opacity:.8;font-size:.85rem;font-weight:500;transition:opacity .12s}@media (hover:hover){.hero-summary:hover{border-bottom-color:var(--accent-soft)}.hero-summary:hover .hero-summary-hint{opacity:1}}.hero-summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}.hero-meta{color:var(--fg-muted);border-top:1px solid var(--glass-border);flex-wrap:wrap;align-items:center;gap:16px;padding-top:18px;font-size:.95rem;display:flex}.hero-meta-group{flex-wrap:wrap;align-items:center;gap:10px;display:flex}@media (width>=640px){.hero-meta-controls{margin-left:auto}}.hero-link-pill{height:32px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent);border-radius:999px;align-items:center;padding:0 14px;font-size:.9rem;font-weight:600;display:inline-flex}@media (hover:hover){.hero-link-pill:hover{border-color:var(--accent);text-decoration:none}}.hero-link-pill:focus-visible,.hero-meta a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:999px}.hero-download,.hero-timeline-btn{appearance:none;height:32px;font:inherit;color:var(--accent);border:1px solid var(--accent);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-size:.9rem;font-weight:600;text-decoration:none;transition:background .12s,border-color .12s;display:inline-flex}.hero-download svg{width:14px;height:14px;display:block}.hero-download:hover,.hero-timeline-btn:hover{background:var(--accent-soft);border-color:var(--accent);text-decoration:none}.hero-download:focus-visible,.hero-timeline-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.hero-search-btn{appearance:none;width:32px;height:32px;font:inherit;color:var(--accent);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:background .12s,border-color .12s,color .12s;display:inline-flex}@media (hover:hover){.hero-search-btn:hover{background:var(--accent-soft);border-color:var(--accent)}}.hero-search-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.hero-search-btn svg{width:16px;height:16px;display:block}.section{margin-bottom:56px}.section-title{letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);margin:0 0 20px;font-size:.85rem;font-weight:600}.section-collapsible.is-collapsed{margin-bottom:24px}.section-collapsible.is-collapsed .section-title{margin-bottom:0}.section-toggle{appearance:none;min-height:24px;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;margin:-2px -6px;padding:2px 6px;display:inline-flex}.section-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:2px}@media (hover:hover){.section-toggle:hover{color:var(--fg)}.section-toggle:hover .section-toggle-chevron{color:var(--accent)}}.section-toggle-chevron{color:var(--fg-muted);flex:none;transition:transform .12s,color .12s;transform:rotate(0)}.section-collapsible.is-collapsed .section-toggle-chevron{transform:rotate(-90deg)}.card-glyph-bar{width:36px;color:rgb(var(--cat-fg,var(--cat-rgb)));background:rgba(var(--cat-rgb), .16);border-right:1px solid rgba(var(--cat-rgb), .45);border-radius:var(--radius) 0 0 var(--radius);pointer-events:none;justify-content:center;align-items:flex-start;padding-top:16px;display:flex;position:absolute;inset:0 auto 0 0}:root[data-theme=light] .card-glyph-bar{background:rgba(var(--cat-rgb), .22)}.is-active>.card-glyph-bar{background:rgba(var(--cat-rgb), .32);border-right-color:rgb(var(--cat-rgb))}:root[data-theme=light] .is-active>.card-glyph-bar{background:rgba(var(--cat-rgb), .4)}.category-glyph{display:block}.section-title-glyph{width:18px;height:18px;color:rgb(var(--cat-fg,var(--cat-rgb,var(--tl-blue-fg))));vertical-align:-3px;justify-content:center;align-items:center;margin-right:4px;display:inline-flex}@media print{.card-glyph-bar,.section-title-glyph{display:none}}.focus-list{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.focus-list li{display:flex}.focus-item-btn{appearance:none;width:100%;font:inherit;color:var(--fg);text-align:left;cursor:pointer;border:1px solid var(--pulse-soft);border-radius:var(--radius);background:var(--glass-bg);-webkit-backdrop-filter:blur(14px)saturate(150%);box-shadow:0 0 0 1px var(--pulse-glow);flex-direction:column;gap:10px;padding:18px 20px 16px;transition:border-color .12s,background .12s,box-shadow .12s,transform .12s;display:flex;position:relative}@media (hover:hover){.focus-item-btn:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--pulse-glow)}}.focus-item-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.focus-item-head{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.focus-glyph-wrap{width:28px;height:28px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-soft);border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.focus-glyph{display:block}.focus-area{letter-spacing:-.005em;flex:auto;min-width:0;font-size:1.05rem;font-weight:600}.focus-skill-count{letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);white-space:nowrap;border-radius:999px;flex:none;align-items:center;padding:2px 9px;font-size:.7rem;font-weight:600;display:inline-flex}.focus-lede{color:var(--fg);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.9rem;line-height:1.5;display:-webkit-box;overflow:hidden}.focus-meta{color:var(--fg-muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:.8rem;display:inline-flex}.focus-meta-sep{color:var(--fg-muted);opacity:.6}.focus-since{color:var(--fg-muted)}.focus-duration{color:var(--accent)}.skill-modal-head.focus-modal-head{background:linear-gradient(180deg, rgba(var(--accent-rgb), .18), rgba(var(--accent-rgb), .06));border-bottom-color:rgba(var(--accent-rgb), .45)}:root[data-theme=light] .skill-modal-head.focus-modal-head{background:linear-gradient(180deg, rgba(var(--accent-rgb), .22), rgba(var(--accent-rgb), .08))}.focus-modal-glyph{width:36px;height:36px;color:var(--accent);background:rgba(var(--accent-rgb), .16);border:1px solid rgba(var(--accent-rgb), .45);border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}:root[data-theme=light] .focus-modal-glyph{background:rgba(var(--accent-rgb), .22)}.focus-modal-lede{color:var(--fg);border-left:2px solid var(--accent);background:var(--accent-soft);border-radius:0 8px 8px 0;margin:0;padding:12px 14px;font-size:1rem;font-weight:500;line-height:1.55}.languages-list{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.languages-list>li{display:flex}button.language-item{appearance:none;width:100%;font:inherit;color:var(--fg);text-align:left;cursor:pointer;border:1px solid var(--glass-border);border-radius:var(--radius);background:var(--glass-bg);-webkit-backdrop-filter:blur(14px)saturate(150%);grid-template-columns:auto 1fr auto auto;align-items:center;gap:12px;padding:10px 14px;transition:border-color .12s,background .12s,color .12s;display:grid}@media (hover:hover){button.language-item:hover{border-color:rgb(var(--tl-cyan-fg));background:rgba(var(--tl-cyan), .1)}}button.language-item:focus-visible{outline:2px solid rgb(var(--tl-cyan-fg));outline-offset:2px}.language-flag{flex:none;justify-content:center;align-items:center;display:inline-flex}.flag-icon{outline:1px solid rgba(var(--accent-rgb), .35);outline-offset:0;border-radius:2px;display:block}.language-name{min-width:0;font-weight:500}.language-meter{flex:none;align-items:center;gap:3px;display:inline-flex}.language-meter-pip{background:rgba(var(--tl-cyan), .18);border:1px solid rgba(var(--tl-cyan), .45);border-radius:50%;width:6px;height:6px}.language-meter-pip.is-on{background:rgb(var(--tl-cyan-fg));border-color:rgb(var(--tl-cyan-fg))}.language-level{color:var(--fg-muted);white-space:nowrap;font-size:.85rem}.language-modal{--cat-rgb:var(--tl-cyan);--cat-fg:var(--tl-cyan-fg)}.language-modal-head{background:linear-gradient(180deg, rgba(var(--cat-rgb), .18), rgba(var(--cat-rgb), .06));border-bottom-color:rgba(var(--cat-rgb), .45)}:root[data-theme=light] .language-modal-head{background:linear-gradient(180deg, rgba(var(--cat-rgb), .22), rgba(var(--cat-rgb), .08))}.language-modal-flag{background:rgba(var(--cat-rgb), .16);border:1px solid rgba(var(--cat-rgb), .45);border-radius:8px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;padding:4px 6px;display:inline-flex}:root[data-theme=light] .language-modal-flag{background:rgba(var(--cat-rgb), .22)}.language-scale{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.language-scale-row{border:1px solid var(--glass-border);border-radius:var(--radius);opacity:.65;background:#ffffff05;padding:10px 12px;transition:opacity .12s}:root[data-theme=light] .language-scale-row{background:#141c2805}.language-scale-row.is-current{opacity:1;border-color:rgba(var(--cat-rgb), .6);background:rgba(var(--cat-rgb), .08)}:root[data-theme=light] .language-scale-row.is-current{background:rgba(var(--cat-rgb), .12)}.language-scale-row-head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.language-scale-label{color:var(--fg);font-size:.95rem;font-weight:600}.language-scale-row.is-current .language-scale-label{color:rgb(var(--cat-fg))}.language-scale-step{font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-muted);font-variant-numeric:tabular-nums;font-size:.75rem;font-weight:600}.language-scale-row.is-current .language-scale-step{color:rgb(var(--cat-fg))}.language-scale-bar{background:rgba(var(--cat-rgb), .12);border-radius:999px;height:6px;margin-bottom:8px;position:relative;overflow:hidden}.language-scale-bar-fill{border-radius:inherit;background:rgba(var(--cat-rgb), .45);height:100%;display:block}.language-scale-row.is-current .language-scale-bar-fill{background:rgb(var(--cat-fg))}.language-scale-description{color:var(--fg-muted);margin:0;font-size:.85rem;line-height:1.5}.language-scale-row.is-current .language-scale-description{color:var(--fg)}@media print{.language-modal,.language-modal-head,.language-modal-flag,.language-meter,.language-flag{display:none}}.projects{gap:16px;display:grid}.project{--cat-rgb:var(--tl-violet);--cat-fg:var(--tl-violet-fg);border:1px solid rgba(var(--cat-rgb), .45);border-radius:var(--radius);background:var(--glass-bg);-webkit-backdrop-filter:blur(14px)saturate(150%);cursor:pointer;min-width:0;padding:20px 20px 20px 56px;transition:border-color .12s,box-shadow .12s,background .12s;position:relative}@media (hover:hover){.project:hover{border-color:rgb(var(--cat-rgb))}}.project:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.project-head{margin-bottom:8px}.project-head h3{font-size:1.15rem;font-family:var(--font-mono);flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;margin:0 0 2px;display:flex}.project-name-btn{appearance:none;min-width:0;font:inherit;font-family:var(--font-mono);color:var(--accent);cursor:pointer;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;margin:0;padding:0;overflow:hidden}@media (hover:hover){.project-name-btn:hover{text-decoration:underline}}.project-name-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.project-oss-badge{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:rgb(var(--cat-fg,var(--cat-rgb)));background:rgba(var(--cat-rgb), .16);border-top-right-radius:var(--radius);border-bottom-left-radius:var(--radius);pointer-events:none;border:0;padding:3px 9px;font-size:.7rem;font-weight:500;line-height:1.4;position:absolute;top:-1px;right:-1px}:root[data-theme=light] .project-oss-badge{background:rgba(var(--cat-rgb), .22)}.project:has(.project-oss-badge) .project-head h3{padding-right:96px}.project-dates{color:var(--fg-muted);margin:0 0 4px;font-size:.9rem}.project-tagline{color:var(--fg-muted);margin:0;font-size:.95rem}.project-date{appearance:none;min-height:24px;font:inherit;color:var(--fg);cursor:help;background:0 0;border:1px dashed #0000;border-radius:999px;align-items:center;margin:0;padding:4px 10px;transition:color .12s,background .12s,border-color .12s;display:inline-flex;position:relative}.project-date>time{display:inline-block}.project-date:hover,.project-date:focus-visible{background:var(--accent-soft);border-color:var(--glass-border);color:var(--fg)}.project-date:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.project-date-sep{color:var(--fg-muted)}.project-date-tooltip{font-family:var(--font-mono);white-space:nowrap;color:var(--fg);background:var(--bg-elev);border:1px solid var(--glass-border);opacity:0;pointer-events:none;z-index:1;border-radius:6px;padding:4px 8px;font-size:.75rem;line-height:1.2;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)translateY(2px);box-shadow:0 4px 12px #00000040}.project-date:hover .project-date-tooltip,.project-date:focus .project-date-tooltip,.project-date:focus-visible .project-date-tooltip{opacity:1;transform:translate(-50%)translateY(0)}.project-date[data-tooltip-dismissed=true] .project-date-tooltip{opacity:0;transform:translate(-50%)translateY(2px)}@media (prefers-reduced-motion:reduce){.project-date-tooltip{transition:none}}.project-stack{flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.project-stack li{display:inline-flex}.project-stack-btn{appearance:none;min-height:24px;font:inherit;font-family:var(--font-mono);color:var(--accent);background:var(--accent-soft);cursor:pointer;border:1px solid #0000;border-radius:999px;padding:3px 10px;font-size:.75rem;line-height:1.4;transition:color .12s,border-color .12s,background .12s}@media (hover:hover){.project-stack-btn:hover{border-color:var(--accent);color:var(--accent)}}.project-stack-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.project-stack-btn-unused{color:var(--fg-muted);border-color:var(--accent-soft);background:0 0}.timeline{gap:20px;margin:0;padding:0;list-style:none;display:grid}.timeline-item{--cat-rgb:var(--tl-blue);--cat-fg:var(--tl-blue-fg);border:1px solid rgba(var(--cat-rgb), .45);border-radius:var(--radius);background:var(--glass-bg);-webkit-backdrop-filter:blur(14px)saturate(150%);cursor:pointer;padding:20px 20px 20px 56px;transition:border-color .12s,box-shadow .12s,background .12s;position:relative}@media (hover:hover){.timeline-item:hover{border-color:rgb(var(--cat-rgb))}}.active-badge{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:rgb(var(--cat-fg,var(--cat-rgb)));background:rgba(var(--cat-rgb), .16);border-top-right-radius:var(--radius);border-bottom-left-radius:var(--radius);pointer-events:none;border:0;padding:3px 9px;font-size:.7rem;font-weight:500;line-height:1.4;position:absolute;top:-1px;right:-1px}:root[data-theme=light] .active-badge{background:rgba(var(--cat-rgb), .22)}.assignment-item>.active-badge{top:0;right:0}.timeline-item.is-active>.timeline-body>.timeline-title,.assignment-item.is-active>.assignment-body>.assignment-title{padding-right:84px}.promotion-arrow{color:var(--accent);vertical-align:middle;margin-right:6px;display:inline-block;transform:translateY(-1px)}.role-chain{border-left:1px solid var(--pulse-soft);gap:4px;margin:0 0 10px;padding:6px 0 6px 14px;list-style:none;display:grid}.role-chain-item{color:var(--fg-muted);grid-template-columns:auto 1fr;align-items:start;column-gap:6px;font-size:.9rem;line-height:1.5;display:grid}.role-chain-content{flex-wrap:wrap;align-items:baseline;gap:2px 10px;min-width:0;display:flex}.role-chain-item .role{font-family:var(--font-mono);color:var(--fg);font-weight:500}.role-chain-item .role-chain-meta{color:var(--fg-muted);font-size:.85rem}.role-chain-item .promotion-arrow,.role-chain-item .role-start-icon{margin-top:calc(.75em - 9px);margin-right:0;display:block;transform:none}.role-start-icon{color:var(--accent);opacity:.7;display:inline-block}.timeline-meta{color:var(--fg-muted);flex-wrap:wrap;align-items:center;gap:8px 12px;margin:6px 0 8px;font-size:.9rem;display:flex}.timeline-engagement{color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-soft);border-radius:999px;padding:2px 10px;font-size:.75rem;line-height:1.4}.timeline-body h3,.timeline-title{margin:0 0 2px;font-size:1.05rem;font-weight:600}.timeline-body h3 .role,.timeline-title .role{font-family:var(--font-mono)}.timeline-role-btn{appearance:none;font:inherit;font-weight:inherit;color:var(--accent);cursor:pointer;text-align:left;line-height:inherit;background:0 0;border:0;margin:0;padding:0}@media (hover:hover){.timeline-role-btn:hover{text-decoration:underline}}.timeline-role-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.timeline-body .company{color:var(--fg-muted);font-weight:400}.company{align-items:center;gap:4px;display:inline-flex}.company-btn{appearance:none;font:inherit;font-weight:inherit;color:inherit;cursor:pointer;line-height:inherit;background:0 0;border:0;border-bottom:1px dotted;border-radius:0;padding:0;transition:color .12s}.company-btn:hover{color:var(--accent)}.company-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.company-discontinued{opacity:.7}.timeline-body p{color:var(--fg-muted);margin:0;font-size:.95rem}.entry-notes{border-left:2px solid var(--accent-soft);background:var(--accent-soft);color:var(--fg);white-space:pre-line;border-radius:0 6px 6px 0;align-items:flex-start;gap:8px;margin:10px 0 0;padding:8px 12px;font-size:.9rem;line-height:1.5;display:flex}.notes-icon{color:var(--accent);flex-shrink:0;margin-top:3px}.assignments{margin-top:12px}.assignments>summary{cursor:pointer;min-height:24px;color:var(--accent);background:var(--accent-soft);-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;padding:4px 12px;font-size:.8rem;line-height:1.4;list-style:none;display:inline-flex}.assignments>summary::-webkit-details-marker{display:none}.assignments>summary:before{content:"▸";margin-right:6px;display:inline-block}.assignments[open]>summary:before{content:"▾"}.assignments-list{gap:14px;margin:12px 0 4px 4px;padding:0 0 0 18px;list-style:none;display:grid;position:relative}.assignment-item{cursor:pointer;position:relative}.assignment-item.is-active>.assignment-body{border-left:2px solid rgb(var(--cat-rgb));padding-left:10px}.assignments-list .assignment-item:before{content:"";background:var(--fg-muted);opacity:.7;border-radius:2px;width:10px;height:2px;position:absolute;top:10px;left:-18px}.assignments-list .assignment-item:not(:last-child):after{content:"";background:var(--fg-muted);opacity:.55;border-radius:2px;width:2px;position:absolute;top:10px;bottom:-24px;left:-18px}.assignment-meta{color:var(--fg-muted);flex-wrap:wrap;align-items:center;gap:6px 12px;margin:5px 0 6px;font-size:.85rem;display:flex}.assignment-body h4,.assignment-title{margin:0 0 2px;font-size:1rem;font-weight:600}.assignment-body h4 .role,.assignment-title .role{font-family:var(--font-mono)}.assignment-body .company{color:var(--fg-muted);font-weight:400}.assignment-body p{color:var(--fg-muted);margin:0;font-size:.9rem}.education-list{gap:16px;margin:0;padding:0;list-style:none;display:grid}#education .education-list>li{--cat-rgb:var(--tl-mint);--cat-fg:var(--tl-mint-fg)}#courses .education-list>li{--cat-rgb:var(--tl-amber);--cat-fg:var(--tl-amber-fg)}.education-list>li{border:1px solid rgba(var(--cat-rgb), .45);border-radius:var(--radius);background:var(--glass-bg);-webkit-backdrop-filter:blur(14px)saturate(150%);min-width:0;padding:20px 20px 20px 56px;transition:border-color .12s,background .12s;position:relative}@media (hover:hover){.education-list>li:has(.education-program-btn:hover){border-color:rgb(var(--cat-rgb))}}.education-head{flex-direction:column;gap:2px;margin-bottom:8px;display:flex}.education-head h3{margin:0;font-size:1rem;font-weight:600}.education-head span{color:var(--fg-muted);font-size:.9rem}.education-list p{color:var(--fg-muted);margin:0;font-size:.95rem;line-height:1.8}.education-credits{color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-soft);vertical-align:baseline;border-radius:999px;padding:2px 10px;font-size:.75rem;line-height:1.4;display:inline-block}.skills{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;display:grid}.skills-group h3{color:var(--fg);margin:0 0 10px;font-size:.9rem;font-weight:600}.skills-group-title{align-items:center;gap:8px;display:inline-flex}.skills-group-glyph{width:22px;height:22px;color:rgb(var(--cat-fg,var(--cat-rgb,var(--accent-rgb))));background:rgba(var(--cat-rgb,var(--accent-rgb)), .16);border:1px solid rgba(var(--cat-rgb,var(--accent-rgb)), .45);border-radius:6px;justify-content:center;align-items:center;display:inline-flex}:root[data-theme=light] .skills-group-glyph{background:rgba(var(--cat-rgb,var(--accent-rgb)), .22)}.skill-group-glyph{display:block}.skills-group>ul{flex-wrap:wrap;gap:6px;margin:0;padding:0 0 0 30px;list-style:none;display:flex}.skills-group>ul>li{display:inline-flex}.skill-pill{font-family:var(--font-mono);color:var(--fg);background:#ffffff0f;border:1px solid #0000;border-radius:999px;padding:3px 10px;font-size:.8rem}:root[data-theme=light] .skill-pill{background:#141c280f}.skill-pill-empty,.skill-pill-personal{color:var(--fg-muted)}.skill-personal-badge{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border-radius:999px;align-items:center;padding:1px 8px;font-size:.7rem;font-weight:500;display:inline-flex}button.skill-pill-btn{appearance:none;min-height:24px;font:inherit;font-family:var(--font-mono);cursor:pointer;align-items:center;gap:6px;font-size:.8rem;line-height:1.3;transition:color .12s,border-color .12s,background .12s;display:inline-flex}@media (hover:hover){button.skill-pill-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.skills-group[data-group] button.skill-pill-btn:hover{color:rgb(var(--cat-fg,var(--cat-rgb)));border-color:rgba(var(--cat-rgb), .6);background:rgba(var(--cat-rgb), .16)}}button.skill-pill-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skills-group[data-group] button.skill-pill-btn:focus-visible{outline-color:rgb(var(--cat-fg,var(--cat-rgb)))}.skill-usage-count{min-width:18px;color:var(--accent);background:var(--accent-soft);border-radius:999px;justify-content:center;align-items:center;padding:0 6px;font-size:.75rem;font-weight:600;display:inline-flex}.skills-group[data-group] .skill-usage-count{color:rgb(var(--cat-fg,var(--cat-rgb)));background:rgba(var(--cat-rgb), .18)}.entry-stack,.entry-skills{flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.entry-stack+.entry-skills{margin-top:6px}.entry-stack li,.entry-skills li{display:inline-flex}.entry-stack-btn,.entry-skill-btn{appearance:none;min-height:24px;font:inherit;font-family:var(--font-mono);color:var(--accent);background:var(--accent-soft);cursor:pointer;border:1px solid #0000;border-radius:999px;padding:3px 10px;font-size:.75rem;line-height:1.4;transition:color .12s,border-color .12s,background .12s}.entry-skill-btn{color:var(--fg-muted);background:#ffffff0d;border-color:#0000}:root[data-theme=light] .entry-skill-btn{background:#141c280d}@media (hover:hover){.entry-stack-btn:hover,.entry-skill-btn:hover{border-color:var(--accent);color:var(--accent)}}.entry-stack-btn:focus-visible,.entry-skill-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.entry-stack-btn-unused{color:var(--fg-muted);border-color:var(--accent-soft);background:0 0}.theme-toggle{border:1px solid var(--border);background:0 0;border-radius:999px;align-items:center;gap:4px;padding:2px;display:inline-flex}.theme-toggle-btn{appearance:none;width:26px;height:26px;color:var(--fg-muted);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:color .12s,box-shadow .12s;display:inline-flex}.theme-toggle-btn:hover{color:var(--accent)}.theme-toggle-btn[aria-pressed=true]{color:var(--accent);box-shadow:0 0 0 1.5px var(--accent);cursor:default}.theme-toggle-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-toggle-btn svg{width:14px;height:14px;display:block}.lang-toggle{border:1px solid var(--border);background:0 0;border-radius:999px;align-items:center;gap:4px;padding:2px;display:inline-flex}.lang-toggle-btn{appearance:none;cursor:pointer;filter:grayscale();background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;transition:filter .12s,box-shadow .12s,transform .12s;display:inline-flex}.lang-toggle-btn:hover{filter:grayscale(.4)}.lang-toggle-btn[aria-pressed=true]{filter:grayscale(0);box-shadow:0 0 0 1.5px var(--accent)}.lang-toggle-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lang-toggle-btn svg{border-radius:2px;width:auto;height:13px;display:block}.theme-toggle-compact,.lang-toggle-compact{appearance:none;width:32px;height:32px;color:var(--accent);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:color .12s,border-color .12s,background .12s;display:inline-flex}.theme-toggle-compact:hover,.lang-toggle-compact:hover{background:var(--accent-soft);border-color:var(--accent)}.theme-toggle-compact:focus-visible,.lang-toggle-compact:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-toggle-compact svg{width:14px;height:14px;display:block}.lang-toggle-compact svg{border-radius:2px;width:auto;height:12px;display:block}@media (width<=480px){.theme-toggle-compact,.lang-toggle-compact{width:28px;height:28px}}.floating-controls{z-index:40;background:var(--glass-bg);-webkit-backdrop-filter:blur(14px)saturate(150%);border:1px solid var(--glass-border);box-shadow:var(--shadow);opacity:0;visibility:hidden;pointer-events:none;border-radius:999px;align-items:center;gap:8px;padding:6px 8px;transition:opacity .28s ease-out,transform .28s ease-out,visibility 0s linear .28s;display:flex;position:fixed;top:16px;right:16px;transform:translateY(-8px)}.floating-controls.is-scrolled{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .28s ease-out,transform .28s ease-out,visibility linear;transform:translateY(0)}.floating-controls-search{appearance:none;width:32px;height:32px;font:inherit;color:var(--accent);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0;transition:background .12s,border-color .12s,color .12s;display:inline-flex}@media (hover:hover){.floating-controls-search:hover{background:var(--accent-soft);border-color:var(--accent)}}.floating-controls-search:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.floating-controls-search svg{width:14px;height:14px;display:block}.floating-controls-timeline{appearance:none;width:32px;height:32px;font:inherit;color:var(--accent);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:background .12s,border-color .12s;display:inline-flex}@media (hover:hover){.floating-controls-timeline:hover{background:var(--accent-soft);border-color:var(--accent)}}.floating-controls-timeline:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.floating-controls-timeline svg{width:14px;height:14px;display:block}@media (width<=480px){.floating-controls{gap:6px;padding:5px 7px;top:12px;right:12px}.floating-controls-search,.floating-controls-timeline{width:28px;height:28px}}@media print{.floating-controls{display:none!important}}.search-modal-overlay{z-index:60;background:var(--modal-overlay);place-items:start center;padding:64px 24px 24px;display:grid;position:fixed;inset:0}.search-modal-overlay--inert{background:0 0}@media (hover:hover) and (pointer:fine){.search-modal-overlay--inert{display:none}}.search-modal{background:var(--modal-bg);border:1px solid var(--glass-border);border-radius:var(--radius);width:100%;max-width:560px;max-height:min(640px,100dvh - 96px);box-shadow:var(--shadow);color:var(--fg);flex-direction:column;display:flex;overflow:hidden}.search-modal-scroll{overscroll-behavior:contain;flex-direction:column;flex:auto;min-height:0;display:flex;overflow-y:auto}.search-modal-head{border-bottom:1px solid var(--glass-border);background:var(--glass-highlight);align-items:center;gap:10px;padding:10px 14px;display:flex}.search-modal-field{background:var(--bg);border:1px solid var(--border);border-radius:999px;flex:auto;align-items:center;gap:8px;min-width:0;padding:4px 12px;transition:border-color .12s,background .12s;display:flex}.search-modal-field:focus-within{border-color:var(--accent)}.search-modal-icon{color:var(--accent);flex:none}.search-modal-input{appearance:none;min-width:0;font:inherit;color:var(--fg);caret-color:var(--accent);background:0 0;border:none;flex:auto;padding:8px 0;font-size:1rem}.search-modal-input::placeholder{color:var(--fg-muted)}.search-modal-input:focus{outline:none}.search-modal-input::-webkit-search-cancel-button{appearance:none;background:var(--fg-muted);cursor:pointer;width:18px;height:18px;-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill-rule=\"evenodd\"><path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z\"/></svg>") 50%/contain no-repeat;mask:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill-rule=\"evenodd\"><path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z\"/></svg>") 50%/contain no-repeat}.search-modal-close{appearance:none;min-width:32px;min-height:32px;font:inherit;color:var(--fg);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:0 0;flex:none;justify-content:center;align-items:center;padding:4px 12px;font-weight:700;line-height:1.2;display:inline-flex}@media (hover:hover){.search-modal-close:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}}.search-modal-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.search-modal-body{flex-direction:column;padding:12px 14px 16px;display:flex}.search-empty-hint{color:var(--fg-muted);margin:12px 8px;font-size:.9rem;line-height:1.5}.search-results{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.search-result{display:flex}.search-result-button{appearance:none;width:100%;font:inherit;text-align:left;color:var(--fg);background:var(--bg);border:1px solid var(--border);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:8px;flex-direction:column;align-items:flex-start;gap:3px;padding:8px 12px;transition:border-color .12s,background .12s,color .12s;display:flex}@media (hover:hover){.search-result-button:hover{border-color:var(--accent);background:var(--accent-soft)}}.search-result-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.search-result-row{align-items:baseline;gap:8px;width:100%;display:flex}.search-result-kind{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-soft);border-radius:999px;flex:none;padding:2px 8px;font-size:.65rem;font-weight:600;line-height:1.2}.search-result-title{overflow-wrap:anywhere;flex:auto;font-size:.95rem;font-weight:600;line-height:1.3}.search-result-secondary{color:var(--fg-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.8rem;line-height:1.4;display:-webkit-box;overflow:hidden}@media (width<=520px){.search-modal-overlay{padding:56px 12px 12px}.search-modal{max-height:calc(100dvh - 80px)}}@media (pointer:coarse){html.search-open .page,html.search-open .floating-controls{visibility:hidden}}@media print{.search-modal-overlay{display:none!important}}.timeline-vis-page{z-index:1;height:100svh;color:var(--fg);grid-template-rows:auto 1fr;display:grid;position:relative}.timeline-vis-body{min-width:0;min-height:0;display:flex;overflow:hidden}.timeline-vis-labels{background:var(--sky-top);border-right:1px solid var(--border);z-index:6;flex:0 0 136px;position:relative;overflow:hidden}.timeline-vis-labels-inner{will-change:transform;width:100%;position:relative}.timeline-vis-track-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;text-align:left;color:var(--fg-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:flex-start;gap:8px;margin:0;padding:16px 0 0;font-size:.75rem;font-weight:600;transition:color .12s,background-color .12s;display:flex;position:absolute;left:20px;right:16px}.timeline-vis-track-label:hover,.timeline-vis-track-label:focus-visible{color:var(--fg);background-color:var(--accent-soft)}.timeline-vis-track-label:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.timeline-vis-track-icon{color:var(--fg-muted);flex:none}.timeline-vis-track-label-text{min-width:0}@media (width<=640px){.timeline-vis-labels{flex-basis:44px}.timeline-vis-track-label{justify-content:center;gap:0;left:0;right:0}.timeline-vis-track-label-text{display:none}}.timeline-vis-toolbar{padding:calc(20px + env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) 12px max(20px, env(safe-area-inset-left));border-bottom:1px solid var(--border);background:var(--sky-top);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.timeline-vis-title{flex-direction:column;gap:2px;display:flex}.timeline-vis-title strong{letter-spacing:.02em;font-size:.95rem}.timeline-vis-hint{color:var(--fg-muted);font-size:.75rem}.timeline-vis-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.timeline-vis-zoom{border:1px solid var(--border);border-radius:999px;align-items:center;gap:4px;padding:2px;display:inline-flex}.timeline-vis-scale{text-align:center;font-variant-numeric:tabular-nums;min-width:44px;color:var(--fg-muted);padding:0 6px;font-size:.85rem}.timeline-vis-btn{appearance:none;min-width:32px;min-height:32px;font:inherit;color:var(--fg);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:4px 12px;font-size:.85rem;line-height:1.2;display:inline-flex}.timeline-vis-btn-icon{justify-content:center;align-items:center;min-width:32px;min-height:32px;padding:4px 10px;display:inline-flex}.timeline-vis-btn:hover{border-color:var(--accent);color:var(--accent)}.timeline-vis-zoom .timeline-vis-btn{border-color:#0000}.timeline-vis-viewport{touch-action:pan-x pan-y;overscroll-behavior:none;background:radial-gradient(circle at 20% 0%, rgba(var(--tl-blue), .06), transparent 40%), var(--sky-top);flex:1 1 0;height:100%;position:relative;overflow:auto}.timeline-vis-content{position:relative}.timeline-vis-axis{border-bottom:1px solid var(--border);background:var(--sky-top);z-index:5;position:sticky;top:0}.timeline-vis-tick{color:var(--fg-muted);font-family:var(--font-mono);pointer-events:none;border-left:1px solid var(--border);padding-top:8px;padding-left:10px;font-size:.75rem;position:absolute;top:0;bottom:0}.timeline-vis-tick-year{color:var(--fg);border-left-color:var(--fg-muted);font-weight:600}.timeline-vis-tick-month{opacity:.7;font-size:.7rem}.timeline-vis-tick-label{display:inline-block}.timeline-vis-tracks{position:absolute}.timeline-vis-gridline{background:var(--border);pointer-events:none;opacity:.4;width:1px;position:absolute}.timeline-vis-band{position:absolute;overflow:hidden}.timeline-vis-item{--tl-rgb:var(--tl-blue);font:inherit;font-family:var(--font-mono);color:var(--fg);background:var(--accent-soft);border:1px solid rgba(var(--tl-rgb), .35);border-radius:var(--radius);cursor:pointer;text-align:left;align-items:center;padding:10px 12px;font-size:.8rem;transition:transform .12s,border-color .12s,background .12s;display:flex;position:absolute;overflow:hidden}.timeline-vis-item:hover{border-color:rgba(var(--tl-rgb), .75);background:rgba(var(--tl-rgb), .32);z-index:3}.timeline-vis-item:focus-visible{outline:2px solid rgb(var(--tl-rgb));outline-offset:2px;z-index:5}.timeline-vis-item.is-selected{border-color:rgba(var(--tl-rgb), .75);background:rgba(var(--tl-rgb), .4);box-shadow:0 0 0 2px rgba(var(--tl-rgb), .45);z-index:4}.timeline-vis-item.is-highlighted{border-color:rgba(var(--tl-rgb), .9);background:rgba(var(--tl-rgb), .4);z-index:4;animation:.9s ease-out 3 tl-highlight-pulse}@keyframes tl-highlight-pulse{0%{box-shadow:0 0 0 0 rgba(var(--tl-rgb), .7)}70%{box-shadow:0 0 0 12px rgba(var(--tl-rgb), 0)}to{box-shadow:0 0 0 0 rgba(var(--tl-rgb), 0)}}@media (prefers-reduced-motion:reduce){.timeline-vis-item.is-highlighted{box-shadow:0 0 0 2px rgba(var(--tl-rgb), .7);animation:none}}.timeline-vis-experience{--tl-rgb:var(--tl-blue);background:rgba(var(--tl-blue), .22);border-color:rgba(var(--tl-blue), .45)}.timeline-vis-assignment{--tl-rgb:var(--tl-mint);background:rgba(var(--tl-mint), .18);border-color:rgba(var(--tl-mint), .45)}.timeline-vis-education{--tl-rgb:var(--tl-amber);background:rgba(var(--tl-amber), .18);border-color:rgba(var(--tl-amber), .45)}.timeline-vis-course{--tl-rgb:var(--tl-violet);background:rgba(var(--tl-violet), .18);border-color:rgba(var(--tl-violet), .45)}.timeline-vis-sideProject{--tl-rgb:var(--tl-pink);background:rgba(var(--tl-pink), .18);border-color:rgba(var(--tl-pink), .45)}.timeline-vis-github{background:0 0;border:none;border-radius:0;padding:0;overflow:hidden}.timeline-vis-github:hover{background:0 0;border:none}.timeline-vis-github.is-selected{box-shadow:0 0 0 2px rgba(var(--tl-green), .55);background:0 0;border:none}.timeline-vis-gh-cell{pointer-events:none;position:absolute;top:0;bottom:0}.timeline-vis-item.is-ongoing{border-style:dashed}.timeline-vis-promotion-marker{opacity:.55;pointer-events:none;background:currentColor;width:1px;position:absolute;top:4px;bottom:4px;transform:translate(-.5px)}.timeline-vis-experience .timeline-vis-promotion-marker{color:rgb(var(--tl-blue))}.timeline-vis-assignment .timeline-vis-promotion-marker{color:rgb(var(--tl-mint))}.timeline-vis-item-label{flex-direction:column;gap:1px;min-width:0;line-height:1.3;display:flex}.timeline-vis-item.has-roles{padding:0}.timeline-vis-item-segment{align-items:center;gap:4px;min-width:0;padding:10px 12px;display:flex;position:absolute;top:0;bottom:0;overflow:hidden}.timeline-vis-item-segment.is-promoted{padding-left:6px}.timeline-vis-item-segment-label{flex-direction:column;gap:1px;min-width:0;line-height:1.3;display:flex}.timeline-vis-promo-arrow{color:var(--fg-muted);flex:none;font-size:.8rem;line-height:1.3}.timeline-vis-item-title{white-space:nowrap;text-overflow:clip;font-weight:600;overflow:hidden}.timeline-vis-item-sub{color:var(--fg-muted);white-space:nowrap;text-overflow:clip;font-size:.7rem;overflow:hidden}.timeline-vis-details{background:var(--modal-bg);border:1px solid var(--glass-border);border-radius:var(--radius);width:min(360px,100vw - 32px);height:60vh;max-height:60vh;box-shadow:var(--shadow);z-index:10;align-items:stretch;display:flex;position:absolute;bottom:16px;right:16px;overflow:hidden}.timeline-vis-details-body{min-width:0;padding:var(--modal-pad-y) var(--modal-pad-x);gap:var(--modal-stack-gap);flex-direction:column;flex:auto;display:flex;overflow:auto}.timeline-vis-details-side{color:var(--fg-muted);cursor:pointer;background:0 0;border:0;flex:0 0 36px;justify-content:center;align-items:center;margin:0;padding:0;font-size:1.6rem;line-height:1;transition:background-color .12s,color .12s;display:flex}.timeline-vis-details-side-prev{border-right:1px solid var(--glass-border);border-radius:var(--radius) 0 0 var(--radius)}.timeline-vis-details-side-next{border-left:1px solid var(--glass-border);border-radius:0 var(--radius) var(--radius) 0}.timeline-vis-details-side:hover:not(:disabled),.timeline-vis-details-side:focus-visible:not(:disabled){background:var(--accent-soft);color:var(--accent)}.timeline-vis-details-side:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.timeline-vis-details-side:disabled{opacity:.25;cursor:default}.timeline-vis-details-head{justify-content:space-between;align-items:center;gap:8px;margin:0;display:flex}.timeline-vis-details-close{border-radius:var(--radius);width:28px;min-width:28px;height:28px;min-height:28px;padding:0;font-size:.9rem;line-height:1}.timeline-vis-pill{letter-spacing:.06em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border:1px solid rgba(var(--tl-blue), .35);border-radius:999px;padding:2px 10px;font-size:.7rem;font-weight:600}.timeline-vis-pill.timeline-vis-assignment{color:rgb(var(--tl-mint-fg));background:rgba(var(--tl-mint), .12);border-color:rgba(var(--tl-mint), .35)}.timeline-vis-pill.timeline-vis-education{color:rgb(var(--tl-amber-fg));background:rgba(var(--tl-amber), .12);border-color:rgba(var(--tl-amber), .35)}.timeline-vis-pill.timeline-vis-course{color:rgb(var(--tl-violet-fg));background:rgba(var(--tl-violet), .12);border-color:rgba(var(--tl-violet), .35)}.timeline-vis-pill.timeline-vis-sideProject{color:rgb(var(--tl-pink-fg));background:rgba(var(--tl-pink), .12);border-color:rgba(var(--tl-pink), .35)}.timeline-vis-pill.timeline-vis-github{color:var(--tl-green-fg);background:rgba(var(--tl-green), .12);border-color:rgba(var(--tl-green), .35)}.timeline-vis-details-link{color:var(--tl-green-fg);background:rgba(var(--tl-green), .12);border:1px solid rgba(var(--tl-green), .35);border-radius:999px;align-self:flex-start;margin:0;padding:6px 12px;font-size:.8rem;font-weight:600;text-decoration:none;display:inline-block}.timeline-vis-commit-pill{font-family:var(--font-mono);color:var(--tl-green-fg);background:rgba(var(--tl-green), .12);border:1px solid rgba(var(--tl-green), .35);border-radius:999px;padding:1px 8px;font-size:.75rem;font-weight:600;display:inline-block}.timeline-vis-credits-pill{font-family:var(--font-mono);color:var(--accent);background:var(--accent-soft);border:1px solid rgba(var(--tl-blue), .35);border-radius:999px;padding:1px 8px;font-size:.75rem;font-weight:600;display:inline-block}.timeline-vis-details-link:hover{background:rgba(var(--tl-green), .2);border-color:rgba(var(--tl-green), .55)}.timeline-vis-details-title{margin:0;font-size:1.05rem}.timeline-vis-details-sub{color:var(--fg-muted);margin:0;font-size:.9rem}.timeline-vis-details-dates{font-family:var(--font-mono);color:var(--fg-muted);margin:0;font-size:.85rem}.timeline-vis-details-duration{color:var(--accent)}.timeline-vis-details-desc{margin:0;font-size:.9rem;line-height:1.5}.timeline-vis-details-roles{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.timeline-vis-details-role{border-left:2px solid var(--accent-soft);background:var(--accent-soft);border-radius:0 6px 6px 0;flex-direction:column;gap:1px;padding:6px 10px;display:flex}.timeline-vis-details-role-title{color:var(--fg);font-size:.9rem;font-weight:600}.timeline-vis-details-role-meta{font-family:var(--font-mono);color:var(--fg-muted);font-size:.8rem}.timeline-vis-details-notes{border-left:2px solid var(--accent-soft);background:var(--accent-soft);color:var(--fg);white-space:pre-line;border-radius:0 6px 6px 0;align-items:flex-start;gap:8px;margin:0;padding:8px 12px;font-size:.9rem;line-height:1.5;display:flex}.timeline-vis-details-skills-title{letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);margin:0;font-size:.7rem;font-weight:600}.timeline-vis-details-skills{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.timeline-vis-details-skills li{color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:2px 10px;font-size:.75rem}.timeline-vis-details-when{color:var(--fg-muted);margin:0;font-size:.75rem}@media (width<=640px){.timeline-vis-toolbar{padding:10px 12px}.timeline-vis-details{width:auto;bottom:12px;left:12px;right:12px}.timeline-meta{gap:8px 12px}}.skill-modal-overlay{z-index:60;background:var(--modal-overlay);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.skill-modal-overlay--inert{display:none}.skill-modal{background:var(--modal-bg);border:1px solid var(--glass-border);border-radius:var(--radius);width:100%;max-width:560px;max-height:min(720px,100dvh - 48px);box-shadow:var(--shadow);color:var(--fg);flex-direction:column;display:flex;overflow:hidden}.skill-modal-body{gap:var(--modal-section-gap);min-height:0;padding:var(--modal-pad-y) var(--modal-pad-x);flex-direction:column;display:flex;overflow:auto}.skill-modal-detail,.skill-modal-groups,.program-modal-summary,.program-courses-list,.skill-modal-empty,.skill-modal-unused,.course-modal-modules,.course-modal-skills,.focus-modal-skills{margin:0;padding:0}.skill-modal-detail,.skill-modal-groups{gap:var(--modal-section-gap);flex-direction:column;display:flex}.program-modal-summary{gap:var(--modal-stack-gap);flex-direction:column;display:flex}.program-courses-list{gap:var(--modal-stack-gap);flex-direction:column;list-style:none;display:flex}.skill-modal-description{color:var(--fg);margin:0;font-size:.95rem;line-height:1.5}.skill-modal-pros-cons{gap:var(--modal-stack-gap);flex-direction:column;margin:0;display:flex}.skill-modal-pros,.skill-modal-cons{background:var(--bg);border:1px solid var(--border);border-radius:8px;grid-template-columns:96px 1fr;align-items:baseline;gap:10px;padding:8px 12px;display:grid}.skill-modal-pros dt,.skill-modal-cons dt{letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);margin:0;font-size:.7rem;font-weight:600}.skill-modal-pros dt{color:var(--accent)}.skill-modal-pros dd,.skill-modal-cons dd{margin:0;font-size:.9rem;line-height:1.5}.skill-modal-link{min-height:24px;font:inherit;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent);cursor:pointer;border-radius:999px;align-self:flex-start;align-items:center;gap:6px;padding:4px 12px;font-size:.8rem;font-weight:600;text-decoration:none;display:inline-flex}.skill-modal-link-icon{align-items:center;display:inline-flex}.project-modal-actions,.skill-modal-actions{flex-wrap:wrap;gap:8px;display:flex}.experience-modal .skill-modal-title{flex-direction:column;flex:1 1 0;align-items:flex-start;gap:4px;min-width:0;display:flex}.experience-modal .skill-modal-title .role{font-family:var(--font-mono)}.experience-modal-role-line{flex-wrap:wrap;align-items:baseline;gap:10px;min-width:0;display:inline-flex}.experience-modal-subject{color:var(--fg-muted);overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;max-width:100%;font-size:.9em;font-weight:400;display:flex}.experience-modal-subject .company-btn{font-weight:400}.experience-modal-via{letter-spacing:.04em;white-space:nowrap;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-soft);border-radius:999px;flex:none;align-items:center;padding:2px 8px;font-size:.7rem;font-weight:600;line-height:1.2;display:inline-flex}.experience-modal-meta,.program-modal-meta,.course-modal-meta,.experience-modal .role-chain,.skill-modal-detail .entry-notes{margin:0}.company-modal-stack,.skill-modal-group{gap:var(--modal-stack-gap);flex-direction:column;display:flex}.company-modal-stack-title,.skill-modal-group-heading{letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);margin:0;font-size:.7rem;font-weight:600}.company-modal-stack .entry-stack,.company-modal-stack .entry-skills,.skill-modal-group .entry-stack,.skill-modal-group .entry-skills{margin:0}.skill-modal-link:hover{border-color:var(--accent);text-decoration:none}@media (width<=520px){.skill-modal-pros,.skill-modal-cons{grid-template-columns:1fr;gap:4px}}.skill-modal-head{padding:14px var(--modal-pad-x);border-bottom:1px solid var(--glass-border);background:var(--glass-highlight);justify-content:space-between;align-items:center;gap:12px;display:flex}.skill-modal-title{flex-wrap:wrap;flex:auto;align-items:baseline;gap:10px;min-width:0;margin:0;font-size:1.05rem;font-weight:600;display:inline-flex}.skill-modal--cat .skill-modal-head{background:linear-gradient(180deg, rgba(var(--cat-rgb), .18), rgba(var(--cat-rgb), .06));border-bottom-color:rgba(var(--cat-rgb), .45)}:root[data-theme=light] .skill-modal--cat .skill-modal-head{background:linear-gradient(180deg, rgba(var(--cat-rgb), .22), rgba(var(--cat-rgb), .08))}.skill-modal-glyph{width:36px;height:36px;color:rgb(var(--cat-fg,var(--cat-rgb,var(--tl-blue))));background:rgba(var(--cat-rgb,var(--tl-blue)), .16);border:1px solid rgba(var(--cat-rgb,var(--tl-blue)), .45);border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}:root[data-theme=light] .skill-modal-glyph{background:rgba(var(--cat-rgb,var(--tl-blue)), .22)}.skill-modal-name{color:var(--fg)}.skill-modal-years{color:var(--accent);background:var(--accent-soft);letter-spacing:.02em;border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:500}.skill-modal-close{appearance:none;min-width:32px;min-height:32px;font:inherit;color:var(--fg);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:4px 12px;font-weight:700;line-height:1.2;display:inline-flex}.skill-modal-close:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.skill-modal-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skill-modal-pills{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.skill-modal-pills>li{display:inline-flex}.skill-modal-pill{font-family:var(--font-mono);color:var(--fg);background:var(--glass-highlight);border:1px solid var(--border);border-radius:999px;align-items:center;padding:3px 10px;font-size:.8rem;line-height:1.3;display:inline-flex}.skill-modal-pill-btn{appearance:none;font:inherit;font-family:var(--font-mono);cursor:pointer;text-align:inherit;margin:0;font-size:.8rem;line-height:1.3;transition:color .12s,border-color .12s,background .12s}@media (hover:hover){.skill-modal-pill-btn:hover{border-color:var(--accent);color:var(--accent)}}.skill-modal-pill-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skill-modal-empty{color:var(--fg-muted);font-size:.9rem}.skill-modal-unused{gap:var(--modal-stack-gap);flex-direction:column;display:flex}.skill-modal-unused-hint{color:var(--fg-muted);margin:0;font-size:.85rem;line-height:1.4}.skill-modal-pill-unused{color:var(--fg-muted)}@media (width<=520px){.skill-modal-overlay{padding:12px}}.education-program-btn{appearance:none;width:100%;font:inherit;color:var(--fg);text-align:left;cursor:pointer;background:0 0;border:none;margin:0;padding:0;display:block}.education-program-btn:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}.education-program-btn .education-head h3{text-decoration:underline;-webkit-text-decoration-color:var(--accent-soft);text-decoration-color:var(--accent-soft);text-underline-offset:3px;text-decoration-thickness:1px}.education-courses-count{color:var(--accent);margin-left:8px;font-size:.8rem}.program-modal-notes{border-left:2px solid var(--accent-soft);background:var(--accent-soft);color:var(--fg);white-space:pre-line;border-radius:0 6px 6px 0;align-items:flex-start;gap:10px;margin:0;padding:14px 16px;font-size:.9rem;line-height:1.5;display:flex}.program-segment{gap:var(--modal-stack-gap);flex-direction:column;display:flex}.program-segment+.program-segment{margin-top:var(--modal-section-gap)}.program-segment-head{border-left:2px solid rgba(var(--accent-rgb), .55);border-radius:0 8px 8px 0;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.program-segment-institution{color:var(--fg);margin:0;font-size:.95rem;font-weight:600}.program-segment-meta{color:var(--fg-muted);flex-wrap:wrap;align-items:center;gap:6px;margin:0;font-size:.85rem;display:flex}.program-segment-notes{margin-top:4px}.program-course-item{gap:var(--modal-stack-gap);background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-direction:column;padding:10px 12px;display:flex}.program-course-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.program-course-name{color:var(--fg);margin:0;font-size:.95rem;font-weight:600}.program-course-date{color:var(--fg-muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.8rem}.program-course-meta{color:var(--fg-muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:.85rem;display:flex}.program-course-code{font-family:var(--font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--fg);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:1px 8px;font-size:.8rem;text-decoration:none;transition:border-color .15s,color .15s}@media (hover:hover){a.program-course-code:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}}.program-course-grade{border:1px solid var(--accent);color:var(--accent);background:var(--accent-soft);border-radius:999px;align-items:baseline;gap:6px;padding:1px 10px;font-size:.8rem;display:inline-flex}.program-course-grade-label{letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);font-size:.7rem}.program-course-grade-value{font-weight:700}.program-course-progress{letter-spacing:.04em;color:var(--fg-muted);font-size:.8rem}.course-incomplete-pill{letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--border);color:var(--fg-muted);background:var(--accent-soft);border-radius:999px;align-items:center;padding:1px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.course-modules-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.course-modules-progress-value{font-family:var(--font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);font-variant-numeric:tabular-nums;color:var(--fg-muted);letter-spacing:.02em;align-items:baseline;gap:3px;font-size:.8rem;display:inline-flex}.course-modules-progress-earned{color:var(--accent);font-weight:600}.course-modules-progress-sep{opacity:.6}.course-modules-progress-unit{letter-spacing:.08em;text-transform:uppercase;margin-left:4px;font-size:.7rem}.course-modules-progress-bar{background:rgba(var(--cat-rgb,var(--tl-amber)), .14);border-radius:999px;height:6px;position:relative;overflow:hidden}.course-modules-progress-fill{border-radius:inherit;background:var(--accent);height:100%;transition:width .24s;display:block}.program-course-modules{flex-direction:column;gap:4px;padding-top:4px;display:flex}.program-course-modules-label{letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);margin:0;font-size:.7rem}.program-module-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.program-module-item{border-left:2px solid var(--accent);background:var(--bg);border-radius:4px;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;padding:4px 8px;font-size:.85rem;display:flex}.program-module-item--pending{border-left-color:var(--border);color:var(--fg-muted)}.program-module-name{font-weight:500}.program-module-meta{color:var(--fg-muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:.8rem;display:inline-flex}.program-module-code{font-family:var(--font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);border:1px solid var(--border);color:var(--fg);border-radius:4px;padding:0 6px;font-size:.75rem;text-decoration:none;transition:border-color .15s,color .15s}@media (hover:hover){a.program-module-code:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}}.program-module-date{white-space:nowrap}@media (width<=520px){.program-course-head{flex-direction:column;align-items:flex-start;gap:2px}}.ects-pill{appearance:none;font:inherit;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-soft);cursor:pointer;vertical-align:baseline;border-radius:999px;margin:0;padding:2px 10px;font-size:.75rem;line-height:1.4;transition:border-color .12s,color .12s,background .12s;display:inline-block}.ects-pill:hover,.ects-pill:focus-visible{border-color:var(--accent);outline:none}.ects-pill:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ects-modal{max-width:640px}.ects-section-heading{letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);margin:0 0 8px;font-size:.78rem}.ects-program{gap:var(--modal-stack-gap);flex-direction:column;display:flex}.ects-program-subtitle{color:var(--fg);margin:-4px 0 0;font-size:.95rem}.ects-program-meta{color:var(--fg);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;gap:12px;margin:0;font-size:.95rem;display:flex}.ects-program-pct{color:var(--accent);font-weight:600}.ects-bar-wrap{margin:4px 0;padding:0 8px;position:relative}.ects-bar{background:var(--bg);border:1px solid var(--border);border-radius:999px;height:24px;position:relative;overflow:hidden}.ects-bar-segment{border-right:1px dashed rgba(var(--tl-blue), .35);position:absolute;top:0;bottom:0}.ects-bar-segment:last-child{border-right:none}.ects-bar-segment--main{background:rgba(var(--tl-blue), .18)}.ects-bar-segment--minor{background:rgba(var(--tl-violet), .22)}.ects-bar-segment--thesis{background:rgba(var(--tl-amber), .22)}.ects-bar-segment--skipped{border:1px dashed var(--border);background:0 0;border-radius:0}.ects-bar-segment--skipped.ects-bar-segment--minor{border-color:rgba(var(--tl-violet), .5);background:repeating-linear-gradient(-45deg, transparent 0, transparent 4px, rgba(var(--tl-violet), .18) 4px, rgba(var(--tl-violet), .18) 8px)}.ects-bar-segment--skipped.ects-bar-segment--thesis{border-color:rgba(var(--tl-amber), .5);background:repeating-linear-gradient(-45deg, transparent 0, transparent 4px, rgba(var(--tl-amber), .18) 4px, rgba(var(--tl-amber), .18) 8px)}.ects-bar-fill{background:linear-gradient(180deg, #ffffff2e 0%, rgba(var(--tl-blue), .45) 60%, rgba(var(--tl-blue), .7) 100%);box-shadow:0 0 12px rgba(var(--tl-blue), .45), inset 0 0 6px #ffffff26;pointer-events:none;border-radius:999px;position:absolute;top:0;bottom:0}.ects-bar-fill--tail{border-right:2px solid rgba(var(--tl-blue), .95);border-top-right-radius:0;border-bottom-right-radius:0}.ects-bar-tick{background:repeating-linear-gradient(to bottom, var(--fg) 0, var(--fg) 2px, transparent 2px, transparent 4px);opacity:.7;pointer-events:none;width:1px;position:absolute;top:3px;bottom:3px}.ects-bar-points{height:18px;margin-top:6px;position:relative}.ects-bar-point{font-variant-numeric:tabular-nums;color:var(--fg-muted);white-space:nowrap;font-size:.7rem;position:absolute;top:0;transform:translate(-50%)}.ects-bar-point--total{color:var(--accent);font-weight:600}.ects-segment-legend{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.ects-segment-legend-item{background:var(--bg);border:1px solid var(--border);border-radius:8px;grid-template-columns:14px 1fr auto auto;align-items:baseline;gap:10px;padding:6px 12px;font-size:.85rem;display:grid}.ects-segment-legend-item--skipped{color:var(--fg-muted)}.ects-segment-swatch{border-radius:3px;width:12px;height:12px;display:inline-block}.ects-segment-swatch--main{background:rgba(var(--tl-blue), .55)}.ects-segment-swatch--minor{background:rgba(var(--tl-violet), .55)}.ects-segment-swatch--thesis{background:rgba(var(--tl-amber), .55)}.ects-segment-legend-item--skipped .ects-segment-swatch{background:0 0;border:1px dashed}.ects-segment-legend-credits{font-variant-numeric:tabular-nums;color:var(--fg-muted)}.ects-segment-legend-status{letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);font-size:.7rem}.ects-program-explainer{color:var(--fg-muted);margin:0;font-size:.85rem;line-height:1.55}.ects-credited{flex-direction:column;gap:8px;display:flex}.ects-credited-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ects-credited-item{background:var(--bg);border:1px solid var(--border);border-left:2px solid rgba(var(--tl-violet), .55);border-radius:0 8px 8px 0;flex-direction:column;gap:4px;padding:10px 14px;display:flex}.ects-credited-head{flex-wrap:wrap;align-items:baseline;gap:8px;font-size:.9rem;display:flex}.ects-credited-name{color:var(--fg);font-weight:600}.ects-credited-code{color:var(--fg-muted);font-variant-numeric:tabular-nums;font-size:.78rem}.ects-credited-credits{color:var(--accent);font-variant-numeric:tabular-nums;margin-left:auto;font-size:.85rem;font-weight:600}.ects-credited-source{color:var(--fg-muted);margin:0;font-size:.82rem}.ects-credited-note{color:var(--fg);margin:0;font-size:.85rem;font-style:italic;line-height:1.5}.ects-course{gap:var(--modal-stack-gap);flex-direction:column;display:flex}.ects-course-line{background:var(--accent-soft);border-left:2px solid var(--accent);border-radius:0 6px 6px 0;margin:0;padding:10px 14px;font-size:.92rem;line-height:1.5}.ects-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.88rem}.ects-table th,.ects-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 12px}.ects-table th{letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);font-size:.7rem;font-weight:600}.ects-table tbody tr:last-child td{border-bottom:none}.ects-table-row--current td{color:var(--accent);background:var(--accent-soft);font-weight:600}.ects-table-row--current td:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.ects-table-row--current td:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}@media (width<=520px){.ects-bar-wrap{padding:0}.ects-bar-point{font-size:.62rem}.ects-bar-point--total{transform:translate(-100%)}.ects-segment-legend-item{grid-template-columns:14px 1fr;row-gap:2px}.ects-segment-legend-credits,.ects-segment-legend-status{grid-column:2}}.print-view{display:none}@media print{:root,:root[data-theme=dark],:root[data-theme=light]{--bg:#fff;--fg:#111;--fg-muted:#444;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html,body{color:#111;background:#fff}body:before,.page:before{display:none}.celestial-sky,.page-glow,.glass-reflect,.footer,.timeline-vis-overlay,.skill-modal,.skill-modal-overlay,.page>.hero,.page>main.container>.section,.page>footer.footer{display:none!important}.page{background:0 0;padding:0}.container{max-width:none}.print-view{color:#111;font-family:var(--print-font-family,"EB Garamond Variable", "EB Garamond", Garamond, "Adobe Garamond Pro", "Apple Garamond", Georgia, "Times New Roman", Times, serif);font-size:var(--print-font-size,10.5pt);line-height:var(--print-line-height,1.4);display:block;position:relative}.print-hero{margin-bottom:var(--print-spacing-header-to-body,20pt)}.print-eyebrow{font-family:var(--print-heading-font-family,inherit);text-transform:uppercase;letter-spacing:.18em;color:#777;margin:0;font-size:9pt;font-weight:600;position:absolute;top:0;right:0}.print-name{font-family:var(--print-heading-font-family,inherit);font-size:var(--print-heading-name,24pt);letter-spacing:-.01em;margin:0 0 4pt;font-weight:700;line-height:1.15}.print-title{font-family:var(--print-heading-font-family,inherit);font-size:var(--print-heading-title,12pt);color:#444;margin:0 0 10pt;font-weight:500}.print-contact{font-family:var(--print-heading-font-family,inherit);font-size:var(--print-heading-subheading,9pt);color:#555;margin:-6pt 0 10pt;font-weight:500}.print-summary{font-size:var(--print-font-size,10.5pt);color:#111;margin:0;line-height:1.55}.print-section{margin-bottom:var(--print-spacing-section,16pt)}.print-section-title{font-family:var(--print-heading-font-family,inherit);font-size:var(--print-heading-section,10pt);text-transform:uppercase;letter-spacing:.08em;color:#111;break-after:avoid;page-break-after:avoid;border-bottom:1px solid #999;margin:0 0 8pt;padding-bottom:3pt;font-weight:700}.print-experience{margin:0;padding:0;list-style:none}.print-job{margin-bottom:var(--print-spacing-entry,12pt)}.print-job:last-child{margin-bottom:0}.print-job-header{break-inside:avoid;page-break-inside:avoid;break-after:avoid;page-break-after:avoid}.print-job-title{font-family:var(--print-heading-font-family,inherit);font-size:var(--print-heading-entry,11pt);color:#111;margin:0;font-weight:700;line-height:1.3}.print-job-role{font-weight:700}.print-job-company{font-weight:500}.print-job-meta{color:#444;margin:1pt 0 var(--print-spacing-paragraph,4pt);font-size:9.5pt}.print-job-engagement{font-style:italic}.print-job-tagline{margin:0 0 var(--print-spacing-paragraph,4pt);color:#111}.print-tags{margin:0 0 var(--print-spacing-paragraph,4pt);color:#444;break-before:avoid;page-break-before:avoid;font-size:9.5pt}.print-tags:before{content:"> "}.print-tags strong{color:#111;font-weight:400}.print-notes{margin:0 0 var(--print-spacing-paragraph,4pt);color:#333;break-before:avoid;page-break-before:avoid;font-size:9.5pt;font-style:italic}.print-role-history{margin:2pt 0 var(--print-spacing-paragraph,4pt) 12pt;border-left:1px solid #ccc;padding:0;list-style:none}.print-role-history>li{color:#333;margin:0 0 1pt;padding:0 0 0 8pt;font-size:10pt}.print-role-history-range{color:#666}.print-assignments-block{margin:8pt 0 0 12pt}.print-assignments-heading{font-family:var(--print-heading-font-family,inherit);font-size:var(--print-heading-subheading,9pt);text-transform:uppercase;letter-spacing:.06em;color:#555;break-after:avoid;page-break-after:avoid;margin:0 0 4pt;font-weight:700}.print-assignments{border-left:1px solid #ccc;margin:0;padding:0;list-style:none}.print-assignment{margin:0 0 var(--print-spacing-subentry,8pt);break-inside:avoid;page-break-inside:avoid;padding:0 0 0 10pt}.print-assignment:last-child{margin-bottom:0}.print-assignment .print-job-title{font-size:var(--print-heading-subentry,10.5pt)}.print-projects{margin:0}.print-project{margin:0 0 2pt;padding-left:16pt;line-height:1.4;display:flow-root;position:relative;break-inside:avoid!important;page-break-inside:avoid!important}.print-project:before{content:"•";position:absolute;top:0;left:4pt}.print-project:last-child{margin-bottom:0}.print-project-name{font-weight:700}.print-project-range{color:#444;white-space:nowrap;font-size:9.5pt}.print-project-url{color:#555;font-size:9.5pt}.print-project-url:before{content:"\a ";white-space:pre}.print-project-url a{color:inherit;text-decoration:none}.print-education,.print-courses{margin:0;padding:0;list-style:none}.print-edu{margin:0 0 var(--print-spacing-subentry,8pt);break-inside:avoid;page-break-inside:avoid}.print-edu:last-child{margin-bottom:0}.print-edu-head{justify-content:space-between;align-items:baseline;gap:12pt;display:flex}.print-edu-title{font-family:var(--print-heading-font-family,inherit);font-size:var(--print-heading-subentry,10.5pt);margin:0;font-weight:700;line-height:1.3}.print-edu-range{color:#444;white-space:nowrap;font-size:9.5pt}.print-edu-meta{color:#333;margin:1pt 0 0;font-size:9.5pt}#courses,.print-courses{break-before:auto}.print-skills{margin:0;padding:0 0 0 16pt;list-style:outside}.print-skill-group{break-inside:avoid;page-break-inside:avoid;margin:0 0 2pt;line-height:1.45}.print-skill-group:last-child{margin-bottom:0}.print-skill-label{font-weight:700}.print-languages{margin:0;padding:0;list-style:none}.print-language{display:inline}.print-language+.print-language:before{content:", ";color:#444}.print-section-title+ul,.print-section-title+ul>li:first-child,.print-section-title+ul>li:first-child .print-job-title,.print-section-title+ul>li:first-child .print-edu-head{break-before:avoid;page-break-before:avoid}.print-section-head{vertical-align:top;width:100%;display:inline-block;break-inside:avoid!important;page-break-inside:avoid!important}.print-section-head .print-project{display:block;break-inside:auto!important;page-break-inside:auto!important}a{color:#111;text-decoration:none}.print-view code{white-space:nowrap;background:#f0f0f0;border:1px solid #d6d6d6;border-radius:2pt;padding:0 2pt;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Roboto Mono,monospace;font-size:.78em}}
