@charset "UTF-8";@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap";/*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com */.visible{visibility:visible}.grid{display:grid}.hidden{display:none}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,-apple-system,sans-serif}::-webkit-scrollbar-track{background:#1a1a1a}::-webkit-scrollbar-thumb{background:#4a5568;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#6b7280}.loader{position:absolute;top:0;left:0;width:100%;height:100%;z-index:50;display:flex;align-items:center;justify-content:center;transition:opacity 1s cubic-bezier(.4,0,.2,1)}.loader.fade-out{opacity:0}.loader-background{position:absolute;top:0;left:0;width:100%;height:100%;opacity:1;transition:opacity 1s cubic-bezier(.4,0,.2,1)}.loader-background.visible{opacity:1;background:linear-gradient(135deg,#686b6e,#eff6ff,#4f46e5);background-size:400% 400%;animation:gradient-shift 15s ease infinite}.loader-content{z-index:10;transition:opacity 1s cubic-bezier(.4,0,.2,1)}.loader-text{text-align:center;color:#fff;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;text-transform:uppercase}.loader-name{font-size:clamp(4rem,12vw,8rem);font-weight:800;line-height:1;letter-spacing:-.02em}.loader-name .name-first{display:block;text-align:right}.loader-name .name-last{display:block;text-align:right;margin-top:-.1em}.loader-enter .loader-name{animation:name-entrance 1s .5s cubic-bezier(.4,0,.2,1) forwards}@keyframes name-entrance{0%{opacity:0;transform:translateY(2rem) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 1024px){.loader-name{font-size:clamp(3rem,10vw,6rem)}}@media (max-width: 640px){.loader-name{font-size:clamp(2.5rem,8vw,4rem)}}.project-grid{display:grid;width:100vw;height:100vh;box-sizing:border-box;transition:all .5s cubic-bezier(.4,0,.2,1);overflow:hidden}.project-grid.blurred{transform:scale(.725);box-shadow:0 20px 60px #00000080;border-radius:.5rem}.project-grid.blurred .project-description{display:none}.project-grid.loading,.project-grid.loading *{pointer-events:none}.project-grid.grid-2{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.project-grid.grid-3{grid-template-columns:1fr 1fr 1fr}.project-grid.grid-3[data-items="6"]{grid-template-rows:1fr 1fr}.project-grid.grid-3[data-items="7"],.project-grid.grid-3[data-items="8"],.project-grid.grid-3[data-items="9"]{grid-template-rows:1fr 1fr 1fr}.project-grid.grid-4{grid-template-columns:1fr 1fr 1fr 1fr}.project-grid.grid-4[data-items="8"]{grid-template-rows:1fr 1fr}.project-grid.grid-4[data-items="9"],.project-grid.grid-4[data-items="10"],.project-grid.grid-4[data-items="11"],.project-grid.grid-4[data-items="12"]{grid-template-rows:1fr 1fr 1fr}@media (max-width: 1024px){.project-grid.grid-4{grid-template-columns:1fr 1fr 1fr}.project-grid.grid-4[data-items="8"]{grid-template-rows:1fr 1fr 1fr}}@media (max-width: 768px){.project-grid.grid-3,.project-grid.grid-4{grid-template-columns:1fr 1fr}.project-grid.grid-3[data-items="3"],.project-grid.grid-3[data-items="4"],.project-grid.grid-4[data-items="3"],.project-grid.grid-4[data-items="4"]{grid-template-rows:1fr 1fr}.project-grid.grid-3[data-items="5"],.project-grid.grid-3[data-items="6"],.project-grid.grid-4[data-items="5"],.project-grid.grid-4[data-items="6"]{grid-template-rows:1fr 1fr 1fr}.project-grid.grid-3[data-items="7"],.project-grid.grid-3[data-items="8"],.project-grid.grid-4[data-items="7"],.project-grid.grid-4[data-items="8"]{grid-template-rows:1fr 1fr 1fr 1fr}.project-grid.grid-3[data-items="9"],.project-grid.grid-3[data-items="10"],.project-grid.grid-4[data-items="9"],.project-grid.grid-4[data-items="10"]{grid-template-rows:1fr 1fr 1fr 1fr 1fr}}@media (max-width: 640px){.project-grid{grid-template-columns:1fr 1fr!important}.project-grid[data-items="2"]{grid-template-rows:1fr}.project-grid[data-items="3"],.project-grid[data-items="4"]{grid-template-rows:1fr 1fr}.project-grid[data-items="5"],.project-grid[data-items="6"]{grid-template-rows:1fr 1fr 1fr}.project-grid[data-items="7"],.project-grid[data-items="8"]{grid-template-rows:1fr 1fr 1fr 1fr}.project-grid[data-items="9"],.project-grid[data-items="10"]{grid-template-rows:1fr 1fr 1fr 1fr 1fr}}.project-grid-enter{opacity:0;transform:scale(.9)}.project-grid-enter-active{opacity:1;transform:scale(1);transition:all .5s cubic-bezier(.4,0,.2,1)}.project-card{position:relative;overflow:hidden;cursor:pointer;transition:all .5s cubic-bezier(.4,0,.2,1)}.project-card.other-hovered{opacity:.75}.project-image{width:100%;height:100%;object-fit:cover;transition:all .5s cubic-bezier(.4,0,.2,1);filter:grayscale(100%)}.project-overlay{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;transition:opacity .3s cubic-bezier(.4,0,.2,1);pointer-events:none}.project-card:hover .project-overlay{opacity:1;background:linear-gradient(135deg,#9333ea4d,#2563eb4d,#4f46e54d)}.project-content{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to top,rgba(0,0,0,.8) 0%,rgba(0,0,0,.4) 40%,transparent 80%);display:flex;align-items:flex-end;padding:1.5rem;opacity:0;transition:opacity .3s cubic-bezier(.4,0,.2,1)}.project-card:hover .project-content{opacity:1}.project-info{position:absolute;top:50%;left:50%;transform:translate(-50%,calc(-50% + 1rem));color:#fff;transition:transform .3s cubic-bezier(.4,0,.2,1);text-align:center;width:75%}.project-card:hover .project-info{transform:translate(-50%,-50%)}.project-title{font-size:1.25rem;font-weight:600;margin-bottom:.5rem}@media (max-width: 640px){.project-title{font-size:1.1rem}}.project-description{font-size:.9rem;opacity:.95;line-height:1.4}@media (max-width: 640px){.project-description{font-size:.85rem}}.project-card-loading{background:linear-gradient(135deg,#1f2937,#374151);animation:pulse 2s ease-in-out infinite alternate}.project-card-loading .project-image{opacity:0}@keyframes pulse{0%{opacity:.6}to{opacity:.8}}.name-component{position:fixed;bottom:1.5rem;right:1.5rem;z-index:30;pointer-events:none;opacity:0;transform:translateY(2rem);transition:all .15s cubic-bezier(.4,0,.2,1)}.name-component.visible{opacity:1;transform:translateY(0);animation:slideUpFadeIn .5s cubic-bezier(.4,0,.2,1)}.name-component .name-text{font-size:3rem;font-weight:800;color:#fff;cursor:pointer;pointer-events:all;transition:all .5s cubic-bezier(.4,0,.2,1);letter-spacing:.02em;line-height:1;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;text-align:right;text-transform:uppercase}.name-component .name-text:hover{color:#000}.name-component .name-text.shifted{transform:translateY(-3rem);color:#000}.name-component .name-text .name-first,.name-component .name-text .name-last{display:inline-block;transition:all .3s cubic-bezier(.4,0,.2,1)}.name-component .name-text .name-break{display:inline}@media (max-width: 768px){.name-component{bottom:1.5rem;right:1.5rem}.name-component .name-text{font-size:1.5rem}.name-component .name-text.shifted{transform:translateY(-3rem)}.name-component .name-text .name-break{display:none}.name-component .name-text .name-first{margin-right:.3em}}.navigation-close{position:fixed;top:1.5rem;right:1.5rem;color:#000;font-size:2rem;cursor:pointer;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;border:none;background:none;transition:all .3s cubic-bezier(.4,0,.2,1);pointer-events:all;opacity:0;transform:translateY(-10px);animation:slideInClose .3s cubic-bezier(.4,0,.2,1) forwards}.navigation-close:hover{background:#0003;color:#000;transform:scale(1.1)}@media (max-width: 768px){.navigation-close{top:.5rem;right:.5rem}}@keyframes slideUpFadeIn{0%{opacity:0;transform:translateY(2rem)}to{opacity:1;transform:translateY(0)}}@keyframes slideInClose{to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 640px){.name-component{bottom:1.5rem;right:1.5rem}.name-component .name-text{font-size:1.5rem}.name-component .navigation-close{width:2rem;height:2rem;font-size:1.25rem;top:-2.5rem}}.navigation{position:fixed;bottom:1.5rem;right:1.5rem;z-index:20;opacity:0;transform:translateY(1rem);pointer-events:none;transition:all .5s cubic-bezier(.4,0,.2,1)}.navigation.visible{opacity:1;transform:translateY(0);pointer-events:all}.navigation .navigation-menu{display:flex;gap:1rem}.navigation .navigation-item{width:100%;padding:.75rem 0;color:#686b6e;text-decoration:none;background:none;border:none;cursor:pointer;font-size:1rem;font-weight:500;text-align:left;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;letter-spacing:.01em}.navigation .navigation-item:hover{color:#1f2937}.navigation .social-links{display:flex;flex-direction:column;gap:.75rem}.navigation .social-links .social-link{opacity:.9}.navigation .social-links .social-link:hover{opacity:1}@media (max-width: 640px){.navigation{bottom:1.5rem;right:1.5rem}.navigation .navigation-content{min-width:160px}.navigation .navigation-item{font-size:.9rem;padding:.75rem 0}}.about-modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:40;display:flex;align-items:center;justify-content:center;padding:2rem;background:#fffc;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:fade-in .3s cubic-bezier(.4,0,.2,1) ease-out}.about-modal{border-radius:1.5rem;max-width:56rem;width:100%;overflow-y:auto;position:relative;animation:slide-up .5s cubic-bezier(.4,0,.2,1);scrollbar-width:none}.about-modal::-webkit-scrollbar{display:none}.about-modal-close{position:absolute;top:1.5rem;right:1.5rem;background:none;border:none;color:#000;font-size:2rem;cursor:pointer;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s cubic-bezier(.4,0,.2,1);z-index:10;line-height:1;padding:0}.about-modal-close::-moz-focus-inner{border:0;padding:0}.about-modal-close:hover{background:#0003;color:#000;transform:scale(1.1)}@media (max-width: 768px){.about-modal-close{top:.5rem;right:.5rem}}.about-modal-content{padding:3rem;color:#fff}@media (max-width: 640px){.about-modal-content{padding:2rem}}.about-modal-title{font-size:2.5rem;font-weight:800;margin-bottom:2rem;letter-spacing:-.02em;color:#000}@media (max-width: 640px){.about-modal-title{font-size:2rem;margin-bottom:1.5rem}}.about-modal-text{margin-bottom:2.5rem}.about-modal-paragraph{color:#686b6e;line-height:1.7;margin-bottom:1.5rem;font-size:1.1rem}.about-modal-paragraph:last-child{margin-bottom:0}@media (max-width: 640px){.about-modal-paragraph{font-size:1rem;line-height:1.6}}.about-modal-skills{border-top:1px solid rgba(255,255,255,.1);padding-top:2rem}.skills-title{font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;color:#000}@media (max-width: 640px){.skills-title{font-size:1.25rem;margin-bottom:1rem}}.skills-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1rem}.skill-item{color:#686b6e;font-size:1rem;position:relative;display:flex;align-items:center}.skill-item svg{color:#000;height:20px;width:20px;margin-right:.5rem}@media (max-width: 640px){.skill-item{font-size:.9rem}}.project-detail-overlay{position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:50;background:#ffffffbf;animation:fade-in .5s cubic-bezier(.4,0,.2,1)}.project-detail-modal{height:100%;overflow-y:auto;animation:slide-up .5s cubic-bezier(.4,0,.2,1);scrollbar-width:none}.project-detail-modal::-webkit-scrollbar{display:none}.project-detail-close{position:absolute;top:1.5rem;right:1.5rem;background:none;border:none;color:#000;font-size:2rem;cursor:pointer;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s cubic-bezier(.4,0,.2,1);z-index:10;line-height:1;padding:0}.project-detail-close::-moz-focus-inner{border:0;padding:0}.project-detail-close:hover{background:#0003;color:#000;transform:scale(1.1)}.project-detail-content{min-height:100%;padding:3rem;max-width:80rem;margin:0 auto}@media (max-width: 640px){.project-detail-content{padding:2rem 1.5rem}}.project-detail-header{margin-bottom:3rem;text-align:center}@media (max-width: 640px){.project-detail-header{margin-bottom:2rem}}.project-detail-title{font-size:3rem;font-weight:800;color:#000;margin-bottom:1rem;letter-spacing:-.02em}@media (max-width: 640px){.project-detail-title{font-size:2rem}}.project-detail-description{font-size:1.25rem;color:#686b6e;max-width:42rem;margin:0 auto;line-height:1.6}@media (max-width: 640px){.project-detail-description{font-size:1.1rem}}.project-detail-image{margin-bottom:3rem;border-radius:1rem;overflow:hidden;height:20rem}@media (max-width: 640px){.project-detail-image{margin-bottom:2rem}}.detail-image{width:100%;height:20rem;object-fit:cover;transition:transform .3s cubic-bezier(.4,0,.2,1)}.detail-image:hover{transform:scale(1.02)}@media (max-width: 640px){.detail-image{height:15rem}}.project-detail-body{display:flex;flex-direction:column;gap:3rem}@media (max-width: 640px){.project-detail-body{gap:2rem}}.project-overview .section-title{font-size:2rem;font-weight:700;color:#111827;margin-bottom:1.5rem}@media (max-width: 640px){.project-overview .section-title{font-size:1.5rem;margin-bottom:1rem}}.project-details-text{font-size:1.1rem;color:#686b6e;line-height:1.7}@media (max-width: 640px){.project-details-text{font-size:1rem}}.project-technologies .tech-title{font-size:1.5rem;font-weight:600;color:#111827;margin-bottom:1rem}@media (max-width: 640px){.project-technologies .tech-title{font-size:1.25rem}}.tech-tags{display:flex;flex-wrap:wrap;gap:.75rem}.tech-tag{padding:.5rem 1rem;background:#ffffff40;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#000;border-radius:9999px;font-size:.875rem;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.tech-tag:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#ffffff26,#ffffff0d);border-radius:inherit;pointer-events:none}.scaffolded-sections{display:flex;flex-direction:column;gap:2rem}.scaffolded-section{background:#ffffff26;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);border-radius:1rem;padding:2rem;box-shadow:0 8px 32px #00000014,inset 0 1px #ffffff4d;position:relative;overflow:hidden}.scaffolded-section:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#ffffff14,#ffffff05);border-radius:inherit;pointer-events:none}.scaffolded-section .section-title{font-size:1.5rem;font-weight:600;color:#000;margin-bottom:1.5rem;position:relative;z-index:1}.scaffolded-section .section-title:after{content:"";position:absolute;bottom:-8px;left:0;width:50px;height:3px;background:linear-gradient(90deg,#2563eb,#9333ea);border-radius:2px}.placeholder-content{position:relative;z-index:1}.placeholder-content p{color:#686b6e;margin-bottom:1.5rem;font-style:italic}.case-study-content{display:grid}.case-study-section{position:relative;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.case-study-section:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#ffffff1a,#ffffff08);border-radius:inherit;pointer-events:none}.case-study-subtitle{font-size:1.125rem;font-weight:700;color:#111827;margin-bottom:.75rem;position:relative;z-index:1;display:flex;align-items:center;gap:.5rem}.case-study-subtitle:has-text("Challenge"):before{background:linear-gradient(135deg,#9333ea,#6b21a8);box-shadow:0 2px 8px #9333ea4d}.case-study-subtitle:has-text("Solution"):before{background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 2px 8px #2563eb4d}.case-study-subtitle:has-text("Outcome"):before{background:linear-gradient(135deg,#4f46e5,#3730a3);box-shadow:0 2px 8px #4f46e54d}.case-study-subtitle:has-text("Key Features"):before{background:linear-gradient(135deg,#9333ea,#581c87);box-shadow:0 2px 8px #9333ea4d}.case-study-text{color:#374151;line-height:1.6;position:relative;z-index:1;font-size:1rem}.features-list{list-style:none;padding:0;margin:0;display:grid;gap:.75rem;position:relative;z-index:1}.feature-item{background:#ffffff4d;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:.5rem;color:#374151;font-size:.95rem;position:relative;padding:.75rem 1rem .75rem 2rem;transition:all .3s cubic-bezier(.4,0,.2,1)}.feature-item:before{content:"✦";position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:#2563eb;font-weight:700;font-size:.875rem}.project-links{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1rem}.placeholder-link{padding:.75rem 1.5rem;background:#ffffff40;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#1f2937;border-radius:.75rem;font-weight:500;border:1px solid rgba(255,255,255,.3);transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 16px #00000014,inset 0 1px #fff6;text-decoration:none;display:flex;align-items:center;gap:.5rem;position:relative;overflow:hidden}.placeholder-link:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:inherit;pointer-events:none}.placeholder-link svg{font-size:1.125rem;transition:transform .3s cubic-bezier(.4,0,.2,1)}.placeholder-link.live-link{background:linear-gradient(135deg,#4f46e526,#4f46e50d);border-color:#4f46e54d;color:#3730a3}.placeholder-link.live-link:hover{background:linear-gradient(135deg,#4f46e540,#4f46e51a);border-color:#4f46e566}.placeholder-link.github-link{background:linear-gradient(135deg,#37415126,#3741510d);border-color:#3741514d;color:#1f2937}.placeholder-link.github-link:hover{background:linear-gradient(135deg,#37415140,#3741511a);border-color:#37415166}.placeholder-link.case-study-link{background:linear-gradient(135deg,#2563eb26,#2563eb0d);border-color:#2563eb4d;color:#1d4ed8}.placeholder-link.case-study-link:hover{background:linear-gradient(135deg,#2563eb40,#2563eb1a);border-color:#2563eb66}.placeholder-link.npm-link{background:linear-gradient(135deg,#9333ea26,#9333ea0d);border-color:#9333ea4d;color:#9333ea}.placeholder-link.npm-link:hover{background:linear-gradient(135deg,#9333ea40,#9333ea1a);border-color:#9333ea66}.gallery-row{display:flex;gap:.75rem;overflow-x:auto;padding-bottom:.75rem;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.5) transparent}.gallery-row::-webkit-scrollbar{height:4px}.gallery-row::-webkit-scrollbar-track{background:transparent;border-radius:2px}.gallery-row::-webkit-scrollbar-thumb{background:linear-gradient(90deg,#fff6,#fff9);border-radius:2px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(255,255,255,.2)}.gallery-row::-webkit-scrollbar-thumb:hover{background:linear-gradient(90deg,#fff9,#fffc);transform:scaleY(1.2);border-color:#ffffff4d}.gallery-row::-webkit-scrollbar-thumb:active{background:linear-gradient(90deg,#ffffffb3,#ffffffe6)}.gallery-item{flex-shrink:0;cursor:pointer;border-radius:.5rem;overflow:hidden;height:140px;transition:all .3s cubic-bezier(.4,0,.2,1)}.gallery-image{width:240px;height:140px;object-fit:cover;transition:transform .3s cubic-bezier(.4,0,.2,1)}.image-expanded-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#fffffff2;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:1001;display:flex;align-items:center;justify-content:center;animation:fade-in .3s cubic-bezier(.4,0,.2,1) ease-out}.image-expanded-modal{position:relative;max-width:90vw;max-height:90vh;animation:slide-up .5s cubic-bezier(.4,0,.2,1)}.image-expanded-close{position:fixed;top:1.5rem;right:1.5rem;background:#ffffff26;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);color:#000;font-size:2rem;cursor:pointer;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s cubic-bezier(.4,0,.2,1);z-index:10;line-height:1;padding:0}.image-expanded-close::-moz-focus-inner{border:0;padding:0}.image-expanded-close:hover{background:#0003;color:#000;transform:scale(1.1)}.image-nav-button{position:fixed;top:50%;transform:translateY(-50%);background:none;border:1px solid rgba(255,255,255,.2);color:#000;font-size:1.5rem;cursor:pointer;width:3rem;height:3rem;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s cubic-bezier(.4,0,.2,1);z-index:10}.image-nav-button.image-nav-prev{left:1.5rem}.image-nav-button.image-nav-next{right:1.5rem}.image-nav-button:hover{background:#0003;color:#000}.image-expanded-content{position:relative;transition:all .4s cubic-bezier(.4,0,.2,1)}.image-expanded{max-width:100%;max-height:80vh;object-fit:contain;border-radius:.5rem;box-shadow:0 20px 60px #00000080;transition:all .4s cubic-bezier(.4,0,.2,1);opacity:1}.image-expanded.changing{opacity:.7;transform:scale(.98)}.image-subtitle{text-align:center;color:#000;margin-top:1.5rem;font-size:1.125rem;font-weight:500;transition:all .3s ease;padding:.5rem 1rem}.placeholder-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1rem}@media (max-width: 640px){.placeholder-grid{grid-template-columns:1fr}}.placeholder-item{height:100px;background:#fff3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:.5rem;border:1px solid rgba(255,255,255,.25);box-shadow:0 4px 16px #0000000f;opacity:.8;animation:pulse 2s ease-in-out infinite alternate}.placeholder-text{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.placeholder-line{height:16px;background:#ffffff40;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-radius:8px;border:1px solid rgba(255,255,255,.2);opacity:.7;animation:pulse 2s ease-in-out infinite alternate}.placeholder-line.short{width:60%}.placeholder-line.medium{width:80%}@keyframes slide-up{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pulse{0%{opacity:.6}to{opacity:.9}}@media (max-width: 1024px){.image-expanded-close,.project-detail-close{top:.5rem;right:.5rem}}@media (max-width: 768px){.image-nav-button{width:2.5rem;height:2.5rem;font-size:1.25rem}.image-nav-button.image-nav-prev{left:1rem}.image-nav-button.image-nav-next{right:1rem}}@media (max-width: 640px){.image-nav-button{width:2rem;height:2rem;font-size:1rem}.image-nav-button.image-nav-prev{left:.75rem}.image-nav-button.image-nav-next{right:.75rem}.image-expanded-close{width:2rem;height:2rem;font-size:1.5rem}}@keyframes gradient-shift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:400;line-height:1.5;color:#000;background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#111827}::-webkit-scrollbar-thumb{background:#686b6e;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#374151}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 1rem}.animate-fade-in{animation:fade-in .5s cubic-bezier(.4,0,.2,1) forwards}.animate-fade-out{animation:fade-out .5s cubic-bezier(.4,0,.2,1) forwards}.animate-slide-up{animation:slide-up .3s cubic-bezier(.4,0,.2,1) forwards}.animate-scale-in{animation:scale-in .3s cubic-bezier(.4,0,.2,1) forwards}.transition-all{transition:all .3s cubic-bezier(.4,0,.2,1)}.transition-opacity{transition:opacity .3s cubic-bezier(.4,0,.2,1)}.transition-transform{transition:transform .3s cubic-bezier(.4,0,.2,1)}.transition-filter{transition:filter .3s cubic-bezier(.4,0,.2,1)}.full-screen{width:100vw;height:100vh}.flex-center{display:flex;align-items:center;justify-content:center}.absolute-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.absolute-full{position:absolute;top:0;left:0;width:100%;height:100%}.app{position:relative;min-height:100vh;overflow:hidden}
