@keyframes page-module__C7I6PW__fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-module__C7I6PW__hero{flex-direction:column;justify-content:center;min-height:50vh;padding:6rem 0 4rem;display:flex;position:relative;overflow:hidden}.page-module__C7I6PW__heroContent{z-index:2;position:relative}.page-module__C7I6PW__heroTitle{font-family:var(--font-heading);letter-spacing:-.04em;margin-bottom:1.5rem;font-size:clamp(2.5rem,5vw,4rem);font-weight:800;line-height:1.1;animation:.6s 50ms both page-module__C7I6PW__fadeIn}.page-module__C7I6PW__heroDesc{color:var(--text-secondary);max-width:520px;margin-bottom:2.5rem;font-size:1.0625rem;font-weight:400;line-height:1.8;animation:.6s .12s both page-module__C7I6PW__fadeIn}.page-module__C7I6PW__heroLinks{align-items:center;gap:.75rem;animation:.6s .2s both page-module__C7I6PW__fadeIn;display:flex}.page-module__C7I6PW__heroLink{font-family:var(--font-mono);color:var(--text-secondary);border:1px solid var(--border-secondary);border-radius:6px;padding:.5rem 1.125rem;font-size:.8125rem;font-weight:500;text-decoration:none;transition:all .2s}.page-module__C7I6PW__heroLink:hover{color:var(--accent-primary);border-color:var(--accent-primary);background:var(--accent-subtle);box-shadow:0 0 16px var(--glow-primary,#22c55e1a)}.page-module__C7I6PW__heroLinkSeparator{display:none}.page-module__C7I6PW__heroWithImage{background-position:50%;background-repeat:no-repeat;background-size:cover;min-height:50vh;margin:0 calc(50% - 50vw);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);position:relative}.page-module__C7I6PW__heroWithImage .page-module__C7I6PW__heroTitle,.page-module__C7I6PW__heroWithImage .page-module__C7I6PW__heroDesc{color:#fff;text-shadow:0 1px 3px #0000004d}.page-module__C7I6PW__heroWithImage .page-module__C7I6PW__heroLink{color:#ffffffd9;border-color:#ffffff40}.page-module__C7I6PW__heroWithImage .page-module__C7I6PW__heroLink:hover{color:#fff;box-shadow:none;background:#ffffff1a;border-color:#ffffff80}.page-module__C7I6PW__section{border-top:1px solid var(--border-primary);padding:4rem 0}.page-module__C7I6PW__sectionHeader{justify-content:space-between;align-items:baseline;margin-bottom:2rem;display:flex}.page-module__C7I6PW__sectionTitle{font-family:var(--font-heading);letter-spacing:-.02em;align-items:center;gap:.5rem;font-size:1.25rem;font-weight:700;display:flex}.page-module__C7I6PW__sectionTitle:before{content:"";background:var(--accent-primary);border-radius:2px;width:3px;height:1.125rem;display:inline-block}.page-module__C7I6PW__sectionMore{font-family:var(--font-mono);color:var(--text-tertiary);font-size:.8125rem;text-decoration:none;transition:color .2s}.page-module__C7I6PW__sectionMore:hover{color:var(--accent-primary)}.page-module__C7I6PW__projectGrid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.page-module__C7I6PW__projectCard{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:14px;flex-direction:column;gap:.5rem;padding:1.375rem;text-decoration:none;transition:border-color .25s,box-shadow .25s;display:flex}.page-module__C7I6PW__projectCard:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.page-module__C7I6PW__projectCardFeatured{grid-column:1/-1;padding:1.75rem}.page-module__C7I6PW__projectCardFeatured .page-module__C7I6PW__projectName{font-size:1.25rem}.page-module__C7I6PW__projectCard:hover{border-color:var(--accent-primary);box-shadow:0 4px 20px var(--glow-primary,#22c55e1a), 0 0 0 1px var(--accent-subtle)}.page-module__C7I6PW__projectCardBlue:hover{border-color:#3b82f6;box-shadow:0 4px 20px #3b82f61f}.page-module__C7I6PW__projectCardGreen:hover{border-color:#22c55e;box-shadow:0 4px 20px #22c55e1f}.page-module__C7I6PW__projectCardOrange:hover{border-color:#f59e0b;box-shadow:0 4px 20px #f59e0b1f}.page-module__C7I6PW__projectCardPurple:hover{border-color:#a855f7;box-shadow:0 4px 20px #a855f71f}.page-module__C7I6PW__projectCardRose:hover{border-color:#f43f5e;box-shadow:0 4px 20px #f43f5e1f}.page-module__C7I6PW__projectCardTeal:hover{border-color:#14b8a6;box-shadow:0 4px 20px #14b8a61f}[data-theme=dark] .page-module__C7I6PW__projectCard{border-color:var(--border-secondary);background:var(--bg-tertiary)}.page-module__C7I6PW__projectName{font-family:var(--font-heading);color:var(--text-primary);font-size:1.0625rem;font-weight:600}.page-module__C7I6PW__projectDesc{color:var(--text-secondary);font-size:.8125rem;line-height:1.6}.page-module__C7I6PW__projectStackRow{flex-wrap:wrap;gap:.375rem;margin-top:auto;padding-top:.25rem;display:flex}.page-module__C7I6PW__projectStackTag{font-size:.6875rem;font-family:var(--font-mono);background:var(--bg-tertiary);color:var(--text-tertiary);border-radius:4px;padding:.125rem .5rem}.page-module__C7I6PW__postGrid{flex-direction:column;display:flex}.page-module__C7I6PW__postCard{border-bottom:1px solid var(--border-primary);grid-template-columns:7rem 1fr 2fr auto;align-items:baseline;gap:1rem;padding:.875rem .5rem;text-decoration:none;transition:background .15s,padding-left .2s;display:grid}.page-module__C7I6PW__postCard:hover{background:var(--bg-tertiary);border-bottom-color:var(--accent-primary);padding-left:1rem}.page-module__C7I6PW__postCard:hover .page-module__C7I6PW__postTitle{color:var(--accent-primary)}.page-module__C7I6PW__postMeta{font-family:var(--font-mono);color:var(--text-tertiary);white-space:nowrap;flex-shrink:0;min-width:7rem;font-size:.75rem}.page-module__C7I6PW__postTitle{font-family:var(--font-heading);color:var(--text-primary);flex:1;min-width:0;font-size:.9375rem;font-weight:600;line-height:1.4}.page-module__C7I6PW__postExcerpt{color:var(--text-tertiary);-webkit-line-clamp:1;-webkit-box-orient:vertical;flex:2;min-width:0;font-size:.8125rem;line-height:1.5;display:-webkit-box;overflow:hidden}.page-module__C7I6PW__postTags{flex-wrap:wrap;flex-shrink:0;gap:.375rem;display:flex}.page-module__C7I6PW__postTag{white-space:nowrap;border-radius:3px;padding:.0625rem .4375rem;font-size:.6875rem}.page-module__C7I6PW__tagSecurity{color:#16a34a;background:#22c55e1a}[data-theme=dark] .page-module__C7I6PW__tagSecurity{color:#4ade80;background:#22c55e26}.page-module__C7I6PW__tagDev{color:#2563eb;background:#3b82f61a}[data-theme=dark] .page-module__C7I6PW__tagDev{color:#60a5fa;background:#3b82f626}.page-module__C7I6PW__tagMisc{color:#7c3aed;background:#a855f71a}[data-theme=dark] .page-module__C7I6PW__tagMisc{color:#c084fc;background:#a855f726}.page-module__C7I6PW__tagDefault{background:var(--bg-tertiary);color:var(--text-tertiary)}.page-module__C7I6PW__loading{color:var(--text-tertiary);padding:2rem 0;font-size:.875rem}.page-module__C7I6PW__emptyState{color:var(--text-tertiary);text-align:center;border:1px dashed var(--border-primary);border-radius:12px;margin-top:.5rem;padding:3rem 0;font-size:.9375rem}@media (max-width:768px){.page-module__C7I6PW__hero{min-height:auto;padding:3.5rem 0 2.5rem}.page-module__C7I6PW__heroTitle{font-size:2.25rem}.page-module__C7I6PW__heroWithImage{min-height:40vh}.page-module__C7I6PW__projectGrid{grid-template-columns:1fr}.page-module__C7I6PW__projectCardFeatured{grid-column:1}.page-module__C7I6PW__postCard{flex-direction:column;gap:.25rem;padding:.75rem .5rem;display:flex}.page-module__C7I6PW__postExcerpt{display:none}.page-module__C7I6PW__postMeta{min-width:0}.page-module__C7I6PW__postTags{margin-top:.25rem}.page-module__C7I6PW__sectionHeader{flex-direction:column;gap:.375rem}}@media (max-width:480px){.page-module__C7I6PW__hero{padding:2.5rem 0 2rem}.page-module__C7I6PW__heroTitle{letter-spacing:-.03em;font-size:1.875rem}.page-module__C7I6PW__heroWithImage{min-height:35vh}.page-module__C7I6PW__heroLinks{flex-wrap:wrap}.page-module__C7I6PW__section{padding:2.5rem 0}}
.ScrollReveal-module__Jsyyca__reveal{opacity:0;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);transform:translateY(28px)}.ScrollReveal-module__Jsyyca__visible{opacity:1;transform:translateY(0)}
.TiltCard-module__vi-sLG__tilt{will-change:transform;transform-style:preserve-3d;transition:transform .2s ease-out}
