:root{--c-1: #4F46E5;--c-2: #7C3AED;--c-3: #0D9488;--grad: linear-gradient(100deg, #4F46E5, #7C3AED 55%, #0D9488);--grad-soft: linear-gradient(135deg, rgba(79,70,229,.1), rgba(124,58,237,.06) 55%, rgba(13,148,136,.1));--hero-bg: linear-gradient(150deg, #1B1746 0%, #241a55 55%, #15303a 120%);--foot-bg: linear-gradient(135deg, #EEF0FF 0%, #F1ECFF 50%, #E6FBF7 100%);--c-1-soft: rgba(79, 70, 229, .1);--c-2-soft: rgba(124, 58, 237, .1);--c-3-soft: rgba(13, 148, 136, .1);--sk-1: #4F46E5;--sk-1-soft: rgba(79, 70, 229, .1);--sk-2: #0D9488;--sk-2-soft: rgba(13, 148, 136, .1);--sk-3: #9333EA;--sk-3-soft: rgba(147, 51, 234, .1);--sk-4: #D97706;--sk-4-soft: rgba(217, 119, 6, .12);--sk-4-ink: #B45309;--display: "Plus Jakarta Sans", sans-serif;--tag-font: "JetBrains Mono", monospace;--paper: #F7F7FB;--card: #FFFFFF;--ink: #171A33;--body-ink: #3a3f5c;--muted: #5E6480;--line: #E7E8F0;--maxw: 1080px;--radius: 16px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition-duration:.001ms!important}}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased}::selection{background:var(--c-2);color:#fff}a{color:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--c-1);outline-offset:3px;border-radius:5px}h1,h2,h3{font-family:var(--display);margin:0;letter-spacing:-.02em;font-weight:700}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}header.nav{position:sticky;top:0;z-index:50;background:#ffffffb8;backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.nav-inner{max-width:var(--maxw);margin:0 auto;padding:14px 28px;display:flex;align-items:center;justify-content:space-between}.nav-mark{font-family:var(--display);font-weight:700;font-size:1.05rem;text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:9px}.nav-mark .dot{width:9px;height:9px;border-radius:50%;background:var(--grad)}.nav-links{display:flex;gap:26px;list-style:none;margin:0;padding:0;font-size:.9rem}.nav-links a{text-decoration:none;color:var(--muted);transition:color .15s}.nav-links a:hover{color:var(--ink)}@media(max-width:640px){.nav-links{display:none}}.hero{position:relative;overflow:hidden;background:var(--hero-bg);color:#fff;padding:92px 0 100px}.hero:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse 90% 80% at 40% 20%,black 30%,transparent 80%)}.hero:after{content:"";position:absolute;width:520px;height:520px;right:-120px;top:-140px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(124,58,237,.5),transparent 62%);filter:blur(30px);opacity:.55}.hero-inner{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:center}@media(max-width:860px){.hero-inner{grid-template-columns:1fr;gap:36px}}.eyebrow{font-family:var(--tag-font);font-size:.8rem;color:#fff;background:#ffffff14;border:1px solid rgba(255,255,255,.16);display:inline-flex;align-items:center;gap:9px;padding:7px 14px;border-radius:999px;margin-bottom:26px;animation:fadeUp .7s ease both}.eyebrow .pulse{width:7px;height:7px;border-radius:50%;background:#34d399;box-shadow:0 0 #34d399b3;animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 #34d39999}70%{box-shadow:0 0 0 10px #34d39900}to{box-shadow:0 0 #34d39900}}.hero h1{font-size:clamp(2.5rem,6vw,4.1rem);font-weight:800;line-height:1;animation:fadeUp .7s ease .08s both}.hero h1 .grad{background:linear-gradient(100deg,#a5b4fc,#c4b5fd 50%,#5eead4);-webkit-background-clip:text;background-clip:text;color:transparent}.hero .role{font-size:clamp(1.05rem,2.2vw,1.35rem);color:#ffffffd1;margin-top:22px;max-width:520px;animation:fadeUp .7s ease .16s both}.hero-cta{margin-top:34px;display:flex;gap:14px;flex-wrap:wrap;animation:fadeUp .7s ease .24s both}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.terminal{background:#00000057;border:1px solid rgba(255,255,255,.14);border-radius:12px;overflow:hidden;box-shadow:0 24px 60px #0000006b;animation:fadeUp .7s ease .3s both}.term-bar{display:flex;align-items:center;gap:7px;padding:11px 14px;background:#ffffff0d;border-bottom:1px solid rgba(255,255,255,.09)}.term-bar .d{width:11px;height:11px;border-radius:50%}.term-bar .d1{background:#ff5f57}.term-bar .d2{background:#febc2e}.term-bar .d3{background:#28c840}.term-bar .title{margin-left:8px;font-family:var(--tag-font);font-size:.74rem;color:#ffffff8c}.term-body{padding:18px 18px 20px;font-family:JetBrains Mono,monospace;font-size:.82rem;line-height:1.85;min-height:230px}.term-body .line{white-space:pre-wrap}.term-body .prompt{color:#34d399}.term-body .hash{color:#fbbf24}.term-body .ref{color:#a5b4fc}.term-body .msg{color:#ffffffe6}.term-body .dim{color:#ffffff73}.term-body .build{color:#5eead4;font-weight:600}.term-cursor{display:inline-block;width:8px;height:1.05em;background:#34d399;vertical-align:-.15em;animation:blink 1s step-end infinite}.rot-out{display:inline-block;color:#5eead4;transition:opacity .38s ease,transform .38s ease}.rot-out.rot-leaving{opacity:0;transform:translateY(-6px)}.rot-out.rot-entering{opacity:0;transform:translateY(6px)}@keyframes blink{50%{opacity:0}}.btn{font-family:var(--tag-font);font-size:.85rem;padding:13px 22px;border-radius:10px;text-decoration:none;display:inline-flex;align-items:center;gap:8px;transition:transform .16s ease,box-shadow .16s ease;cursor:pointer;border:none}.btn-primary{background:var(--grad);color:#fff;box-shadow:0 10px 26px #4f46e566}.btn-primary:hover{transform:translateY(-3px);box-shadow:0 16px 36px #4f46e58c}.btn-ghost{background:#ffffff0f;color:#fff;border:1px solid rgba(255,255,255,.2)}.btn-ghost:hover{transform:translateY(-3px);background:#ffffff1f}.btn-dark{background:var(--ink);color:#fff}.btn-dark:hover{transform:translateY(-3px);box-shadow:0 14px 30px #171a3340}.btn-outline{background:#fff9;color:var(--ink);border:1px solid rgba(23,26,51,.15)}.btn-outline:hover{transform:translateY(-3px);background:#fff}section{padding:80px 0;position:relative}#about{background:linear-gradient(180deg,#FBFBFE 0%,var(--paper) 100%)}#skills{background:var(--grad-soft)}.sec-label{font-family:var(--tag-font);font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px;display:inline-flex;align-items:center;gap:8px;color:var(--c-1)}.sec-label:before{content:"";width:22px;height:2px;background:var(--grad);border-radius:2px}.sec-title{font-size:clamp(1.7rem,3.6vw,2.4rem);margin-bottom:30px;max-width:640px}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}.reveal.in{opacity:1;transform:translateY(0)}.about-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:44px;align-items:start}@media(max-width:820px){.about-grid{grid-template-columns:1fr;gap:32px}}.about-body{font-size:1.08rem;color:var(--body-ink)}.about-body p{margin:0 0 18px}.about-body .accent{color:var(--ink);font-weight:600;background:linear-gradient(transparent 62%,var(--c-2-soft) 62%)}.about-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:36px}@media(max-width:520px){.about-stats{grid-template-columns:1fr}}.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 16px;position:relative;overflow:hidden}.stat:before{content:"";position:absolute;top:0;left:0;width:100%;height:4px}.stat.s1:before{background:var(--c-1)}.stat.s2:before{background:var(--c-2)}.stat.s3:before{background:var(--c-3)}.stat .num{font-family:var(--display);font-size:1.4rem;font-weight:700}.stat.s1 .num{color:var(--c-1)}.stat.s2 .num{color:var(--c-2)}.stat.s3 .num{color:var(--c-3)}.stat .label{font-size:.78rem;color:var(--muted);margin-top:5px}.now-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:6px;box-shadow:0 20px 50px #171a3312;position:sticky;top:90px}.now-card .inner{border-radius:12px;background:var(--grad-soft);padding:24px 22px}.now-head{display:flex;align-items:center;gap:9px;font-family:var(--tag-font);font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--c-1);margin-bottom:18px}.now-head .live{width:8px;height:8px;border-radius:50%;background:#10b981;box-shadow:0 0 #10b981b3;animation:pulse 2s infinite}.now-row{display:flex;gap:12px;padding:12px 0;border-top:1px solid rgba(23,26,51,.07)}.now-row:first-of-type{border-top:none}.now-row .k{font-family:var(--tag-font);font-size:.72rem;color:var(--muted);width:74px;flex-shrink:0;padding-top:2px}.now-row .v{font-size:.95rem;color:var(--ink);font-weight:500}.now-row .v small{display:block;color:var(--muted);font-weight:400;font-size:.82rem;margin-top:2px}.log{border-left:2px solid var(--line);margin-left:6px}.commit{position:relative;padding:0 0 42px 34px}.commit:last-child{padding-bottom:4px}.commit:before{content:"";position:absolute;left:-8px;top:5px;width:14px;height:14px;border-radius:50%;background:var(--card);border:3px solid var(--c-1)}.commit.c-2:before{border-color:var(--c-2)}.commit.c-3:before{border-color:var(--c-3)}.commit.current:before{background:var(--c-1);box-shadow:0 0 0 5px var(--c-1-soft)}.commit-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:5px}.commit-tag{font-family:var(--tag-font);font-size:.76rem;font-weight:600;color:#fff;padding:3px 9px;border-radius:6px;background:var(--c-1)}.commit.c-2 .commit-tag{background:var(--c-2)}.commit.c-3 .commit-tag{background:var(--c-3)}.commit-role{font-size:1.18rem;font-weight:600;font-family:var(--display)}.commit-org{color:var(--muted);font-weight:500}.commit-date{font-family:var(--tag-font);font-size:.79rem;color:var(--muted);margin-bottom:12px}.commit-desc{color:var(--body-ink);max-width:640px;margin-bottom:14px}.tags{display:flex;flex-wrap:wrap;gap:8px}.tag{font-family:var(--tag-font);font-size:.73rem;background:var(--paper);color:var(--body-ink);border:1px solid var(--line);padding:4px 10px;border-radius:7px}.skill-groups{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}@media(max-width:720px){.skill-groups{grid-template-columns:1fr}}.skill-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:32px 32px 34px;transition:transform .18s ease,box-shadow .18s ease}.skill-card:hover{transform:translateY(-4px);box-shadow:0 22px 50px #171a3317}.skill-card h3{font-size:1.1rem;margin-bottom:6px;display:flex;align-items:center;gap:10px}.skill-card .ksub{font-size:.82rem;color:var(--muted);margin:0 0 20px 21px}.skill-card h3 .chip{width:11px;height:11px;border-radius:3px;transform:rotate(45deg);display:inline-block}.skill-card.k1 h3 .chip{background:var(--sk-1)}.skill-card.k2 h3 .chip{background:var(--sk-2)}.skill-card.k3 h3 .chip{background:var(--sk-3)}.skill-card.k4 h3 .chip{background:var(--sk-4)}.skill-card ul{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:9px}.skill-card li{font-size:.86rem;padding:7px 13px;border-radius:8px;color:var(--body-ink);transition:all .15s;border:1px solid transparent}.skill-card.k1 li{background:var(--sk-1-soft)}.skill-card.k2 li{background:var(--sk-2-soft)}.skill-card.k3 li{background:var(--sk-3-soft)}.skill-card.k4 li{background:var(--sk-4-soft)}.skill-card.k1 li:hover{color:var(--sk-1);border-color:var(--sk-1)}.skill-card.k2 li:hover{color:var(--sk-2);border-color:var(--sk-2)}.skill-card.k3 li:hover{color:var(--sk-3);border-color:var(--sk-3)}.skill-card.k4 li:hover{color:var(--sk-4-ink);border-color:var(--sk-4)}.learning-banner{margin-top:30px;border-radius:var(--radius);padding:26px 28px;display:flex;gap:16px;align-items:flex-start;background:var(--card);border:1px solid var(--line)}.learning-banner .icon{font-family:JetBrains Mono,monospace;font-weight:700;font-size:1.2rem;color:var(--c-1)}.learning-banner p{margin:0;color:var(--body-ink)}.learning-banner .tiny{display:block;margin-top:6px;font-size:.82rem;color:var(--muted)}.learning-banner .tiny a{color:var(--c-1)}.edu-list{display:flex;flex-direction:column;gap:16px}.edu-item{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:22px 24px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);border-left:4px solid var(--c-2)}.edu-item .school{font-weight:600;font-family:var(--display)}.edu-item .prog{color:var(--muted);font-size:.92rem;margin-top:3px}.edu-item .when{font-family:var(--tag-font);font-size:.8rem;color:var(--c-2);white-space:nowrap}footer{position:relative;overflow:hidden;background:var(--foot-bg);color:var(--ink);padding:90px 0 50px}footer:after{content:"";position:absolute;left:0;top:0;width:100%;height:4px;background:var(--grad)}.contact-title{font-size:clamp(2.1rem,4.6vw,3rem);margin-bottom:18px}.foot-lead{max-width:520px;color:var(--body-ink)}.contact-links{display:flex;gap:14px;flex-wrap:wrap;margin-top:28px}.foot-note{margin-top:56px;padding-top:24px;border-top:1px solid rgba(23,26,51,.1);font-family:var(--tag-font);font-size:.77rem;color:var(--muted);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}.writing-hero{background:var(--hero-bg);color:#fff;padding:72px 0 64px;position:relative;overflow:hidden}.writing-hero:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse 80% 100% at 20% 0%,black 40%,transparent 80%)}.writing-hero .wrap{position:relative;z-index:2}.writing-hero .sec-label{color:#ffffffd9}.writing-hero .sec-label:before{background:#fff6}.writing-title{font-size:clamp(2rem,5vw,3.2rem);font-weight:800;margin:10px 0 16px}.writing-lead{max-width:520px;color:#ffffffbf;font-size:1.05rem;margin:0}.writing-body{padding:60px 28px 80px;max-width:var(--maxw);margin:0 auto}.post-list{display:flex;flex-direction:column;gap:24px;max-width:720px}.post-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:28px 32px;transition:transform .18s ease,box-shadow .18s ease}.post-card:hover{transform:translateY(-3px);box-shadow:0 16px 40px #171a3314}.post-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.post-meta time{font-family:var(--tag-font);font-size:.78rem;color:var(--muted)}.post-title{font-family:var(--display);font-size:1.25rem;font-weight:700;margin:0 0 10px;letter-spacing:-.02em}.post-title a{text-decoration:none;color:var(--ink)}.post-title a:hover{color:var(--c-1)}.post-desc{color:var(--body-ink);margin:0 0 16px;font-size:.95rem}.post-read{font-family:var(--tag-font);font-size:.82rem;color:var(--c-1);text-decoration:none;font-weight:500}.post-read:hover{text-decoration:underline}.writing-empty{color:var(--muted);font-family:var(--tag-font);font-size:.9rem;padding:40px 0}.post-wrap{max-width:720px;margin:0 auto;padding:48px 0 80px}.back-link{font-family:var(--tag-font);font-size:.82rem;color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;gap:6px;margin-bottom:36px}.back-link:hover{color:var(--ink)}.post-header{margin-bottom:40px;padding-bottom:32px;border-bottom:1px solid var(--line)}.post-h1{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;letter-spacing:-.02em;margin:12px 0 16px}.post-description{font-size:1.1rem;color:var(--muted);margin:0;max-width:580px}.prose{color:var(--body-ink);font-size:1.05rem;line-height:1.78}.prose :is(h2,h3){color:var(--ink);letter-spacing:-.02em}.prose h2{font-family:var(--display);font-size:1.5rem;font-weight:700;margin:2.5rem 0 .75rem}.prose h3{font-family:var(--display);font-size:1.2rem;font-weight:600;margin:2rem 0 .6rem;letter-spacing:-.01em}.prose p{margin:0 0 1.25rem}.prose a{color:var(--c-1);text-decoration:underline;text-underline-offset:3px}.prose a:hover{color:var(--c-2)}.prose strong{color:var(--ink);font-weight:600}.prose ul,.prose ol{margin:0 0 1.25rem;padding-left:1.5rem}.prose li{margin-bottom:.4rem}.prose code{font-family:var(--tag-font);font-size:.87em;background:var(--c-1-soft);color:var(--c-1);padding:2px 6px;border-radius:5px}.prose pre{background:var(--ink);color:#e5e7eb;padding:20px 24px;border-radius:12px;overflow-x:auto;margin:0 0 1.5rem;font-family:var(--tag-font);font-size:.88rem;line-height:1.6}.prose pre code{background:none;color:inherit;padding:0;font-size:inherit}.prose blockquote{border-left:3px solid var(--c-2);margin:0 0 1.25rem;padding:12px 20px;background:var(--c-2-soft);border-radius:0 8px 8px 0;font-style:italic;color:var(--ink)}.prose hr{border:none;border-top:1px solid var(--line);margin:2.5rem 0}
