:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}:root{--navy0:#050814;--navy1:#070A12;--panel: rgba(255,255,255,.06);--panel2: rgba(255,255,255,.04);--border: rgba(255,255,255,.1);--text: rgba(255,255,255,.92);--muted: rgba(255,255,255,.66);--teal: #2DD4BF;--teal2:#14B8A6;--shadow: 0 24px 80px rgba(0,0,0,.45)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;color:var(--text);background:radial-gradient(900px 520px at 12% 10%,rgba(45,212,191,.18),transparent 60%),radial-gradient(900px 520px at 85% 18%,rgba(20,184,166,.14),transparent 55%),linear-gradient(180deg,var(--navy0),var(--navy1))}a{color:inherit;text-decoration:none}a:hover{opacity:.92}.app{min-height:100vh;position:relative}.bgGlow{position:fixed;inset:0;pointer-events:none;opacity:.25;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.12) 1px,transparent 0);background-size:22px 22px;-webkit-mask-image:radial-gradient(closest-side at 50% 15%,black 0%,transparent 70%);mask-image:radial-gradient(closest-side at 50% 15%,black 0%,transparent 70%)}.wrap{width:100%;max-width:none;margin:0 auto;padding-left:40px;padding-right:56px}.topbar{position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#05081499;border-bottom:1px solid rgba(255,255,255,.06)}.topbarInner{display:flex;align-items:center;justify-content:space-between;padding:14px 0}.brand{display:flex;align-items:center;gap:10px;font-weight:750;letter-spacing:.2px}.brandDot{width:10px;height:10px;border-radius:999px;background:var(--teal);box-shadow:0 0 0 6px #2dd4bf24}.nav{display:flex;gap:18px;font-size:13px;color:var(--muted)}.nav a:hover{color:var(--text)}.nav a{position:relative}.nav a:after{content:"";position:absolute;left:0;bottom:-6px;width:100%;height:2px;background:#2dd4bfb3;transform:scaleX(0);transform-origin:left;transition:transform .22s ease;border-radius:999px}.nav a:hover:after{transform:scaleX(1)}.hero{margin-left:auto;margin-right:auto;padding:52px 0 26px;display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:start}.heroRight{display:flex;justify-content:flex-end}.kicker{margin:0 0 10px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#ffffffb3}.h1{margin:0;font-size:clamp(34px,4.5vw,52px);line-height:1.06;letter-spacing:-.6px}.accent{color:var(--teal)}.lead{margin:14px 0 0;line-height:1.75;color:var(--muted);max-width:62ch}.heroActions{margin-top:18px;display:flex;gap:12px;flex-wrap:wrap}.heroLinks{margin-top:16px;display:flex;flex-wrap:wrap;gap:10px}.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 16px;border-radius:14px;font-weight:650;border:1px solid transparent;cursor:pointer;position:relative;overflow:hidden;transition:transform .12s ease,opacity .12s ease}.btn:active{transform:translateY(1px)}.btn.primary{background:linear-gradient(135deg,var(--teal),var(--teal2));color:#061018;box-shadow:0 18px 50px #2dd4bf29}.btn.ghost{background:#ffffff0a;border-color:#ffffff1f;color:var(--text)}.btn:after{content:"";position:absolute;top:-40%;left:-60%;width:60%;height:180%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);transform:rotate(18deg);opacity:0}.btn:hover:after{animation:shine .8s ease;opacity:1}.chipLink{display:inline-flex;align-items:center;gap:10px;padding:10px 12px;border-radius:999px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);color:#ffffffdb;font-size:13px}.arrow{color:#fff9}.profileCard{width:100%;max-width:520px;margin-left:auto;border-radius:18px;background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);overflow:hidden;position:sticky;top:84px}.profileTop{display:flex;gap:12px;align-items:center;padding:14px;border-bottom:1px solid rgba(255,255,255,.08)}.avatar{width:200px;height:200px;border-radius:20px;overflow:hidden;background:#00000040;border:1px solid rgba(255,255,255,.14);box-shadow:0 0 0 3px #2dd4bf1f,0 12px 30px #00000073}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.profileName{font-weight:750}.profileMeta{color:var(--muted);font-size:13px;margin-top:2px}.profileGrid{display:grid;grid-template-columns:1fr;gap:10px;padding:14px}.mini{padding:12px;border-radius:16px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08)}.miniLabel{color:#ffffff9e;font-size:12px}.miniValue{margin-top:4px;font-weight:650}.section{padding:40px 0}.sectionHead{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;align-items:baseline;margin-bottom:14px}.sectionHead h2{margin:0;font-size:22px;letter-spacing:-.2px}.sectionHead p{margin:0;color:var(--muted)}.card{background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:16px}.cardTitle{font-weight:750}.cardMeta{margin-top:4px;color:var(--muted);font-size:13px}.cardBody{margin:10px 0 0;color:#ffffffd1;line-height:1.7}.cardRow{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.cardHover{position:relative;overflow:hidden;transition:transform .14s ease,border-color .14s ease,box-shadow .2s ease}.cardHover:before{content:"";position:absolute;inset:-2px;background:radial-gradient(600px 160px at 25% 0%,rgba(45,212,191,.18),transparent 60%);opacity:0;transition:opacity .25s ease;pointer-events:none}.cardHover:hover{transform:translateY(-4px);border-color:#2dd4bf47;box-shadow:0 22px 70px #0000008c}.cardHover:hover:before{opacity:1}.pillBtn{padding:9px 12px;border-radius:999px;background:#2dd4bf1a;border:1px solid rgba(45,212,191,.2);color:#ffffffe6;font-size:13px}.cardGrid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.cardGrid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.skillsGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.pillWrap{margin-top:12px;display:flex;flex-wrap:wrap;gap:10px}.pill{font-size:12px;padding:7px 10px;border-radius:999px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);color:#ffffffdb}.projectImageGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:12px}.projectImageGrid.one{grid-template-columns:1fr}.projectImageWrap{border-radius:14px;overflow:hidden;border:1px solid rgba(255,255,255,.08);background:#ffffff08;aspect-ratio:16 / 9}.projectImageWrap.containMode{aspect-ratio:auto;padding:10px;background:#00000040}.projectImage{width:100%;height:100%;display:block;object-fit:cover;transition:transform .45s ease,filter .45s ease;filter:saturate(1.02) contrast(1.02)}.projectImageWrap.containMode .projectImage{height:auto;object-fit:contain}.cardHover:hover .projectImage{transform:scale(1.04);filter:saturate(1.08) contrast(1.05)}.timeline{display:grid;gap:14px}.tItem{display:grid;grid-template-columns:26px 1fr;gap:12px;align-items:stretch}.tRail{display:flex;flex-direction:column;align-items:center;padding-top:18px}.tDot{width:10px;height:10px;border-radius:999px;background:var(--teal);box-shadow:0 0 0 6px #2dd4bf1f}.tLine{width:2px;flex:1;margin-top:10px;background:#ffffff1a;border-radius:999px}.list{margin:12px 0 0;padding-left:18px;color:#ffffffd6;line-height:1.7}.footer{padding:16px 0 44px}.modalOverlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:18px;background:#0000009e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{width:min(560px,100%);background:#0b0f1a;border:1px solid rgba(255,255,255,.14);border-radius:18px;box-shadow:0 30px 120px #000000b3;padding:14px}.modalHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:12px}.modalTitle{font-weight:800}.modalSub{color:#ffffffa8;font-size:13px;margin-top:4px}.iconBtn{display:grid;place-items:center;line-height:1;font-size:18px;padding:0;width:38px;height:38px;background:#ffffff0f;border:1px solid rgba(255,255,255,.14);color:#ffffffeb;border-radius:12px;cursor:pointer}.form{display:grid;gap:10px}.form label span{display:block;font-size:12px;color:#ffffffad;margin-bottom:6px}.form input,.form textarea{width:100%;padding:10px 12px;border-radius:14px;border:1px solid rgba(255,255,255,.12);background:#0003;color:#ffffffeb;outline:none}.form input:focus,.form textarea:focus{border-color:#2dd4bf4d;box-shadow:0 0 0 6px #2dd4bf1a}.formRow{display:flex;align-items:center;gap:10px;margin-top:4px}.formNote{font-size:13px;color:#ffffffb3}.formNote.ok{color:#2dd4bff2}.formNote.err{color:#f87171f2}.formHint{margin-top:6px;font-size:12px;color:#fff9}@media(max-width:980px){.hero{grid-template-columns:1fr}.profileCard{position:relative;top:0}.cardGrid3,.cardGrid2,.skillsGrid{grid-template-columns:1fr}}@media(max-width:520px){.modalOverlay{place-items:end center}.modal{width:100%;border-bottom-left-radius:0;border-bottom-right-radius:0}}.bgGlow{animation:glowDrift 14s ease-in-out infinite}@keyframes glowDrift{0%{transform:translateZ(0) scale(1);opacity:.22}50%{transform:translate3d(18px,-10px,0) scale(1.02);opacity:.28}to{transform:translateZ(0) scale(1);opacity:.22}}[data-reveal]{opacity:0;transform:translateY(16px);filter:blur(6px);transition:opacity .6s ease,transform .6s ease,filter .7s ease}[data-reveal].is-visible{opacity:1;transform:translateY(0);filter:blur(0)}.cardGrid2>*[data-reveal],.cardGrid3>*[data-reveal],.skillsGrid>*[data-reveal]{transition-delay:calc(var(--i, 0) * 80ms)}@keyframes shine{0%{transform:translate(0) rotate(18deg)}to{transform:translate(240%) rotate(18deg)}}
