@font-face{font-family:Inter;src:url(/vendor/fonts/inter/inter-latin-300-normal.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/vendor/fonts/inter/inter-latin-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/vendor/fonts/inter/inter-latin-500-normal.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/vendor/fonts/inter/inter-latin-600-normal.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/vendor/fonts/inter/inter-latin-700-normal.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:"Press Start 2P";src:url(/vendor/fonts/press-start-2p/press-start-2p-latin-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Playfair Display;src:url(/vendor/fonts/playfair-display/playfair-display-latin-700-normal.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Playfair Display;src:url(/vendor/fonts/playfair-display/playfair-display-latin-800-normal.woff2)format("woff2");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Playfair Display;src:url(/vendor/fonts/playfair-display/playfair-display-latin-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}:root{--red:#c51d34;--dark-gray:#2e2e30;--gray:gray;--gray-text:#5a5a5a;--light-gray:#f5f5f5;--cream-white:#fdfbf7}[data-theme=dark]{--red:#e63946;--dark-gray:#e8e8e8;--gray:#b0b0b0;--gray-text:#c8c8c8;--light-gray:#2a2a2c;--cream-white:#1a1a1c}body{transition:background-color .3s,color .3s}.navbar,section,.footer{transition:background-color .3s,border-color .3s}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:80px}body{background-color:var(--cream-white);color:var(--dark-gray);scroll-behavior:smooth;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;font-size:16px;line-height:1.6}@media (prefers-reduced-motion:no-preference){html,*{scroll-behavior:smooth}}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--cream-white)}::-webkit-scrollbar-thumb{background:var(--red);border:2px solid var(--cream-white);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#a01628}html{scrollbar-width:thin;scrollbar-color:var(--red) var(--cream-white)}[data-theme=dark] ::-webkit-scrollbar-track{background:var(--cream-white)}[data-theme=dark] ::-webkit-scrollbar-thumb{background:var(--red);border:2px solid var(--cream-white)}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#ff4757}[data-theme=dark] html{scrollbar-color:var(--red) var(--cream-white)}.container{max-width:900px;margin:0 auto;padding:0 20px}@media (max-width:400px){.container{padding:0 12px}}@media (max-width:320px){.container{padding:0 8px}}.navbar{background:var(--cream-white);z-index:1000;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:2px solid #0000;width:100%;padding:1.25rem 0;transition:all .3s;position:fixed;top:0;box-shadow:0 2px 10px #0000000d}.navbar:after{content:"";background:linear-gradient(90deg, transparent, var(--red), transparent);opacity:0;width:100%;height:2px;transition:opacity .3s;position:absolute;bottom:0;left:0}.navbar:hover:after{opacity:.3}[data-theme=dark] .navbar{background:var(--cream-white);box-shadow:0 2px 10px #0003}[data-theme=dark] .navbar:after{background:linear-gradient(90deg, transparent, var(--red), transparent)}.nav-container{justify-content:space-between;align-items:center;max-width:900px;margin:0 auto;padding:0 20px;display:flex}.nav-controls{align-items:center;gap:1.5rem;display:flex}.theme-toggle{color:var(--dark-gray);cursor:pointer;will-change:transform;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;padding:.5rem;font-size:1.2rem;transition:color .2s;display:flex;position:relative;overflow:visible}.theme-toggle:before{content:"";background:var(--red);opacity:0;z-index:-1;will-change:transform, opacity;border-radius:50%;width:40px;height:40px;transition:transform .3s,opacity .3s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.theme-toggle:hover{color:var(--red)}.theme-toggle:hover:before{opacity:.1;transform:translate(-50%,-50%)scale(1)}.theme-toggle i{z-index:1;will-change:transform;transform-origin:50%;display:block;position:relative}.theme-toggle.animating i{animation:.4s cubic-bezier(.4,0,.2,1) theme-rotate}@keyframes theme-rotate{0%{transform:rotate(0)scale(1)}50%{transform:rotate(180deg)scale(1.1)}to{transform:rotate(360deg)scale(1)}}.theme-toggle:after{content:"";background:radial-gradient(circle, var(--red) 0%, transparent 70%);opacity:0;pointer-events:none;z-index:0;will-change:width, height, opacity;border-radius:50%;width:100%;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.theme-toggle.clicked:after{animation:.4s ease-out ripple}@keyframes ripple{0%{opacity:.5;width:0;height:0}to{opacity:0;width:50px;height:50px}}[data-theme=dark] .theme-toggle{color:var(--dark-gray);transition:color .2s}[data-theme=dark] .theme-toggle:hover{color:var(--red)}.logo-link{color:var(--dark-gray);letter-spacing:0;text-transform:none;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;cursor:pointer;font-family:"Press Start 2P",Courier New,monospace;font-size:.7rem;font-weight:400;line-height:1.8;text-decoration:none;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-block;position:relative}.logo{position:relative}.logo-link:before{content:"";background:var(--red);transform-origin:0;width:0;height:2px;transition:transform .3s cubic-bezier(.4,0,.2,1);position:absolute;bottom:-2px;left:0;transform:scaleX(0)}.logo-link:hover{color:var(--red);filter:drop-shadow(0 0 8px #c51d3499);transform:translateY(-1px)}.logo-link:hover:before{transform:scaleX(1)}[data-theme=dark] .logo-link{color:var(--dark-gray)}[data-theme=dark] .logo-link:hover{color:var(--red);filter:drop-shadow(0 0 10px #e63946b3);transform:translateY(-1px)}.nav-menu{color:var(--gray-text);align-items:center;gap:2.5rem;list-style:none;display:flex}.nav-image-container,.nav-close-container{display:none}.nav-link{color:var(--gray-text);text-transform:lowercase;letter-spacing:.5px;padding:.5rem 0;font-size:.9rem;font-weight:500;text-decoration:none;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative}.nav-link:after{content:"";background:var(--red);width:100%;height:2px;transition:transform .3s cubic-bezier(.4,0,.2,1);position:absolute;bottom:0;left:50%;transform:translate(-50%)scaleX(0)}.nav-link:hover,.nav-link.active{color:var(--red)}.nav-link:hover:after,.nav-link.active:after{transform:translate(-50%)scaleX(1)}.nav-link.active{color:var(--red);font-weight:600}.hamburger{cursor:pointer;flex-direction:column;gap:6px;padding:.5rem;transition:transform .3s;display:none}.hamburger:hover{transform:scale(1.1)}.hamburger span{background:var(--dark-gray);border-radius:2px;width:28px;height:3px;transition:all .3s cubic-bezier(.4,0,.2,1)}.hamburger.active span:first-child{transform:rotate(45deg)translate(8px,8px)}.hamburger.active span:nth-child(2){opacity:0}.hamburger.active span:nth-child(3){transform:rotate(-45deg)translate(7px,-7px)}section{padding:60px 20px}@media (max-width:400px){section{padding:40px 12px}}@media (max-width:320px){section{padding:30px 8px}}.section-title{color:var(--dark-gray);text-transform:capitalize;text-align:left;margin-bottom:2.5rem;font-size:1.5rem;font-weight:700;overflow:visible}.text-animate-pending{opacity:0}.text-word{white-space:nowrap;display:inline-block}.text-char{white-space:pre;will-change:transform, opacity;display:inline-block}.hero-title.text-animate,.section-title.text-animate,.project-detail-title.text-animate,.privacy-title.text-animate,.text-animate .text-char{text-transform:none}.text-animate .text-char{opacity:0;animation:.35s cubic-bezier(.22,1.35,.36,1) forwards text-char-in;animation-delay:calc(var(--char-index,0) * 35ms);transform:translateY(30px)rotate(45deg)scale(.5)}@keyframes text-char-in{0%{opacity:0;transform:translateY(30px)rotate(45deg)scale(.5)}60%{opacity:1}to{opacity:1;transform:translateY(0)rotate(0)scale(1)}}@media (prefers-reduced-motion:reduce){.text-animate-pending{opacity:1}.text-animate .text-char{opacity:1;animation:none;transform:none}}.easter-egg{z-index:10001;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s cubic-bezier(.68,-.55,.265,1.55);position:absolute;top:calc(100% + 15px);left:0;transform:translateY(-10px)scale(.9)}.easter-egg.show{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.easter-egg-content{background:linear-gradient(135deg, var(--cream-white) 0%, #faf8f3 100%);border:3px solid var(--red);text-align:center;border-radius:12px;width:auto;min-width:220px;max-width:500px;padding:1.25rem 1.5rem;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-block;position:relative;overflow:visible;box-shadow:0 12px 32px #c51d3440,0 4px 12px #00000026,0 0 0 1px #c51d341a,inset 0 1px 2px #fffc}.easter-egg-content:before{content:"";background:linear-gradient(135deg, var(--red), #e63946, var(--red));opacity:0;z-index:-1;filter:blur(8px);border-radius:12px;transition:opacity .3s;position:absolute;inset:-3px}.easter-egg.show .easter-egg-content:before{opacity:.3;animation:2s ease-in-out infinite easter-egg-glow}@keyframes easter-egg-glow{0%,to{opacity:.3;filter:blur(8px)}50%{opacity:.5;filter:blur(12px)}}.easter-egg-image-container{margin-bottom:.75rem;display:inline-block;position:relative}.easter-egg-image-container:before{content:"";opacity:0;background:radial-gradient(circle,#c51d3433 0%,#0000 70%);border-radius:50%;width:140px;height:140px;animation:2s ease-in-out infinite easter-egg-pulse-ring;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.easter-egg.show .easter-egg-image-container:before{opacity:1}@keyframes easter-egg-pulse-ring{0%,to{opacity:.6;transform:translate(-50%,-50%)scale(.8)}50%{opacity:.3;transform:translate(-50%,-50%)scale(1.2)}}.easter-egg-image{width:120px;height:auto;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;filter:drop-shadow(0 4px 8px #0000004d);z-index:1;transition:transform .3s;position:relative}.easter-egg.show .easter-egg-image{animation:.6s cubic-bezier(.68,-.55,.265,1.55) easter-egg-image-bounce}@keyframes easter-egg-image-bounce{0%{opacity:0;transform:scale(0)rotate(-180deg)}60%{opacity:1;transform:scale(1.15)rotate(10deg)}80%{transform:scale(.95)rotate(-5deg)}to{opacity:1;transform:scale(1)rotate(0)}}.easter-egg-name{color:var(--red);letter-spacing:.5px;margin-bottom:.75rem;font-family:"Press Start 2P",Courier New,monospace;font-size:.5rem;animation:.4s ease-out .2s both easter-egg-fade-in}@keyframes easter-egg-fade-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.easter-egg-message{color:var(--dark-gray);word-wrap:break-word;white-space:normal;text-shadow:1px 1px #0000001a;letter-spacing:.5px;max-width:100%;min-height:2em;font-family:"Press Start 2P",Courier New,monospace;font-size:.6rem;font-weight:400;line-height:2;display:inline-block;overflow:hidden}[data-theme=dark] .easter-egg-message{color:var(--dark-gray);text-shadow:1px 1px #ffffff1a}.easter-egg-message.typing:after{content:"|";color:var(--red);animation:1s infinite blink}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}[data-theme=dark] .easter-egg-content{background:linear-gradient(135deg, var(--light-gray) 0%, #2d2d2f 100%);border-color:var(--red);box-shadow:0 12px 32px #e639464d,0 4px 12px #0000004d,0 0 0 1px #e6394633,inset 0 1px 2px #ffffff0d}[data-theme=dark] .easter-egg-content:before{background:linear-gradient(135deg, var(--red), #ff4757, var(--red))}[data-theme=dark] .easter-egg-name{color:var(--red)}[data-theme=dark] .easter-egg-message{color:var(--dark-gray)}.footer{background:var(--cream-white);border-top:1px solid var(--light-gray);text-align:center;padding:2rem 0}.footer p{color:var(--gray-text);font-size:.9rem}.footer-link{color:var(--gray-text);text-decoration:none;transition:color .2s}.footer-year{color:var(--gray-text)}.footer-link:hover{color:var(--red)}@media (max-width:768px){.hamburger{display:flex}.nav-menu{background:var(--cream-white);border-left:1px solid var(--light-gray);z-index:999;flex-direction:column;gap:0;width:100%;height:100vh;max-height:100vh;padding:0;transition:right .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;right:-100%;overflow:hidden;box-shadow:-4px 0 20px #0000001a}.nav-close-container{border-bottom:1px solid var(--light-gray);flex-shrink:0;justify-content:flex-end;padding:1rem 1.5rem;display:flex}.nav-close-btn{color:var(--dark-gray);cursor:pointer;background:0 0;border:none;padding:.5rem;font-size:1.5rem;transition:color .3s,transform .3s}.nav-close-btn:hover{color:var(--red);transform:rotate(90deg)}.nav-menu li:not(.nav-close-container):not(.nav-image-container){border-bottom:1px solid var(--light-gray);flex-shrink:0;min-height:0;padding:.9rem 1.5rem}.nav-link{padding:.5rem 0;font-size:1.1rem}.nav-controls{gap:1rem}.nav-menu.active{right:0}.nav-image-container{border-top:1px solid var(--light-gray);background:linear-gradient(#0000 0%,#c51d3405 100%);flex-shrink:0;min-height:0;margin-top:auto;padding:2rem 1.5rem;display:flex}.nav-image-wrapper{justify-content:space-between;align-items:center;gap:.8rem;width:100%;display:flex;position:relative}.nav-greeting-wrapper{flex:1;align-items:center;padding-right:.5rem;display:flex}.nav-greeting{color:var(--dark-gray);text-align:left;min-height:1.2em;font-family:"Press Start 2P",Courier New,monospace;font-size:.6rem;line-height:1.8}.nav-image-content{z-index:2;flex-direction:column;flex-shrink:0;align-items:center;gap:.5rem;display:flex;position:relative}.nav-image-glow{z-index:1;filter:blur(8px);background:radial-gradient(circle,#c51d3426 0%,#c51d3414 40%,#0000 70%);border-radius:50%;width:160px;height:160px;animation:2s ease-in-out infinite nav-glow-pulse;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes nav-glow-pulse{0%,to{opacity:.25;transform:translate(-50%,-50%)scale(1)}50%{opacity:.35;transform:translate(-50%,-50%)scale(1.15)}}.nav-leaning-image{object-fit:contain;z-index:2;filter:drop-shadow(0 4px 12px #c51d344d);width:150px;height:auto;transform-style:preserve-3d;transition:transform .3s;animation:4s ease-in-out infinite nav-image-rotate;position:relative}@keyframes nav-image-rotate{0%,to{transform:perspective(500px)rotateY(-5deg)}50%{transform:perspective(500px)rotateY(5deg)}}.nav-image-content:hover .nav-leaning-image{transform:perspective(500px)rotateY(0)scale(1.05)}.nav-name{color:var(--red);letter-spacing:.5px;text-shadow:0 2px 4px #c51d3433;margin-top:.2rem;font-family:"Press Start 2P",Courier New,monospace;font-size:.5rem}.nav-greeting.typing:after{content:"|";color:var(--red);animation:1s infinite blink}[data-theme=dark] .nav-menu{background:var(--cream-white);box-shadow:-4px 0 20px #0000004d}[data-theme=dark] .nav-image-container{background:linear-gradient(#0000 0%,#e6394608 100%)}[data-theme=dark] .nav-image-glow{background:radial-gradient(circle,#e639462e 0%,#e639461a 40%,#0000 70%)}[data-theme=dark] .nav-leaning-image{filter:drop-shadow(0 4px 12px #e6394666)}}.projects{background:var(--cream-white)}.section-header{justify-content:space-between;align-items:baseline;margin-bottom:2.5rem;display:flex}.view-more{color:var(--gray-text);text-transform:lowercase;border:1px solid #0000;border-radius:6px;align-items:center;gap:.5rem;padding:8px 16px;font-size:.9rem;font-weight:500;text-decoration:none;transition:all .3s;display:inline-flex}.view-more i{font-size:.8rem;transition:transform .3s}.view-more:hover{color:var(--red);background:var(--light-gray);border-color:var(--red);transform:translateY(-2px);box-shadow:0 2px 8px #c51d341a}.view-more:hover i.fa-chevron-right{transform:translate(3px)}.view-more:hover i.fa-chevron-left{transform:translate(-3px)}[data-theme=dark] .view-more:hover{background:var(--light-gray);border-color:var(--red)}.projects-grid{flex-direction:column;gap:3rem;display:flex}.project-card{cursor:pointer;background:0 0;border:1px solid #80808026;border-radius:12px;padding:1.5rem;transition:all .3s;position:relative}.project-card:hover{border-color:#c51d344d;box-shadow:0 4px 12px #00000014}.project-card:has(.project-card-main-link:focus-visible){border-color:var(--red);box-shadow:0 0 0 2px #c51d3440}[data-theme=dark] .project-card{border-color:#e8e8e826}[data-theme=dark] .project-card:hover{border-color:#e6394666;box-shadow:0 4px 12px #e6394626}.project-card-main-link{z-index:1;border-radius:inherit;text-indent:-9999px;position:absolute;inset:0;overflow:hidden}.project-card-main-link:focus{outline:none}.project-links,.project-tags{z-index:2;position:relative}.project-tags{pointer-events:none}.project-tags .project-tech-icon,.project-tags .project-tech-icon-fallback{pointer-events:auto}.project-card-images{border-radius:8px;grid-template-columns:repeat(3,1fr);gap:.5rem;height:180px;margin-bottom:1.5rem;transition:transform .3s,box-shadow .3s;display:grid;position:relative;overflow:hidden}.project-card:hover .project-card-images{transform:translateY(-3px);box-shadow:0 8px 20px #00000026}.project-card-image{object-fit:cover;width:100%;height:100%;transition:transform .3s}.project-card:hover .project-card-image{transform:scale(1.03)}.project-card-image-more{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none;background:#000000b3;border-radius:6px;padding:6px 12px;font-size:.85rem;font-weight:600;position:absolute;bottom:8px;right:8px}[data-theme=dark] .project-card-image-more{color:var(--cream-white);background:#fff3}.project-card-images:has(img:only-child){grid-template-columns:1fr}.project-card-images:has(img:nth-child(2):last-child){grid-template-columns:1fr 1fr}@media (max-width:768px){.project-card-images{gap:.4rem;height:150px}}@media (max-width:480px){.project-card-images{gap:.3rem;height:120px}.project-card-image-more{padding:4px 8px;font-size:.75rem}}.project-title{color:var(--dark-gray);margin-bottom:.55rem;font-size:1.5rem;font-weight:600}.project-description{color:var(--gray-text);margin-bottom:1rem;font-size:.95rem;line-height:1.6}.project-tags{flex-wrap:wrap;align-items:center;gap:.8rem;margin-bottom:1rem;display:flex}.tag{background:var(--light-gray);color:var(--dark-gray);border-radius:4px;padding:4px 12px;font-size:.85rem;font-weight:500}.project-tech-icon,.project-tech-icon-fallback{color:var(--red);cursor:help;justify-content:center;align-items:center;font-size:1.5rem;transition:color .2s,filter .2s,transform .2s;display:inline-flex;position:relative}.project-tech-icon .visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.project-tech-icon.colored{color:var(--red)!important}[data-theme=dark] .project-tech-icon{color:var(--dark-gray)!important}.project-tech-icon.fa-brands,.project-tech-icon.fa-regular,.project-tech-icon.fa-solid{color:var(--red)}[data-theme=dark] .project-tech-icon.fa-brands,[data-theme=dark] .project-tech-icon.fa-regular,[data-theme=dark] .project-tech-icon.fa-solid{color:var(--dark-gray)!important}[data-theme=dark] .project-tech-icon.colored{filter:brightness(0)saturate()invert();color:var(--cream-white)!important}.project-tech-icon[data-tooltip]:after,.project-tech-icon-fallback[data-tooltip]:after{content:attr(data-tooltip);color:#fdfbf7;letter-spacing:.02em;white-space:nowrap;opacity:0;pointer-events:none;z-index:6;background:#2e2e30;border-radius:.4rem;padding:.3rem .55rem;font-family:Inter,sans-serif;font-size:.7rem;font-weight:500;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px)}[data-theme=dark] .project-tech-icon[data-tooltip]:after,[data-theme=dark] .project-tech-icon-fallback[data-tooltip]:after{background:var(--light-gray);color:var(--dark-gray);border:1px solid #e8e8e81f}.project-tech-icon[data-tooltip]:hover:after,.project-tech-icon[data-tooltip]:focus-visible:after,.project-tech-icon-fallback[data-tooltip]:hover:after,.project-tech-icon-fallback[data-tooltip]:focus-visible:after{opacity:1;transform:translate(-50%)translateY(0)}.project-card:hover .project-tech-icon.colored{filter:none!important}.project-card:hover .project-tech-icon[class*=html5]{color:#e34f26!important}.project-card:hover .project-tech-icon[class*=css3]{color:#1572b6!important}.project-card:hover .project-tech-icon[class*=javascript]{color:#f7df1e!important}.project-card:hover .project-tech-icon[class*=nodejs],.project-card:hover .project-tech-icon.fa-node-js{color:#5fa04e!important}.project-card:hover .project-tech-icon[class*=express]{color:#000!important}[data-theme=dark] .project-card:hover .project-tech-icon[class*=express]{color:var(--red)!important}.project-card:hover .project-tech-icon[class*=mysql]{color:#4479a1!important}.project-card:hover .project-tech-icon[class*=bootstrap]{color:#7952b3!important}.project-card:hover .project-tech-icon[class*=jquery]{color:#0769ad!important}.project-card:hover .project-tech-icon[class*=tailwindcss]{color:#06b6d4!important}.project-card:hover .project-tech-icon[class*=python]{color:#3776ab!important}.project-card:hover .project-tech-icon[class*=nextjs]{color:#000!important}[data-theme=dark] .project-card:hover .project-tech-icon[class*=nextjs]{color:var(--red)!important}.project-card:hover .project-tech-icon[class*=react]{color:#61dafb!important}.project-card:hover .project-tech-icon[class*=typescript]{color:#3178c6!important}.project-card:hover .project-tech-icon[class*=nginx]{color:#009639!important}.project-card:hover .project-tech-icon.fa-ubuntu{color:#e95420!important}.project-card:hover .project-tech-icon[class*=googlecloud],.project-card:hover .project-tech-icon[class*=google],.project-card:hover .project-tech-icon.fa-google-drive{color:#4285f4!important}.project-card:hover .project-tech-icon.fa-file-excel{color:#0f9d58!important}.project-card:hover .project-tech-icon.fa-envelope{color:#ea4335!important}.ejs-icon-small{color:var(--red);font-family:Inter,sans-serif;font-size:1.2rem;font-weight:700}[data-theme=dark] .ejs-icon-small{color:var(--dark-gray)!important}.project-card:hover .ejs-icon-small{color:#ff6b35!important}.project-tech-icon-fallback{color:var(--dark-gray);background:var(--light-gray);border-radius:4px;padding:4px 12px;font-size:.85rem}[data-theme=dark] .project-tech-icon-fallback{color:var(--cream-white);background:var(--light-gray)}.project-links{flex-wrap:wrap;gap:1.5rem;margin-bottom:.9rem;display:flex}.project-links .project-link{color:var(--red);text-underline-offset:.18em;font-size:.9rem;text-decoration:underline;transition:color .2s}.project-links .project-link:hover{color:var(--dark-gray)}@media (max-width:768px){.section-header{flex-direction:column;gap:1rem}}