@import"https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400..800&family=Public+Sans:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap";:root{--a-l: #1F4B99;--a-l-2: #16386F;--a-l-on: #FFFFFF;--a-d: #7FA9EE;--a-d-2: #A9C6F7;--a-d-on: #12120F;--bg: #F6F3EC;--bg-2: #EFEBE0;--panel: #FBF9F3;--panel-2: #FFFFFF;--ink: #17160F;--ink-soft: #2E2B22;--ink-body: #4A4638;--ink-mute: #615B4D;--ink-faint: #7A7365;--ink-dim: #9A9284;--line: #E2DBCA;--line-2: #D6CEBC;--line-soft: #EBE5D8;--accent: var(--a-l);--accent-2: var(--a-l-2);--accent-wash: color-mix(in srgb, var(--a-l) 10%, #FFFFFF);--on-accent: var(--a-l-on);--amber: #96560A;--shadow: rgba(23, 22, 15, .5);--term-bg: #16150F;--term-bar: #1E1C15;--term-line: #2A281F;--term-mute: #948F82;--term-dim: #877F72;--cat-languages: #4E7FE0;--cat-interfaces: #D95E86;--cat-services: #2E9E68;--cat-ai: #9A6AD0;--cat-data: #C9862B;--cat-ship: #2E9EB5;--cat-runtime: #D9593C;--sans: "Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--display: "Bricolage Grotesque", "Public Sans", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--maxw: 1280px;--gut: clamp(20px, 4vw, 40px);--ease: cubic-bezier(.22, .7, .2, 1);--r: 14px;--r-sm: 8px;--sec-y: clamp(56px, 8vw, 96px);color-scheme:light}:root[data-theme=dark]{--bg: #12120F;--bg-2: #1B1A16;--panel: #171612;--panel-2: #141310;--ink: #EDEAE1;--ink-soft: #D6D2C7;--ink-body: #BDB9AD;--ink-mute: #A5A195;--ink-faint: #8C897F;--ink-dim: #78756C;--line: #26241E;--line-2: #34322A;--line-soft: #201F19;--accent: var(--a-d);--accent-2: var(--a-d-2);--accent-wash: color-mix(in srgb, var(--a-d) 13%, transparent);--on-accent: var(--a-d-on);--amber: #E3B341;--shadow: rgba(0, 0, 0, .6);--term-bg: #141310;--term-bar: #1A1915;--term-line: #26241E;color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #12120F;--bg-2: #1B1A16;--panel: #171612;--panel-2: #141310;--ink: #EDEAE1;--ink-soft: #D6D2C7;--ink-body: #BDB9AD;--ink-mute: #A5A195;--ink-faint: #8C897F;--ink-dim: #78756C;--line: #26241E;--line-2: #34322A;--line-soft: #201F19;--accent: var(--a-d);--accent-2: var(--a-d-2);--accent-wash: color-mix(in srgb, var(--a-d) 13%, transparent);--on-accent: var(--a-d-on);--amber: #E3B341;--shadow: rgba(0, 0, 0, .6);--term-bg: #141310;--term-bar: #1A1915;--term-line: #26241E;color-scheme:dark}}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:80px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased;transition:background-color .3s var(--ease),color .3s var(--ease)}::selection{background:var(--accent);color:var(--bg)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.skip{position:fixed;top:10px;left:10px;z-index:200;transform:translateY(-160%);font-size:14px;background:var(--accent);color:var(--on-accent);padding:10px 14px;border-radius:var(--r-sm);transition:transform .18s var(--ease)}.skip:focus-visible{transform:none}main,.nav,.foot{position:relative;z-index:1}h1,h2,h3{font-family:var(--display);font-weight:600;margin:0;letter-spacing:-.035em;line-height:1}.mono,.mlabel,.xp-when,.proj-when,.oss .repo,.info-row,.about-side,.hero-rail,.edu-facts,.foot-inner,.nav-links,.drawer a,.nav-cta{font-family:var(--mono);font-feature-settings:"liga" 0}.nav{position:sticky;top:0;z-index:60;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(12px) saturate(1.3);border-bottom:1px solid var(--line)}.nav-progress{position:absolute;left:0;bottom:-1px;height:2px;width:100%;background:var(--accent);transform:scaleX(var(--p, 0));transform-origin:0 50%}.nav-inner{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);height:64px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-weight:600;font-size:15px;display:inline-flex;align-items:baseline;gap:10px;color:var(--ink);letter-spacing:-.01em;transition:color .2s}.brand:hover{color:var(--accent)}.logo{display:block;overflow:visible}.logo-path{fill:none;stroke:currentColor;stroke-width:15;stroke-linecap:butt;stroke-linejoin:round;transition:stroke .22s var(--ease)}@keyframes logo-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.logo--animate .logo-path{stroke-dasharray:1;stroke-dashoffset:1;animation:logo-draw 1.4s cubic-bezier(.55,0,.25,1) .15s forwards}@media(prefers-reduced-motion:reduce){.logo--animate .logo-path{animation:none;stroke-dashoffset:0}}.nav-links{display:flex;gap:4px;font-size:12px;letter-spacing:.04em}.nav-links a{position:relative;color:var(--ink-mute);padding:8px 11px;transition:color .2s}.nav-links a:after{content:"";position:absolute;left:11px;right:11px;bottom:2px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:0 50%;transition:transform .25s var(--ease)}.nav-links a:hover{color:var(--ink)}.nav-links a:hover:after,.nav-links a.active:after{transform:scaleX(1)}.nav-links a.active{color:var(--accent)}.nav-right{display:flex;align-items:center;gap:9px}.nav-cta{display:inline-flex;align-items:center;font-size:12px;letter-spacing:.04em;border:1px solid var(--accent);border-radius:var(--r-sm);color:var(--accent);padding:8px 14px;transition:background .2s,color .2s}.nav-cta:hover{background:var(--accent);color:var(--on-accent)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid var(--line-2);background:var(--panel);color:var(--ink-mute);border-radius:var(--r-sm);cursor:pointer;transition:border-color .18s,color .18s}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.icon-btn svg{width:15px;height:15px}:root[data-theme=dark] .icon-btn .sun,:root:not([data-theme=light]) .icon-btn .sun{display:none}.icon-btn .moon{display:none}:root[data-theme=dark] .icon-btn .moon{display:block}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .icon-btn .moon{display:block}}:root[data-theme=light] .icon-btn .sun{display:block}:root[data-theme=light] .icon-btn .moon{display:none}.term-btn{color:var(--ink-mute);border:1px solid var(--line-2);background:var(--panel);width:34px;height:34px;border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .18s,color .18s}.term-btn:hover{border-color:var(--accent);color:var(--accent)}.term-btn svg{width:15px;height:15px}.nav-menu-btn{display:none}.drawer{position:fixed;inset:64px 0 auto;z-index:55;background:var(--bg);border-bottom:1px solid var(--line);transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .22s var(--ease),transform .22s var(--ease)}.drawer.open{opacity:1;transform:none;pointer-events:auto}.drawer nav{display:grid;padding:10px var(--gut) 20px}.drawer a{font-size:13.5px;letter-spacing:.04em;padding:14px 0;border-bottom:1px solid var(--line);color:var(--ink-mute)}.drawer a:last-child{border-bottom:none}.btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:12px;letter-spacing:.05em;padding:13px 18px;border-radius:var(--r-sm);border:1px solid var(--line-2);background:transparent;color:var(--ink);cursor:pointer;transition:background .2s,color .2s,border-color .2s,transform .2s}.btn svg{width:15px;height:15px;flex:none}.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--bg);padding:13px 20px}.btn-primary:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent);transform:translateY(-2px)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.hero,.section{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut)}.hero-inner,.section-inner{border-bottom:1px solid var(--line)}.section-inner{padding:var(--sec-y) 0}#contact .section-inner{border-bottom:none;padding-bottom:clamp(64px,9vw,110px)}.hero-inner{min-height:calc(100vh - 76px);display:flex;flex-direction:column;justify-content:center;padding:36px 0 28px}.hero-split>*,.about-grid>*,.contact-grid>*,.xp-item>*,.edu-grid>*,.proj-grid>*,.oss-grid>*,.skill-row>*,.head-row>*{min-width:0}.hero .eyebrow{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;color:var(--accent);margin-bottom:22px}.hero h1{font-size:clamp(38px,min(12.2vw,17vh),158px);line-height:.9;letter-spacing:-.045em;white-space:nowrap}.hero h1 .dot{color:var(--accent)}.hero-split{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(28px,3.5vw,44px);margin-top:min(40px,4vh);padding-top:min(30px,3vh);border-top:1px solid var(--line)}.hero-body{font-family:var(--display);font-weight:400;font-size:clamp(18px,1.7vw,22px);line-height:1.45;letter-spacing:-.02em;margin:0 0 28px;max-width:44ch;text-wrap:pretty}.hero-body strong{font-weight:600}.hero-actions{display:flex;flex-wrap:wrap;gap:10px}.hero-rail{display:flex;flex-direction:column;gap:16px;font-size:12px;color:var(--ink-mute)}.hero-stack{display:flex;flex-wrap:wrap;gap:8px}.hero-stack span{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:7px;padding:7px 11px}.hero-stack img{width:14px;height:14px;flex:none}.hero-rail .row{display:grid;grid-template-columns:88px 1fr;gap:14px;border-top:1px solid var(--line);padding-top:12px}.hero-rail .row .k{color:var(--ink-dim)}.hero-rail .status{display:flex;align-items:center;gap:9px;color:var(--accent);border-top:1px solid var(--line);padding-top:12px}.pulse{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none;animation:pulse-fade 2.4s ease-in-out infinite}@keyframes pulse-fade{0%,45%{opacity:1}60%,to{opacity:.28}}.section-head{margin-bottom:clamp(30px,4vw,40px);border-top:1px solid var(--line);padding-top:20px}.mlabel{display:block;font-size:11.5px;letter-spacing:.06em;color:var(--accent);margin-bottom:14px}.mlabel .n{color:var(--accent);opacity:.55}.head-row{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,3.5vw,44px);align-items:end}.section-title{font-size:clamp(34px,5vw,72px)}.section-head .desc{margin:0 0 6px;font-size:17px;line-height:1.6;color:var(--ink-mute);max-width:60ch}.about-grid{display:grid;grid-template-columns:200px 1fr 1fr;gap:clamp(24px,3.5vw,44px)}.about-side{font-size:12px;line-height:2;color:var(--ink-mute)}.about-side .row{border-top:1px solid var(--line);padding-top:10px;margin-bottom:10px}.about-side .row:last-child{margin-bottom:0}.about-side .row .k{display:block;color:var(--ink-dim)}.about-side .row .v.ac{color:var(--accent)}.about-prose p{margin:0;font-size:17px;line-height:1.72;color:var(--ink-soft);text-wrap:pretty}.about-prose p+p{margin-top:20px}.about-prose strong{font-weight:600;color:var(--ink)}.xp-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:clamp(24px,3.5vw,48px);align-items:start;border-top:1px solid var(--line);padding:34px 0}.xp-when{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:12px;color:var(--ink-faint);margin-bottom:10px}.xp-when .when{color:var(--accent)}.xp-when .sep{color:var(--line-2)}.xp-role{font-size:clamp(22px,2.2vw,27px);line-height:1.2;margin-bottom:4px}.xp-co{font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;color:var(--accent);margin-bottom:14px}.xp-summary{margin:0 0 18px;font-size:16px;line-height:1.65;color:var(--ink-soft);text-wrap:pretty}.xp-list{list-style:none;padding:0;margin:0;display:grid;gap:10px;align-content:start}.xp-list li{position:relative;padding-left:20px;font-size:15.5px;line-height:1.55;color:var(--ink-body);text-wrap:pretty}.xp-list li:before{content:"";position:absolute;left:0;top:.62em;width:7px;height:1px;background:var(--accent)}.tags{display:flex;flex-wrap:wrap;gap:6px}.tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;line-height:1.5;letter-spacing:.04em;color:var(--ink-mute);background:transparent;border:1px solid var(--line);border-radius:6px;padding:5px 9px;white-space:nowrap;transition:color .2s,border-color .2s}.tag i{width:4px;height:4px;flex:none;border-radius:50%;background:var(--pill, var(--line-2))}.tag-link{cursor:pointer}.tag:hover{border-color:var(--accent);color:var(--accent)}.tag[data-cat=Languages]{--pill: var(--cat-languages)}.tag[data-cat=Interfaces]{--pill: var(--cat-interfaces)}.tag[data-cat="Services & APIs"]{--pill: var(--cat-services)}.tag[data-cat="AI in production"]{--pill: var(--cat-ai)}.tag[data-cat=Data]{--pill: var(--cat-data)}.tag[data-cat="Ship & run"]{--pill: var(--cat-ship)}.tag[data-cat="Browser & runtime"]{--pill: var(--cat-runtime)}.icon-btn.copy-target{display:inline-grid;place-items:center;width:26px;height:26px;flex:none;padding:0;background:none;border:1px solid var(--line);border-radius:6px;color:var(--ink-faint)}.icon-btn.copy-target:hover{color:var(--accent);border-color:var(--accent);background:none}.icon-btn svg{grid-area:1 / 1}.icon-btn.copy-target svg{width:14px;height:14px}.ico{display:inline-grid;place-items:center;width:16px;height:16px;flex:none}.ico svg{grid-area:1 / 1;width:16px;height:16px}.copy-target .i-copy,.copy-target .i-ok{transition:opacity .16s var(--ease),transform .16s var(--ease)}.copy-target .i-ok{opacity:0;transform:scale(.7)}.copy-target.ok{color:var(--accent)}.copy-target.ok .i-copy{opacity:0;transform:scale(.7)}.copy-target.ok .i-ok{opacity:1;transform:none}.copy-target.fail{color:#c0392b}.proj-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:start}.proj{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:32px clamp(22px,2.4vw,32px);display:flex;flex-direction:column;gap:18px;transition:border-color .3s var(--ease),transform .3s var(--ease),box-shadow .3s var(--ease)}.proj:hover,.proj:focus-within{border-color:var(--line-2);transform:translateY(-3px);box-shadow:0 18px 40px -30px var(--shadow)}.proj-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px;border-bottom:1px solid var(--line);padding-bottom:14px}.proj-name{font-size:clamp(22px,2vw,27px);line-height:1.15}.proj-name a:hover{color:var(--accent)}.proj-name .sub{color:var(--ink-faint)}.proj-when{display:inline-flex;align-items:center;gap:7px;flex:none;font-size:11px;letter-spacing:.06em;color:var(--ink-faint);white-space:nowrap}.proj-when:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--proj, var(--accent));flex:none}.proj-tagline{margin:0;font-family:var(--display);font-weight:500;font-size:19px;line-height:1.4;letter-spacing:-.02em;color:var(--accent)}.proj-desc{margin:0;font-size:15.5px;line-height:1.65;color:var(--ink-soft);text-wrap:pretty}.proj-hl{border-left:2px solid var(--accent);padding-left:16px}.proj-hl .k{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--accent);margin-bottom:6px}.proj-hl p{margin:0;font-size:14.5px;line-height:1.6;color:var(--ink-body);text-wrap:pretty}.proj-facts{list-style:none;margin:0;padding:0;display:grid;gap:0;font-family:var(--mono);font-size:11.5px;line-height:1.5;color:var(--ink-mute)}.proj-facts li{border-top:1px solid var(--line-soft);padding:6px 0}.proj-facts li:last-child{padding-bottom:0}.proj-install{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11.5px;color:var(--ink-mute);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 8px 7px 12px;overflow:hidden}.proj-install .sig{color:var(--accent);flex:none}.proj-install code{flex:1 1 auto;min-width:0;overflow-x:auto;white-space:nowrap;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}.proj-install .icon-btn{margin-left:auto}.proj-links{display:flex;flex-wrap:wrap;gap:18px;font-family:var(--mono);font-size:12px;letter-spacing:.04em}.proj-links a{display:inline-flex;align-items:center;min-height:24px;color:var(--accent);border-bottom:1px solid color-mix(in srgb,var(--accent) 30%,transparent);padding-bottom:2px;transition:border-color .2s}.proj-links a:hover{border-color:var(--accent)}.proj-links .muted{color:var(--ink-faint)}.edu-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,3.5vw,44px);align-items:start}.edu-deg{font-family:var(--display);font-weight:600;font-size:clamp(21px,2vw,25px);letter-spacing:-.03em;margin-bottom:4px}.edu-school{font-family:var(--mono);font-size:12.5px;letter-spacing:.04em;color:var(--accent)}.edu-note{margin:0 0 20px;font-size:16px;line-height:1.7;color:var(--ink-soft);text-wrap:pretty}.edu-facts{font-size:12px;line-height:2;color:var(--ink-mute)}.edu-facts div{border-top:1px solid var(--line);padding-top:9px}.oss-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.oss{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:26px 24px;display:flex;flex-direction:column;gap:12px;color:var(--ink);transition:border-color .3s var(--ease),transform .3s var(--ease)}.oss:hover{border-color:var(--line-2);transform:translateY(-3px)}.oss .head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.oss .nm{font-family:var(--display);font-weight:600;font-size:20px;letter-spacing:-.03em;min-width:0}.oss .lang{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--accent);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.oss .lang .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.oss p{margin:0;font-size:14.5px;line-height:1.6;color:var(--ink-body);text-wrap:pretty}.oss .repo{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;font-size:11px;color:var(--ink-faint);margin-top:auto;padding-top:10px;border-top:1px solid var(--line)}.oss .repo .path{min-width:0;overflow:hidden;text-overflow:ellipsis}.oss .repo .yr{margin-left:auto}.oss .repo .live{display:inline-flex;align-items:center;gap:5px;color:var(--accent)}.oss .repo .live:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.oss-more{margin-top:26px;font-family:var(--mono);font-size:12.5px;letter-spacing:.04em}.oss-more a{color:var(--accent);border-bottom:1px solid color-mix(in srgb,var(--accent) 30%,transparent);padding-bottom:2px;transition:border-color .2s}.oss-more a:hover{border-color:var(--accent)}.skill-row{display:grid;grid-template-columns:170px 1fr 1fr;gap:clamp(20px,3vw,40px);border-top:1px solid var(--line);padding:26px 0}.skill-row .gname{font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--accent)}.skill-row .gnote{margin:0;font-size:16px;line-height:1.65;color:var(--ink-soft);text-wrap:pretty}.skill-chips{display:flex;flex-wrap:wrap;gap:6px;align-content:start}.contact-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,4vw,48px);align-items:start}.contact-info .desc{margin:0 0 28px;font-family:var(--display);font-weight:500;font-size:21px;line-height:1.5;letter-spacing:-.02em;color:var(--ink);text-wrap:pretty}.info-row{padding:13px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:110px 1fr;gap:16px;align-items:center;font-size:13px}.info-row:last-of-type{border-bottom:1px solid var(--line)}.info-row .k{color:var(--ink-dim)}.info-row .v{display:inline-flex;flex-wrap:wrap;align-items:center;gap:12px;min-width:0;overflow-wrap:anywhere;color:var(--ink-soft)}.info-row .v a{display:inline-flex;align-items:center;min-height:24px}.info-row .v.ac,.info-row .v.ac a{color:var(--accent)}.info-row .v .dl{display:inline-flex;align-items:center;gap:7px}.info-row .v .dl svg{width:15px;height:15px;flex:none}.contact-socials{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.contact-socials .btn{padding:11px 16px}.form-panel{border:1px solid var(--line);background:var(--panel);border-radius:var(--r);padding:32px}.form-panel .flabel{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--accent);margin-bottom:22px}form.contact-form{display:grid;gap:20px}.field label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--ink-faint);margin-bottom:7px}.field input,.field textarea{width:100%;font-family:var(--sans);font-size:15px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px;transition:border-color .2s,box-shadow .2s;resize:vertical}.field input::placeholder,.field textarea::placeholder{color:var(--ink-faint)}.field input:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash)}form .btn-primary{justify-self:start}.form-status{font-family:var(--mono);font-size:11.5px;line-height:1.6;color:var(--ink-faint);min-height:1.6em;margin:-6px 0 0}.form-status.done{color:var(--accent)}.form-status a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.foot{border-top:1px solid var(--line)}.foot-inner{max-width:var(--maxw);margin:0 auto;padding:26px var(--gut) 34px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;font-size:12px;color:var(--ink-faint)}.foot .brand{font-family:var(--mono);font-weight:400;font-size:12px;color:var(--ink-faint)}.to-top{color:var(--accent);display:inline-flex;align-items:center;gap:7px;min-height:24px;transition:opacity .18s}.to-top:hover{opacity:.7}.term{background:var(--term-bg);border:1px solid var(--term-line);border-radius:var(--r);overflow:hidden;box-shadow:0 24px 56px -34px var(--shadow);font-family:var(--mono)}.term-bar{display:flex;align-items:center;gap:8px;padding:11px 14px;background:var(--term-bar);border-bottom:1px solid var(--term-line)}.term-bar .d{width:11px;height:11px;border-radius:50%;padding:0;border:none;flex:none}.term-bar .d.r{background:#e0584e}.term-bar .d.y{background:#e3b341}.term-bar .d.g{background:#2ea043}button.d{cursor:pointer}.term-bar .t{margin-left:8px;font-size:11.5px;color:var(--term-mute)}.term-body{padding:18px 18px 22px;font-size:13px;line-height:1.75;color:#cbccc2}.term-body .pl{color:#3fcb7e}.term-body .pl:before{content:"rishikesh@portfolio:~$ ";color:var(--term-mute)}.term-body .pl-echo{color:#cbccc2}.term-body .pl-echo .ps1{color:var(--term-mute)}.term-body .out{color:#9e9f94;white-space:pre-wrap}.term-body .k{color:#6fd08c}.term-body .cmt{color:var(--term-dim)}.term-body .err{color:#e0584e}.term-cursor{display:inline-block;width:8px;height:15px;background:#3fcb7e;vertical-align:-2px;animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.term-overlay{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;padding:20px;background:color-mix(in srgb,var(--ink) 45%,transparent);backdrop-filter:blur(5px)}.term-overlay.open{display:flex;animation:fade .18s var(--ease)}body.term-open{overflow:hidden}@keyframes fade{0%{opacity:0}to{opacity:1}}.term-overlay .term{width:min(760px,100%)}.term-overlay .term-body{min-height:340px;max-height:68vh;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.term-overlay .term-body::-webkit-scrollbar{width:0;height:0;display:none}.term-prompt{padding:4px 18px 18px;font-family:var(--mono);font-size:13px;display:flex;gap:8px;align-items:center;background:var(--term-bg)}.term-prompt .ps1{color:var(--term-mute)}.term-input{width:100%;background:transparent;border:none;outline:none;color:#3fcb7e;font-family:var(--mono);font-size:13px;caret-color:#3fcb7e}.reveal{opacity:0;transform:translateY(14px);transition:opacity .6s var(--ease),transform .6s var(--ease);transition-delay:var(--d, 0ms)}.reveal.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important}.term-cursor,.pulse{animation:none}*{transition-duration:.01ms!important}}@media(max-width:1100px){.about-grid{grid-template-columns:160px 1fr}.about-prose{grid-column:2}.oss-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-row{grid-template-columns:150px 1fr}.skill-chips{grid-column:2}}@media(max-width:980px){.hero h1{white-space:normal;font-size:clamp(38px,13vw,96px)}.hero-split,.contact-grid,.xp-item,.edu-grid,.proj-grid{grid-template-columns:1fr}.head-row{grid-template-columns:1fr;gap:16px;align-items:start}}@media(max-width:900px){.nav-links,.nav-cta{display:none}.nav-menu-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;font-size:17px;background:var(--ink);color:var(--bg);border:none;border-radius:var(--r-sm);cursor:pointer}}@media(max-width:760px){.about-grid,.skill-row{grid-template-columns:1fr}.about-prose,.skill-chips{grid-column:auto}.oss-grid{grid-template-columns:1fr}.proj{padding:26px 22px}.form-panel{padding:24px 20px}}@media(max-width:560px){.info-row,.hero-rail .row{grid-template-columns:1fr;gap:4px}}.blog-index{max-width:720px;margin:0 auto;padding:0 var(--gut) clamp(48px,7vw,80px)}.blog-head{padding:clamp(44px,7vw,72px) 0 clamp(22px,3.5vw,34px)}.blog-head h1{font-size:clamp(32px,5vw,48px);line-height:1.05;letter-spacing:-.035em;text-wrap:balance}.blog-head .desc{margin:16px 0 0;font-size:16.5px;line-height:1.65;color:var(--ink-mute);max-width:56ch;text-wrap:pretty}.blog-list{list-style:none;margin:0;padding:0}.blog-item{border-top:1px solid var(--line)}.blog-item a{display:grid;grid-template-columns:130px 1fr;gap:clamp(20px,3vw,44px);padding:26px 0 28px}.blog-item .when{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--ink-faint);padding-top:7px}.blog-item h3{font-size:clamp(22px,2.4vw,30px);letter-spacing:-.035em;line-height:1.15;margin-bottom:8px;transition:color .2s}.blog-item a:hover h3{color:var(--accent)}.blog-item p{margin:0;font-size:15.5px;line-height:1.65;color:var(--ink-mute);max-width:62ch;text-wrap:pretty}.blog-item .min{font-family:var(--mono);font-size:11px;letter-spacing:.05em;color:var(--ink-dim);margin-top:10px}.post{max-width:720px;margin:0 auto;padding:0 var(--gut)}.post-head{padding:clamp(48px,7vw,84px) 0 clamp(28px,4vw,40px);border-bottom:1px solid var(--line)}.post-meta{display:flex;flex-wrap:wrap;gap:8px 18px;font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;color:var(--ink-faint);margin-bottom:22px}.post-meta .ac{color:var(--accent)}.post-title{font-size:clamp(34px,6vw,58px);line-height:1.02;letter-spacing:-.04em;text-wrap:balance}.post-standfirst{margin:22px 0 0;font-family:var(--display);font-weight:400;font-size:clamp(17px,2vw,20px);line-height:1.5;letter-spacing:-.015em;color:var(--ink-mute);text-wrap:pretty}.post-body{padding:clamp(32px,5vw,48px) 0 clamp(56px,8vw,96px)}.post-body p{margin:0 0 20px;font-size:16.5px;line-height:1.75;color:var(--ink-body);text-wrap:pretty}.post-body strong{font-weight:600;color:var(--ink)}.post-body h2{font-size:clamp(24px,3vw,32px);letter-spacing:-.03em;line-height:1.15;margin:clamp(40px,6vw,60px) 0 16px;padding-top:24px;border-top:1px solid var(--line)}.post-body h3{font-size:19px;letter-spacing:-.02em;line-height:1.3;margin:34px 0 12px}.post-body a{color:var(--accent);border-bottom:1px solid color-mix(in srgb,var(--accent) 30%,transparent);transition:border-color .2s}.post-body a:hover{border-bottom-color:var(--accent)}.post-body ul{margin:0 0 20px;padding:0;list-style:none;display:grid;gap:10px}.post-body ul li{position:relative;padding-left:20px;font-size:16px;line-height:1.65;color:var(--ink-body);text-wrap:pretty}.post-body ul li:before{content:"";position:absolute;left:0;top:.66em;width:7px;height:1px;background:var(--accent)}.post-body code{font-family:var(--mono);font-size:.86em;color:var(--ink-soft);background:var(--bg-2);border:1px solid var(--line-soft);border-radius:5px;padding:1px 5px;white-space:nowrap}.post-body pre{margin:0 0 20px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);padding:16px 18px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}.post-body pre code{background:none;border:none;padding:0;font-size:13px;line-height:1.7;color:var(--ink-soft);white-space:pre}.post-body pre .c{color:var(--ink-faint)}.post-body pre .k{color:var(--accent)}.math{font-family:var(--mono);font-size:14px;line-height:2;color:var(--ink);text-align:center}figure.demo{margin:28px 0}.demo-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.demo-panel svg{display:block;width:100%;height:auto;touch-action:none}.demo-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;border-top:1px solid var(--line);padding:12px 16px;font-family:var(--mono);font-size:11.5px;letter-spacing:.03em;color:var(--ink-mute)}.demo-controls label{display:inline-flex;align-items:center;gap:10px}.demo-controls .readout{color:var(--accent);min-width:8ch}.demo-controls .spacer{flex:1}figure.demo figcaption{font-family:var(--mono);font-size:11.5px;line-height:1.6;color:var(--ink-faint);margin-top:10px}figure.demo figcaption b{font-weight:500;color:var(--ink-mute)}.demo-btn{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--ink-mute);background:transparent;border:1px solid var(--line-2);border-radius:6px;padding:6px 11px;cursor:pointer;transition:color .18s,border-color .18s}.demo-btn:hover{color:var(--accent);border-color:var(--accent)}.demo-btn[aria-pressed=true]{color:var(--accent);border-color:var(--accent);background:var(--accent-wash)}input[type=range].demo-range{appearance:none;-webkit-appearance:none;width:170px;height:24px;background:none;cursor:pointer}input[type=range].demo-range::-webkit-slider-runnable-track{height:2px;background:var(--line-2);border-radius:1px}input[type=range].demo-range::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);border:none;margin-top:-6px}input[type=range].demo-range::-moz-range-track{height:2px;background:var(--line-2);border-radius:1px}input[type=range].demo-range::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:none}input[type=range].demo-range:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.demo-panel .curve{fill:none;stroke:var(--accent);stroke-width:2.5}.demo-panel .curve-faint{fill:none;stroke:color-mix(in srgb,var(--accent) 30%,transparent);stroke-width:1.5}.demo-panel .poly{fill:none;stroke:var(--line-2);stroke-width:1;stroke-dasharray:4 5}.demo-panel .cons{fill:none;stroke:var(--amber);stroke-width:1.25}.demo-panel .cons-dot{fill:var(--amber)}.demo-panel .on-curve{fill:var(--accent)}.demo-panel .flat-seg{fill:none;stroke:var(--accent);stroke-width:1.75}.demo-panel .flat-dot{fill:var(--bg);stroke:var(--accent);stroke-width:1.5}.demo-panel .axis{stroke:var(--line);stroke-width:1}.demo-panel .glabel{font-family:var(--mono);font-size:11px;fill:var(--ink-faint)}.demo-panel .handle{fill:var(--panel-2);stroke:var(--ink-mute);stroke-width:1.5;cursor:grab}.demo-panel .handle:hover,.demo-panel .handle:focus-visible{stroke:var(--accent);stroke-width:2}.demo-panel .handle:focus-visible{outline:none}.demo-panel .handle:active{cursor:grabbing}.demo-panel .handle-hit{fill:transparent;cursor:grab}.ease-preview{position:relative;border-top:1px solid var(--line);height:56px}.ease-preview .track{position:absolute;left:16px;right:16px;top:50%;height:1px;background:var(--line-2)}.ease-preview .ball{position:absolute;left:16px;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--accent);transform:translate(0)}@media(max-width:640px){.blog-item a{grid-template-columns:1fr;gap:6px;padding:22px 0 24px}.blog-item .when{padding-top:0}.demo-controls{padding:12px 14px}input[type=range].demo-range{width:130px}}body{display:flex;flex-direction:column;min-height:100svh}body>main{flex:1}.mast{border-bottom:1px solid var(--line);background:var(--bg)}.mast-inner{max-width:720px;margin:0 auto;padding:18px var(--gut);display:flex;align-items:center;justify-content:space-between;gap:16px}.mast-sep{color:var(--ink-dim);font-weight:400;margin:0 1px}.blog-foot{border-top:1px solid var(--line)}.blog-foot-inner{max-width:720px;margin:0 auto;padding:30px var(--gut) 40px}.foot-kicker{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:12px}.foot-about{margin:0 0 18px;font-size:15px;line-height:1.7;color:var(--ink-mute);max-width:56ch;text-wrap:pretty}.foot-about a{color:var(--ink);border-bottom:1px solid var(--line-2);transition:color .2s,border-color .2s}.foot-about a:hover{color:var(--accent);border-color:var(--accent)}.foot-brand{font-family:var(--mono);font-weight:400;font-size:12.5px;color:var(--ink-faint)}.foot-brand:hover{color:var(--accent)}
