:root{color-scheme:light;--bg:#fff8f0;--panel:#fffdf9;--text:#202e46;--muted:#646a72;--blue:#215bcc;--line:#e6dcd0;--lime:#ac451e;--orange:#df682b}body{background:var(--bg)}header{height:96px}.brand{color:var(--text)}.brand span{color:var(--orange)}nav{color:#526077}nav a{position:relative;padding:8px 0}nav a:after{content:'';position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--orange);transform:scaleX(0);transform-origin:left;transition:transform .25s}nav a:hover:after,nav a[aria-current]:after{transform:scaleX(1)}.contact-link{border-color:#d8cabb;background:#fffdf9;color:#263d60}.hero{padding-top:68px;padding-bottom:75px;gap:65px}.eyebrow{color:#a44620;font-size:12px;letter-spacing:1.6px}.hero h1{font-size:clamp(62px,6.7vw,91px);font-weight:600;letter-spacing:-5px}.blue{color:var(--orange)}.intro{font-size:26px}.intro em{font-style:normal;color:var(--blue)}.hero-description{font-size:16px;line-height:1.8}.button{border-radius:30px;padding:14px 23px;transition:transform .25s,box-shadow .25s,background .25s}.button:hover{transform:translateY(-3px);box-shadow:0 8px 20px #25375516}.primary{background:#215bcc;color:white}.primary:hover{background:#154aaa;color:white}.secondary{border-color:#d2c4b4;background:transparent}.hero-note{color:#65676d;gap:8px}.hero-note strong{color:#9d421e}.small-line{background:#d8662c}.portrait-scene{position:relative;min-width:0;padding:22px 10px 20px}.portrait-scene:before{content:'';position:absolute;inset:37px -8px 0 26px;background:#f2ac69;border-radius:90px 20px 90px 20px;transform:rotate(5deg)}.portrait{height:510px;min-height:0;max-height:none;border-radius:85px 18px 85px 18px;transform:rotate(-2deg);border:7px solid #fffdf9;box-shadow:0 20px 45px #52351c1a;margin:0}.portrait img{object-position:49% center;transition:transform .7s}.portrait-scene:hover .portrait img{transform:scale(1.035)}.portrait:after{background:linear-gradient(transparent,#172338c9)}.photo-label{position:absolute;top:0;right:22px;font-size:12px;font-weight:600;letter-spacing:.3px;color:#9b481f;transform:rotate(3deg);z-index:2}.floating-logo{position:absolute;z-index:3;width:80px;height:80px;background:#fffefa;box-shadow:0 8px 28px #3a291724;border:1px solid #eee4d9;border-radius:20px;display:grid;place-items:center;animation:bob 6s ease-in-out infinite}.floating-logo img{object-fit:contain}.logo-react{left:-25px;top:80px;transform:rotate(-10deg)}.logo-ts{right:-15px;top:245px;animation-delay:-2s}.logo-ai{left:10px;bottom:-2px;width:70px;height:70px;animation-delay:-4s}.stack-strip{background:#f5ebdf;border-block:1px solid #e8dccc}.stack-strip .wrap{display:block;padding-block:23px}.strip-title{display:block;text-align:center;font-size:11px;letter-spacing:1.8px;color:#826a56!important;margin-bottom:20px}.logo-ribbon{display:flex;justify-content:space-around;gap:24px}.tech-logo{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-width:70px;transition:transform .25s;background:none;border:0}.tech-logo img{object-fit:contain;flex-shrink:0;transition:transform .3s}.tech-logo>span{color:#48546a;font-size:12px;line-height:1.4;text-align:center}.tech-logo:hover{transform:translateY(-5px)}.tech-logo:hover img{transform:rotate(-6deg)}.logo-ribbon>.tech-logo>img{width:36px;height:36px}.logo-ribbon>.tech-logo>span{font-size:12px;letter-spacing:0;color:#48546a}.section{padding-block:88px}h2{font-weight:500}.skill{border-radius:18px;border-color:#e6dacf;padding:28px;background:#fffdf9;box-shadow:0 5px 0 #eee1d33b;transition:transform .3s,box-shadow .3s}.skill:hover{transform:translateY(-7px);box-shadow:0 14px 30px #66472a0f}.skill-symbol{color:#b34e23;height:50px}.skill:nth-child(2) .skill-symbol{color:#215bcc}.skill:nth-child(3) .skill-symbol{color:#38785e}.skill h3{font-size:23px}.skill p{min-height:75px;font-size:15px;margin-bottom:25px}.tags{gap:18px 14px;align-items:start}.tags>.tech-logo{padding:0;border:0;min-width:62px;max-width:100px}.tags>.tech-logo>span{border:0;padding:0;color:#545c66;font-size:12px}.tags>.tech-logo img{width:33px;height:33px}.tags>span:not(.tech-logo){color:#5b5c62;border-color:#e3d8cb;background:#f8f1e8;font-size:12px}.learning{background:#f6e7d5;border-color:#e4cdb4;padding-block:75px}.learning .eyebrow{color:#94431f}.lemon-label{color:#624929}.lemon-label span{color:#705317;border-color:#c1a879;background:#fff7e1}.lime{color:#b24b20}.learning .muted{color:#67605a}.status{color:#814512;border-color:#caa477;background:#fff2de}.source-link{color:#754924}.module-note{color:#765f47}.learning-logos{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-bottom:30px}.learning-logos .tech-logo{min-width:46px}.learning-logos img{width:32px;height:32px}.modules details{border-color:#d9c3aa}.modules details:last-of-type{border-color:#d9c3aa}.modules summary{color:#3a393c}.modules summary:after{color:#ae4a20}.modules details p{color:#68605a}.learning-footnote{color:#756d63}.project{border-color:#e4d7c8;border-radius:20px;background:#fffdf9;overflow:hidden;position:relative;transition:transform .3s,box-shadow .3s}.project:hover{transform:translateY(-6px);box-shadow:0 15px 35px #76553415}.project:before{content:'';position:absolute;left:0;top:0;width:100%;height:5px;background:#e99351}.project:nth-child(2):before{background:#547abb}.project-top>span:first-child{color:#927357}.project-monogram{font-size:55px;color:#db793c;letter-spacing:-3px}.project:nth-child(2) .project-monogram{color:#527abc}.project h3{font-size:33px}.project .tags{gap:18px}.project .tags>.tech-logo img{width:28px;height:28px}.project p{min-height:100px}.repo-links{border-color:#e6dcd0;color:#215bcc}.more-projects>a{transition:padding .25s;color:#334767}.more-projects>a:hover{padding-left:10px}.more-projects small{color:#77746f}.timeline article{border-color:#e0b28b}.timeline article>span{color:#a74e23}.languages b{color:#75706a}.contact{background:#263e63;border-color:#263e63;color:#fff7ed;border-radius:24px 70px 24px 24px;position:relative}.contact .eyebrow{color:#ffd0a4}.contact .blue{color:#ffb875}.contact-bottom{color:#d3deed;border-color:#526683}.contact a:hover{color:#ffc58e}footer{color:#79736c}footer .brand{color:#263e63}.reading-progress{position:fixed;z-index:20;top:0;left:0;width:100%;height:3px;background:#d7672b;transform:scaleX(0);transform-origin:left;pointer-events:none}.reveal{opacity:0;transform:translateY(22px);transition:opacity .65s ease,transform .65s ease}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal.is-visible:hover{transform:translateY(-5px)}.section-heading.reveal.is-visible:hover,.timeline article.reveal.is-visible:hover{transform:none}.skill:nth-child(2){transition-delay:.07s}.skill:nth-child(3){transition-delay:.14s}@keyframes bob{0%,100%{translate:0 0;rotate:-4deg}50%{translate:0 -9px;rotate:3deg}}@media(max-width:1000px){.hero{gap:30px}.portrait{height:480px}.floating-logo{width:64px;height:64px}.logo-react{left:-12px}.logo-ts{right:-8px}.skill{padding:23px 20px}.skill p{min-height:100px}.tags{gap:16px 9px}}@media(max-width:720px){header{height:85px}.hero{padding-top:38px;gap:42px}.hero h1{font-size:70px;letter-spacing:-4px}.intro{font-size:25px}.portrait-scene{margin:0 12px}.portrait{height:410px;border-radius:60px 16px 60px 16px}.portrait-scene:before{border-radius:60px 16px 60px 16px}.floating-logo{width:62px;height:62px;border-radius:16px}.floating-logo img{width:34px;height:34px}.logo-react{top:55px;left:-17px}.logo-ts{top:220px;right:-17px}.logo-ai{bottom:0}.logo-ribbon{display:grid;grid-template-columns:repeat(3,1fr);gap:24px 12px}.stack-strip .wrap{padding-block:24px}.section{padding-block:58px}.skill p{min-height:0}.tags{gap:22px 20px}.skill{padding:25px}.skills-grid{gap:18px}.learning{padding-block:55px}.learning-logos{gap:20px}.project p{min-height:0}.contact{border-radius:20px 45px 20px 20px}.portrait-scene{max-width:490px}.hero-note{font-size:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}.floating-logo{translate:none;rotate:none}}
