.work-grid{gap:18px}.work-card{border:1px solid var(--line);border-radius:22px;background:#f8fbfd;overflow:hidden}.project-art{height:210px;border:0}.project-art.q4{background:#d4e5f5!important}.project-art.where{background:#deebe7!important}.project-art:before{display:block}.project-art .external{background:rgba(255,255,255,.78)}.project-body{padding:25px 30px 28px}.project-body h3{margin:10px 0 8px}
.character-stage{height:440px;position:relative;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 65%,#dbe8d4 0,transparent 65%)}.companion{width:230px;z-index:30;text-align:center;transition:transform .65s ease;--travel:0px;transform:translateX(var(--travel))}.character-button{display:block;width:220px;height:320px;margin:auto;background:none;border:0;padding:0;cursor:pointer;touch-action:manipulation}.character-button svg{width:100%;height:100%;overflow:visible}.companion-message{font-size:13px;line-height:1.5;color:#244739;background:#eef3e5;padding:10px 14px;border-radius:18px 18px 18px 2px;max-width:230px;margin:0 auto 8px;box-shadow:0 4px 20px #153b2810}.companion-options{display:flex;justify-content:center;gap:16px}.companion-options button{border:0;border-bottom:1px solid #acc2b3;background:none;font:600 11px/1.6 inherit;color:#365948;cursor:pointer;padding:5px 0}.character-body{transform-origin:110px 315px;animation:character-breathe 3s ease-in-out infinite}.arm-left{transform-origin:84px 140px}.arm-right{transform-origin:135px 140px}.leg-left{transform-origin:97px 220px}.leg-right{transform-origin:121px 220px}.laptop{opacity:0;transition:opacity .2s}.companion[data-state=wave] .arm-right{animation:character-wave .65s ease-in-out infinite alternate}.companion[data-state=run] .leg-left,.companion[data-state=run] .arm-right{animation:character-run .24s ease-in-out infinite alternate}.companion[data-state=run] .leg-right,.companion[data-state=run] .arm-left{animation:character-run .24s ease-in-out infinite alternate-reverse}.companion[data-state=run] .character-body{animation:character-bounce .24s infinite alternate}.companion[data-state=work] .laptop{opacity:1}.companion[data-state=work] .arm-right{transform:rotate(28deg);animation:character-type .25s infinite alternate}.companion[data-state=work] .arm-left{transform:rotate(-30deg)}.companion.is-floating{position:fixed;bottom:18px;right:18px;width:180px;filter:drop-shadow(0 4px 10px #152f1910)}.companion.is-floating .character-button{width:110px;height:160px}.companion.is-floating .companion-message{font-size:11px}.companion.is-paused *{animation-play-state:paused!important}.companion.is-paused{transition:none}.character-button:focus-visible,.companion-options button:focus-visible{outline:2px solid #458364;outline-offset:5px;border-radius:8px}
@keyframes character-breathe{50%{transform:translateY(-3px) rotate(1deg)}}@keyframes character-wave{from{transform:rotate(-115deg)}to{transform:rotate(-140deg)}}@keyframes character-run{from{transform:rotate(-26deg)}to{transform:rotate(26deg)}}@keyframes character-bounce{to{transform:translateY(-7px) rotate(3deg)}}@keyframes character-type{to{transform:rotate(33deg)}}
@media(max-width:700px){.character-stage{height:370px}.character-button{height:270px}.companion.is-floating{right:8px;bottom:8px;width:142px}.companion.is-floating .character-button{height:100px;width:70px}.companion.is-floating .companion-message{padding:7px;font-size:10px}.companion.is-floating .companion-options{gap:8px}.companion-options button{font-size:10px}.project-art{height:185px}}
@media(prefers-reduced-motion:reduce){.companion,.companion *{animation:none!important;transition:none!important}}
/* Character-led introduction */
.hero{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:70px;min-height:720px}.hero-side{order:-1;text-align:center;width:100%}.character-stage{height:510px}.companion:not(.is-floating){width:300px}.companion:not(.is-floating) .character-button{width:280px;height:400px}.hero-side h1{font-size:25px!important;margin:14px 0 8px}.hero-side .portrait-role{font-size:13px}.academic-accessories{opacity:0;transition:opacity .25s}.companion[data-context=education] .academic-accessories{opacity:1}.companion[data-context=approach] .laptop,.companion[data-context=projects] .laptop,.companion[data-context=skills] .laptop{opacity:1}.companion[data-context=education] .character-head{transform:translateY(0)}.companion-options button{font-family:inherit;font-size:11px;font-weight:600;line-height:1.6}.profile-dashboard{align-self:center}.character-head{transform-origin:110px 110px;transition:transform .2s}.character-button:hover .character-head{transform:rotate(-5deg)}
@media(max-width:700px){.hero{display:flex;flex-direction:column;gap:40px;min-height:0}.hero-side{order:-1;align-self:center}.character-stage{height:430px}.companion:not(.is-floating) .character-button{height:320px;width:230px}.companion:not(.is-floating){max-width:100%}.hero-side h1{font-size:23px!important}}
