:root{--bg: #FBF3D9;--bg-deep: #F3E6BC;--grid-line: #DCC583;--ink: #2A2313;--ink-soft: #6E5F3C;--ink-faint: #9B8A5E;--gold: #AD7C22;--gold-bright: #D9A63E;--forest: #1E4638;--forest-soft: #2E5C4B;--card: #FFFCF3;--card-border: #E7D9A2;--shadow: 30 30 10;--mx: 50%;--my: 30%}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:Manrope,sans-serif;overflow-x:hidden;position:relative;-webkit-font-smoothing:antialiased}::selection{background:var(--gold-bright);color:#fff}.grid-field{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:64px 64px;filter:blur(.6px);opacity:.55;-webkit-mask-image:radial-gradient(circle 480px at var(--mx) var(--my),black 0%,black 15%,transparent 72%);mask-image:radial-gradient(circle 480px at var(--mx) var(--my),black 0%,black 15%,transparent 72%);transition:mask-position .05s linear}.grid-field-static{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:64px 64px;filter:blur(1.4px);opacity:.22}.glow-orb{position:fixed;width:640px;height:640px;border-radius:50%;background:radial-gradient(circle,#d9a63e40,#d9a63e00 70%);top:-200px;right:-200px;z-index:0;pointer-events:none;filter:blur(10px)}.glow-orb-2{position:fixed;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,#1e46381f,#1e463800 70%);bottom:-160px;left:-160px;z-index:0;pointer-events:none;filter:blur(10px)}main,header,footer{position:relative;z-index:1}section{max-width:1120px;margin:0 auto;padding:120px 32px}.eyebrow{font-family:JetBrains Mono,monospace;font-size:12.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);display:flex;align-items:center;gap:10px;margin-bottom:22px}.eyebrow:before{content:"";width:26px;height:1px;background:var(--gold);display:inline-block}h1,h2,h3{font-family:Fraunces,serif;font-weight:600;color:var(--ink);line-height:1.05}.section-title{font-size:clamp(32px,4vw,46px);font-weight:500;position:relative;display:inline-block;margin-bottom:16px}.section-title svg{position:absolute;left:0;bottom:-10px;width:100%;height:12px}.section-sub{max-width:560px;color:var(--ink-soft);font-size:16.5px;line-height:1.65;margin-bottom:64px}p{color:var(--ink-soft);line-height:1.7}a{color:inherit;text-decoration:none}header{position:fixed;top:0;left:0;right:0;z-index:50;padding:22px 32px;display:flex;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fbf3d9b8;border-bottom:1px solid rgba(226,205,131,.5)}.logo{font-family:Fraunces,serif;font-weight:600;font-size:19px;letter-spacing:.01em}.logo span{color:var(--gold)}nav ul{list-style:none;display:flex;gap:36px}nav a{font-family:JetBrains Mono,monospace;font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);position:relative;padding-bottom:4px;transition:color .25s ease}nav a:after{content:"";position:absolute;left:0;bottom:0;width:0%;height:1px;background:var(--gold);transition:width .3s ease}nav a:hover{color:var(--ink)}nav a:hover:after{width:100%}@media (max-width: 720px){nav ul{display:none}}.hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding-top:140px;padding-bottom:80px}.hero-flex{display:flex;align-items:center;justify-content:space-between;gap:56px}.hero-left{flex:1;min-width:0}@media (max-width: 860px){.hero-flex{flex-direction:column-reverse;text-align:center}.hero-cta,.hero .eyebrow{justify-content:center}}.hero-name{font-size:clamp(52px,9vw,118px);font-weight:600;letter-spacing:-.01em;opacity:0;animation:rise .9s cubic-bezier(.2,.8,.2,1) .15s forwards}.hero-name em{font-style:italic;font-weight:300;color:var(--gold)}.hero-role{font-family:JetBrains Mono,monospace;font-size:15px;letter-spacing:.05em;color:var(--gold);margin-top:22px;opacity:0;animation:rise .9s cubic-bezier(.2,.8,.2,1) .35s forwards}.hero-desc{max-width:600px;margin-top:28px;font-size:17.5px;color:var(--ink-soft);opacity:0;animation:rise .9s cubic-bezier(.2,.8,.2,1) .5s forwards}.hero-cta{display:flex;gap:18px;margin-top:44px;opacity:0;animation:rise .9s cubic-bezier(.2,.8,.2,1) .65s forwards;flex-wrap:wrap}@keyframes rise{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}.btn{font-family:JetBrains Mono,monospace;font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;padding:16px 30px;border-radius:100px;display:inline-flex;align-items:center;gap:10px;transition:all .35s cubic-bezier(.2,.8,.2,1)}.btn-primary{background:var(--forest);color:#fbf3d9;box-shadow:0 8px 24px -8px #1e46388c}.btn-primary:hover{transform:translateY(-3px);box-shadow:0 14px 30px -10px #1e463899}.btn-ghost{border:1px solid var(--card-border);color:var(--ink)}.btn-ghost:hover{border-color:var(--gold);background:#d9a63e14;transform:translateY(-3px)}.btn-icon{display:inline-flex;align-items:center;gap:9px}.btn-icon svg{transition:transform .3s ease}.btn-icon:hover svg{transform:translateY(2px)}.hero-photo{display:flex;flex-direction:column;align-items:center;gap:22px;flex-shrink:0;opacity:0;animation:rise .9s cubic-bezier(.2,.8,.2,1) .25s forwards}.photo-circle{width:230px;height:230px;border-radius:50%;position:relative;background:var(--card);display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:0 30px 60px -26px #2a231359;transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s ease}.photo-circle:hover{transform:translateY(-6px) scale(1.02);box-shadow:0 40px 70px -26px #2a23136b}.photo-circle img{width:100%;height:100%;object-fit:cover;display:block}.photo-circle:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:1.5px dashed var(--gold);animation:spin-slow 26s linear infinite}.photo-circle:after{content:"";position:absolute;top:10px;right:10px;bottom:10px;left:10px;border-radius:50%;border:1px solid var(--card-border)}@keyframes spin-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.photo-initials{font-family:Fraunces,serif;font-size:54px;font-weight:600;color:var(--gold);letter-spacing:.02em;position:relative;z-index:1}.photo-caption{font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint)}.hero-meta{text-align:center;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--ink-faint);line-height:1.9}.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s cubic-bezier(.2,.8,.2,1),transform .8s cubic-bezier(.2,.8,.2,1)}.reveal.in{opacity:1;transform:translateY(0)}.about-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:start}@media (max-width: 800px){.about-grid{grid-template-columns:1fr}}.about-text p{font-size:16.5px;margin-bottom:18px}.about-text strong{color:var(--ink);font-weight:700}.edu-card{background:var(--card);border:1px solid var(--card-border);border-radius:18px;padding:26px 28px;margin-bottom:18px;transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease}.edu-card:hover{transform:translateY(-4px);box-shadow:0 20px 40px -20px #2a231340;border-color:var(--gold)}.edu-card .deg{font-family:Fraunces,serif;font-size:19px;font-weight:600;margin-bottom:6px}.edu-card .school{font-size:14px;color:var(--ink-soft)}.edu-card .score{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--gold);margin-top:10px;display:inline-block;background:#ad7c221a;padding:4px 10px;border-radius:20px}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;perspective:1200px}@media (max-width: 900px){.skills-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 520px){.skills-grid{grid-template-columns:1fr}}.skill-card{--accent: var(--forest);--accent-soft: rgba(30,70,56,.14);background:var(--card);border:1px solid var(--card-border);border-radius:18px;padding:26px 22px 20px;position:relative;overflow:hidden;cursor:default;transform-style:preserve-3d;will-change:transform;transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s ease,border-color .5s ease,background .5s ease}.skill-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:18px;background:radial-gradient(220px circle at var(--px,50%) var(--py,50%),rgba(251,243,217,.16),transparent 65%);opacity:0;transition:opacity .4s ease;pointer-events:none}.skill-card:hover{background:var(--accent);box-shadow:0 30px 50px -24px #11241d80;border-color:var(--accent)}.skill-card:hover:before{opacity:1}.skill-icon{width:40px;height:40px;border-radius:11px;background:var(--bg-deep);display:flex;align-items:center;justify-content:center;font-family:Fraunces,serif;font-weight:600;font-size:15px;color:var(--accent);margin-bottom:34px;transform:translateZ(28px);transition:transform .45s cubic-bezier(.2,.8,.2,1),background .45s ease,color .45s ease}.skill-card:hover .skill-icon{transform:translateZ(38px) scale(1.12) rotate(-8deg);background:var(--bg);color:var(--accent)}.skill-body{position:relative;transform:translateZ(16px)}.skill-name{font-weight:700;font-size:15.5px;margin-bottom:4px;transition:color .4s ease}.skill-card:hover .skill-name{color:var(--bg)}.skill-cat{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;transition:opacity .3s ease}.skill-note{max-height:0;opacity:0;overflow:hidden;font-size:12.5px;color:#fbf3d9d1;line-height:1.5;transition:max-height .45s cubic-bezier(.2,.8,.2,1),opacity .4s ease,margin .4s ease}.skill-card:hover .skill-cat{opacity:0;height:0}.skill-card:hover .skill-note{max-height:60px;opacity:1;margin-top:6px}.skill-index{position:absolute;top:22px;right:22px;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--card-border);transition:color .4s ease,transform .4s ease;transform:translateZ(10px)}.skill-card:hover .skill-index{color:#fbf3d98c;transform:translateZ(20px) scale(1.1)}.project-list{display:flex;flex-direction:column;gap:28px}.project-card{background:var(--card);border:1px solid var(--card-border);border-radius:22px;padding:40px;display:grid;grid-template-columns:90px 1fr;gap:32px;position:relative;overflow:hidden;transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s ease,border-color .5s ease}@media (max-width: 700px){.project-card{grid-template-columns:1fr;padding:28px}}.project-card:hover{transform:translateY(-6px);box-shadow:0 30px 60px -28px #2a231359;border-color:var(--gold-bright)}.project-card:after{content:"";position:absolute;top:-40%;left:-10%;width:60%;height:200%;background:linear-gradient(120deg,transparent,rgba(217,166,62,.14),transparent);transform:rotate(18deg) translate(-140%);transition:transform 1.1s ease;pointer-events:none}.project-card:hover:after{transform:rotate(18deg) translate(60%)}.project-mark{font-family:Fraunces,serif;font-size:15px;color:var(--gold);font-weight:600;letter-spacing:.02em}.project-title{font-family:Fraunces,serif;font-size:clamp(24px,2.6vw,30px);font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:12px}.project-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.project-head .project-title{margin-bottom:0}.gh-link{flex-shrink:0;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--ink);background:var(--bg-deep);transition:background .35s ease,color .35s ease,transform .35s cubic-bezier(.2,.8,.2,1)}.gh-link:hover{background:var(--forest);color:#fbf3d9;transform:translateY(-3px) rotate(-6deg)}.project-title .tag-major{font-family:JetBrains Mono,monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;background:var(--forest);color:#fbf3d9;padding:4px 10px;border-radius:20px}.project-desc{font-size:15.5px;max-width:660px}.timeline{position:relative;padding-left:36px}.timeline:before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:1px;background:linear-gradient(var(--gold-bright),var(--card-border))}.tl-item{position:relative;padding-bottom:48px}.tl-item:last-child{padding-bottom:0}.tl-dot{position:absolute;left:-36px;top:4px;width:13px;height:13px;border-radius:50%;background:var(--bg);border:2px solid var(--gold);transition:transform .4s ease,background .4s ease}.tl-item:hover .tl-dot{background:var(--gold);transform:scale(1.25)}.tl-period{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--ink-faint);letter-spacing:.04em;margin-bottom:6px}.tl-role{font-family:Fraunces,serif;font-size:21px;font-weight:600;margin-bottom:4px}.tl-org{font-size:14.5px;color:var(--gold);margin-bottom:12px;font-weight:600}.tl-item ul{padding-left:18px}.tl-item li{color:var(--ink-soft);font-size:14.5px;line-height:1.7;margin-bottom:4px}.contact-box{background:var(--forest);border-radius:28px;padding:70px 60px;text-align:center;position:relative;overflow:hidden}.contact-box:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:48px 48px}.contact-box h2{color:#fbf3d9;font-size:clamp(30px,4vw,44px);position:relative;margin-bottom:16px}.contact-box p{color:#fbf3d9bf;position:relative;max-width:480px;margin:0 auto 36px}.contact-links{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;position:relative}.contact-links a{font-family:JetBrains Mono,monospace;font-size:13px;letter-spacing:.04em;color:#2a2313;background:var(--gold-bright);padding:15px 26px;border-radius:100px;transition:transform .3s ease,background .3s ease}.contact-links a:hover{transform:translateY(-3px);background:#fbf3d9}.contact-links a.outline{background:transparent;color:#fbf3d9;border:1px solid rgba(251,243,217,.35)}.contact-links a.outline:hover{background:#fbf3d91a}footer{position:relative;background:var(--bg-deep);border-top:1px solid var(--card-border);text-align:center;padding:72px 32px 50px;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--ink-faint);overflow:hidden}footer:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:56px 56px;filter:blur(1px);opacity:.18;pointer-events:none}.footer-label{position:relative;display:flex;align-items:center;justify-content:center;gap:12px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:28px}.footer-label:before,.footer-label:after{content:"";width:34px;height:1px;background:var(--card-border)}.footer-socials{position:relative;display:flex;justify-content:center;gap:14px;margin-bottom:36px}.social-link{width:44px;height:44px;border-radius:50%;border:1px solid var(--card-border);background:var(--card);display:flex;align-items:center;justify-content:center;color:var(--ink-soft);transition:background .35s ease,color .35s ease,border-color .35s ease,transform .35s cubic-bezier(.2,.8,.2,1)}.social-link:hover{background:var(--forest);border-color:var(--forest);color:#fbf3d9;transform:translateY(-4px) scale(1.06)}.footer-bottom{position:relative;padding-top:26px;border-top:1px solid var(--card-border);max-width:360px;margin:0 auto}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}a:focus-visible,button:focus-visible{outline:2px solid var(--forest);outline-offset:3px}
