header{animation:headerEntrance .5s cubic-bezier(.25,.46,.45,.94)forwards}@media(max-width:768px){header{animation:headerEntranceMobile .75s cubic-bezier(.25,.46,.45,.94)forwards}}header #title{animation:titleEntrance .8s cubic-bezier(.25,.46,.45,.94)forwards}header a{opacity:0;transform:translateX(350px);animation:anchorEntrance .6s cubic-bezier(.25,.46,.45,.94)forwards;animation-delay:var(--child-animation-delay)}@media(max-width:768px){header a{transform:translateY(-50px)}}@keyframes headerEntrance{from{transform:translateX(-50%)translateY(-20px)translate3d(0,0,0)}to{transform:translateX(-50%)translateY(0)translate3d(0,0,0)}}@keyframes headerEntranceMobile{from{transform:translateY(-20px)translate3d(0,0,0)}to{transform:translateY(0)translate3d(0,0,0)}}@keyframes titleEntrance{from{opacity:.2;transform:translateX(-300px)}to{transform:translateX(0);opacity:1}}@keyframes anchorEntrance{to{transform:translateX(0);opacity:1}}:root{--color-greeting:var(--color-text);--color-name:var(--color-accent);--color-vocation:var(--color-text-secondary);--font-size-greeting:2rem;--font-size-name:4rem;--font-size-vocation:1.8rem;--intro-top-margin:clamp(2px, 5rem, 20vh);--section-margin-top:clamp(3rem, 8vw, 5rem);--subsection-margin-top:var(--spacing-lg);--section-padding:var(--spacing-xl);--section-padding-mobile:var(--spacing-lg);--section-border-radius:var(--radius-xl);--section-entrance-offset:35px;--card-gap:var(--spacing-lg);--card-padding:var(--spacing-lg)}#intro{align-items:center;margin-top:var(--main-margin-top);box-sizing:border-box}#intro #text{font-family:var(--font-secondary);font-weight:var(--font-weight-bold);display:flex;flex-direction:column}#intro #text #greeting{color:var(--color-greeting);font-size:var(--font-size-greeting)}#intro #text #greeting .expand-char{margin-right:.17em;transform:perspective(200px)rotateY(-180deg)scale(1.1)!important}#intro #text #name{color:var(--color-name);font-size:var(--font-size-name);line-height:1}#intro #text #name .expand-char{margin-right:.12em;transform:perspective(200px)rotateY(15deg)scale(1.1)!important;text-shadow:0 0 15px var(--color-accent-transparent-30)}#intro #text #vocation{color:var(--color-vocation);font-size:var(--font-size-vocation);line-height:1}#intro #text #vocation .expand-char{margin-right:.15em;color:var(--color-accent-light)}#intro #text .text-shimmer-word{display:inline-block;white-space:nowrap;transition:margin-left .6s cubic-bezier(.4,0,.2,1)}#intro #text .text-shimmer-word:not(:first-child){margin-left:.3em}#intro #text .text-shimmer-word:not(:first-child):has(.expand-char){margin-left:.4em}#intro #text .text-shimmer-char{display:inline-block;opacity:0;transform:translateY(-3px);filter:blur(2px);transition-property:opacity,transform,filter,margin-right,text-shadow,color;transition-duration:.6s;transition-timing-function:cubic-bezier(.4,0,.2,1)}#intro #text .text-shimmer-char.text-shimmer-char.in{opacity:1;transform:translateY(0);filter:blur(0)}#intro #pfp-container img#pfp{width:256px;max-width:100%;height:auto;cursor:pointer}@media(prefers-reduced-motion:no-preference){#intro #pfp-container img#pfp{opacity:0;transform:scale(.3)rotate(180deg);filter:blur(20px);animation:pfpEntrance 1.2s cubic-bezier(.4,0,.2,1).1s forwards}}@media(min-width:768px){#intro{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;margin-top:calc(var(--main-margin-top) + var(--intro-top-margin));width:100%}#intro #text{justify-self:end;text-align:right;padding-right:2rem}#intro #pfp-container{justify-content:flex-start;padding-left:2rem}}@media(max-width:768px){#intro{display:flex;flex-direction:column}#intro #text{margin-top:1rem;text-align:center}#intro #pfp-container{margin:3rem 1rem 0;display:flex}#intro #pfp{flex-shrink:1}}@keyframes pfpEntrance{to{opacity:1;transform:scale(1)rotate(0);filter:blur(0)}}@keyframes sectionEntrance{to{opacity:1;transform:translate(0)}}section:not(#intro){margin-top:var(--section-margin-top);padding:var(--section-padding);border-radius:var(--section-border-radius);transition:var(--transition-transform-shadow)}@media(prefers-reduced-motion:no-preference){section:not(#intro){opacity:0;animation:sectionEntrance .8s cubic-bezier(.25,.46,.45,.94)forwards;animation-delay:calc(.2s + var(--child-animation-delay))}}@media(prefers-reduced-motion:no-preference) and (min-height:1200px){section:not(#intro):nth-child(even){transform:translateX(calc(var(--section-entrance-offset) * -1))}section:not(#intro):nth-child(odd){transform:translateX(var(--section-entrance-offset))}}@media(prefers-reduced-motion:no-preference) and (max-height:1200px){section:not(#intro){transform:translateY(var(--section-entrance-offset))}}@media(max-width:768px){section:not(#intro){padding:var(--section-padding-mobile);border-radius:var(--radius-lg)}}section:not(#intro) h2{margin-bottom:var(--spacing-md);color:var(--color-text)}section:not(#intro) p{margin-bottom:var(--spacing-md);color:var(--color-text-secondary);line-height:1.6}section:not(#intro) .link-capsule{display:inline-block;margin-top:var(--spacing-sm);padding:var(--spacing-xs)var(--spacing-md);background:var(--color-accent-transparent-10);border:var(--border-accent);border-radius:var(--radius-round);transition:var(--transition-default);font-weight:var(--font-weight-normal);text-decoration:none}section:not(#intro) .link-capsule:hover{background:var(--color-accent-transparent-20);transform:translateY(-1px);text-decoration:none}#about{background:linear-gradient(135deg,var(--color-panel),color-mix(in srgb,var(--color-panel) 8%,var(--color-background)));border:var(--border-standard-2px)}#build{background:linear-gradient(135deg,color-mix(in srgb,var(--color-accent) 15%,var(--color-background)),color-mix(in srgb,var(--color-panel) 9%,var(--color-background)));border:var(--border-accent-t-2px)}#write{background:linear-gradient(135deg,color-mix(in srgb,var(--color-text) 5%,var(--color-background)),color-mix(in srgb,var(--color-panel) 85%,var(--color-background)));border:var(--border-light-2px)}#contact{background:linear-gradient(-45deg,color-mix(in srgb,var(--color-accent) 12%,var(--color-background)),color-mix(in srgb,var(--color-panel) 50%,var(--color-background)));border:var(--border-accent-t-2px)}#projects,#posts{margin-top:var(--subsection-margin-top)}#projects h3,#posts h3{margin-bottom:var(--spacing-md);color:var(--color-text);font-size:var(--font-size-h4)}#projects .cards-grid,#posts .cards-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--card-gap)}@media(max-width:768px){#projects .cards-grid,#posts .cards-grid{grid-template-columns:1fr;gap:var(--spacing-md)}}#projects .cards-grid .card,#posts .cards-grid .card{background:var(--color-card);border-radius:var(--radius-lg);border:var(--border-light);transition:var(--transition-transform-shadow);box-shadow:var(--shadow-standard);overflow:hidden}#projects .cards-grid .card:hover,#posts .cards-grid .card:hover{transform:translateY(-3px)scale(1.02);box-shadow:var(--shadow-standard-hover);border-color:var(--color-accent-transparent-30)}#projects .cards-grid .card .card-link,#posts .cards-grid .card .card-link{display:block;color:var(--color-text);text-decoration:none;height:100%;box-sizing:border-box}#projects .cards-grid .card .card-link .card-image,#posts .cards-grid .card .card-link .card-image{width:100%;height:160px;object-fit:cover;border-radius:var(--radius-lg)var(--radius-lg)0 0;transition:var(--transition-default)}#projects .cards-grid .card .card-link h4,#posts .cards-grid .card .card-link h4{margin:0 0 var(--spacing-xs);padding:0 var(--card-padding);padding-top:var(--spacing-md);font-size:var(--font-size-h4);font-family:var(--font-secondary);color:var(--color-link);line-height:1.3}#projects .cards-grid .card .card-link p,#posts .cards-grid .card .card-link p{margin:0;padding:0 var(--card-padding)var(--card-padding);font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.5}#projects .cards-grid .card .card-link:hover,#posts .cards-grid .card .card-link:hover{text-decoration:none}#projects .cards-grid .card .card-link:hover .card-image,#posts .cards-grid .card .card-link:hover .card-image{transform:scale(1.05)}#projects .cards-grid .card .card-link:hover h4,#posts .cards-grid .card .card-link:hover h4{color:var(--color-accent-light)}main{margin-top:0;margin-bottom:var(--card-gap)}@media(max-width:768px){main{max-width:92vw}}