@import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap);@import url(https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@300;400;500;600&display=swap);:root{--color-prussian-blue:#0f2740;--color-tech-blue:#2a5caa;--color-bronze-spice:#c65a1e;--color-grey-olive:#85b7d8;--color-white-smoke:#f4f4f4;--color-primary:#2a5caa;--color-secondary:#c65a1e;--color-accent:#c65a1e;--color-background:#f4f4f4;--color-background-alt:#f4f4f4;--color-text:#0f2740;--color-text-light:#85b7d8;--color-border:#85b7d8;--color-hover:#2a5caa;--font-primary:"Montserrat",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-heading:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-secondary:"Source Code Pro","Monaco","Consolas",monospace;--font-heading-weight:500;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-xxl:48px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--shadow-sm:0 1px 3px #0000001a;--shadow-md:0 4px 12px #00000026;--shadow-lg:0 8px 24px #0003;--transition-fast:0.2s ease;--transition-normal:0.3s ease;--transition-slow:0.5s ease;--z-modal:1000;--z-overlay:999;--z-header:100;--z-content:10}*{box-sizing:border-box;margin:0;padding:0}html{background:#0000!important;overflow-x:hidden;scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;background:var(--color-background)!important;color:var(--color-text)!important;font-family:var(--font-primary)!important;line-height:1.6!important;overflow:visible!important}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:500}.App{background:#0000!important}code{font-family:Source Code Pro,source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.gallery-main-image,.maximized-image-popup,.portfolio-container,.project-tile{-webkit-backface-visibility:hidden;backface-visibility:hidden;perspective:1000px;transform:translateZ(0);will-change:transform}.about-btn,.contact-btn{transition:transform .2s ease,opacity .2s ease;will-change:transform}.about-btn:hover,.contact-btn:hover{transform:translateY(-2px) translateZ(0)}img{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges;transform:translateZ(0)}.project-tile-img{contain:layout style paint}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.portfolio-container{contain:layout style}.about-modal-content,.project-modal-container{transform:translateZ(0);will-change:transform,opacity}.dragging,.dragging *{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.gallery-main,.maximized-image-popup{touch-action:pan-x pan-y pinch-zoom;will-change:transform}.project-tile{background:#0000;border:none;box-shadow:none;cursor:pointer;overflow:hidden;position:absolute;transition:transform var(--transition-fast);will-change:transform,left,top;z-index:20}.project-tile,.project-tile-img{border-radius:8px;transform:translateZ(0)}.project-tile-img{border:none;display:block;object-fit:cover;outline:none;transition:transform var(--transition-normal),filter var(--transition-normal)}.project-tile:hover{box-shadow:0 6px 16px #15232040;transform:translateY(-1px) translateZ(0)}.project-tile:hover .project-tile-img{filter:brightness(1.02);transform:scale(1.01) translateZ(0)}.project-tile-overlay{align-items:flex-start;background:none;bottom:var(--spacing-md);color:var(--color-white-smoke);display:flex;flex-direction:column;font-weight:600;gap:var(--spacing-xs);left:var(--spacing-md);opacity:0;padding:0;position:absolute;right:var(--spacing-md);text-align:left;transform:translateY(20px);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:10}.project-tile:hover .project-tile-overlay{opacity:1;transform:translateY(0)}.project-tile-title{background:var(--color-prussian-blue);border-radius:var(--radius-md);box-shadow:0 2px 8px #17243f4d;font-size:1rem;font-weight:700;letter-spacing:-.02em;line-height:1.3;padding:var(--spacing-xs) var(--spacing-sm)}.project-tile-title,.project-tile-year{align-self:flex-start;color:var(--color-white-smoke);display:inline-block;margin:0;width:-webkit-fit-content;width:fit-content}.project-tile-year{background:var(--color-tech-blue);border-radius:var(--radius-sm);box-shadow:0 1px 4px #0003;font-size:.7rem;font-weight:500;letter-spacing:.05em;padding:2px var(--spacing-xs);text-align:left;text-transform:uppercase}.project-tile{position:relative}@media (max-width:768px){.project-tile{min-height:44px;min-width:44px}.project-tile-title{font-size:.8rem}.project-tile-year{font-size:.6rem;padding:1px var(--spacing-xs)}}@media (hover:none) and (pointer:coarse){.project-tile:hover .project-tile-img{transform:none}.project-tile:hover .project-tile-overlay{opacity:1;transform:translateY(0)}.project-tile-overlay{bottom:var(--spacing-sm);left:var(--spacing-sm);opacity:.9;right:var(--spacing-sm);transform:translateY(0)}.project-tile-title{font-size:.9rem;padding:var(--spacing-xs) var(--spacing-sm)}.project-tile-year{font-size:.7rem}}@supports not ((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.project-tile-year{background:var(--color-secondary)}}.modal-backdrop{align-items:center;animation:fadeIn .3s ease-out forwards;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0009;bottom:0;display:flex;justify-content:center;left:0;opacity:0;padding:var(--spacing-lg);position:fixed;right:0;top:0;z-index:9999}.modal-container{animation:modalSlideIn .3s ease-out forwards;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:0 20px 40px #17243f26;max-height:90vh;max-width:1000px;overflow-y:auto;transform:scale(.9) translateY(20px);width:100%}.modal-header{align-items:center;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;padding:var(--spacing-xl) var(--spacing-xl) var(--spacing-lg)}.modal-title{font-family:var(--font-heading);font-size:1.5rem;font-weight:800;font-weight:700;margin:0}.modal-close-btn,.modal-title{color:var(--color-prussian-blue)}.modal-close-btn{align-items:center;background:none;border:none;border-radius:var(--radius-sm);cursor:pointer;display:flex;justify-content:center;padding:var(--spacing-sm);transition:all var(--transition-fast)}.modal-close-btn:hover{background:var(--color-tech-blue)}.modal-close-btn:hover,.modal-close-btn:hover svg{color:var(--color-white-smoke)}.modal-close-btn:focus{outline:2px solid var(--color-accent);outline-offset:2px}.modal-content{grid-gap:60px;display:grid;gap:60px;grid-template-columns:1fr 1fr;padding:var(--spacing-xl)}.contact-info{display:flex;flex-direction:column;gap:var(--spacing-xl)}.contact-intro{color:var(--color-tech-blue);font-family:var(--font-primary);font-weight:400;line-height:1.6;margin:0}.contact-methods{display:flex;flex-direction:column;gap:var(--spacing-lg)}.contact-method{align-items:center;border:1px solid #0000;border-radius:var(--radius-md);cursor:pointer;display:flex;gap:var(--spacing-md);padding:var(--spacing-md);transition:all var(--transition-fast)}.contact-method:hover{background:#0000;border:1px solid var(--color-tech-blue);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.contact-method.clickable{border:1px solid #0000;cursor:pointer;transition:all var(--transition-fast)}.contact-method.clickable:hover{background:#0000;border:1px solid var(--color-tech-blue);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.contact-icon{align-items:center;background:var(--color-prussian-blue);border-radius:var(--radius-md);color:var(--color-white-smoke);display:flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.contact-details{display:flex;flex-direction:column;gap:2px}.contact-label{color:var(--color-prussian-blue);font-size:.875rem;font-weight:700}.contact-label,.contact-value{font-family:var(--font-primary)}.contact-value{color:var(--color-tech-blue);font-size:1rem;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.form-row{grid-gap:var(--spacing-md);display:grid;gap:var(--spacing-md);grid-template-columns:1fr 1fr}.form-group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.form-label{font-size:.875rem}.form-input,.form-label,.form-textarea{color:var(--color-text);font-family:var(--font-primary);font-weight:400}.form-input,.form-textarea{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:1rem;padding:var(--spacing-md);transition:all var(--transition-fast)}.form-input:focus,.form-textarea:focus{background:var(--color-background);border-color:var(--color-bronze-spice);box-shadow:0 0 0 3px #c65a1e1a;color:var(--color-text);outline:none}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-light)}.form-input:focus::placeholder,.form-textarea:focus::placeholder{color:#fffbf5b3}.form-textarea{font-family:var(--font-primary);min-height:120px;resize:vertical}.form-actions{display:flex;gap:var(--spacing-md);justify-content:flex-end;margin-top:var(--spacing-lg)}.btn-primary,.btn-secondary{border:none;border-radius:var(--radius-md);font-family:var(--font-primary);font-size:1rem;font-weight:400;padding:var(--spacing-md) var(--spacing-xl)}.btn-primary,.btn-secondary{cursor:pointer;transition:all var(--transition-fast)}.btn-primary{align-items:center;animation:smoothPulse 4s ease-in-out infinite;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--color-prussian-blue);border:2px solid var(--color-prussian-blue);border-radius:var(--radius-lg);box-shadow:0 4px 12px #08364526,0 0 4px var(--color-prussian-blue);color:var(--color-white-smoke);display:flex;font-family:var(--font-heading);font-size:.9rem;font-weight:800;font-weight:600;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg)}.btn-primary:hover{background:var(--color-grey-olive);border-color:var(--color-grey-olive);box-shadow:0 8px 24px #85b7d859,0 0 8px var(--color-grey-olive),0 0 12px var(--color-grey-olive),0 0 16px #85b7d866;color:var(--color-prussian-blue);transform:translateY(-2px)}.btn-primary:focus{outline:2px solid var(--color-accent);outline-offset:2px}.btn-secondary{background:#0000;border:1px solid var(--color-primary);color:var(--color-primary)}.btn-secondary:hover{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-background)}.btn-secondary:focus{outline:2px solid var(--color-secondary);outline-offset:2px}@keyframes modalSlideIn{0%{transform:scale(.9) translateY(20px)}to{transform:scale(1) translateY(0)}}.success-overlay{align-items:center;animation:fadeIn .3s ease-out;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.success-message{animation:successSlideIn .4s ease-out forwards;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:0 20px 40px #15232026;max-width:400px;padding:var(--spacing-xxl);text-align:center;transform:scale(.8) translateY(20px);width:90%}.success-icon{animation:successIconBounce .6s ease-out .2s both;color:var(--color-accent);margin-bottom:var(--spacing-lg)}.success-title{animation:successTextSlide .5s ease-out .3s both;color:var(--color-primary);font-size:1.5rem;font-weight:600;margin:0 0 var(--spacing-md) 0}.success-text{animation:successTextSlide .5s ease-out .4s both;color:var(--color-text-light);line-height:1.5;margin:0}@keyframes successSlideIn{0%{opacity:0;transform:scale(.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes successIconBounce{0%{opacity:0;transform:scale(0)}50%{transform:scale(1.2)}to{opacity:1;transform:scale(1)}}@keyframes successTextSlide{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (max-width:1024px){.modal-container{max-width:900px}.modal-content{gap:40px}}@media (max-width:768px){.modal-backdrop{padding:var(--spacing-md)}.modal-container{max-height:95vh}.modal-header{padding:var(--spacing-lg)}.modal-title{font-size:1.25rem}.modal-content{gap:var(--spacing-xl);padding:var(--spacing-lg)}.form-row,.modal-content{grid-template-columns:1fr}.form-actions{flex-direction:column}.btn-primary,.btn-secondary{width:100%}.contact-methods{gap:var(--spacing-md)}.contact-method{padding:var(--spacing-sm)}}@media (max-width:480px){.modal-backdrop{padding:var(--spacing-sm)}.modal-content,.modal-header{padding:var(--spacing-md)}.contact-method{flex-direction:column;gap:var(--spacing-sm);text-align:center}.contact-icon{align-self:center}}.modal-backdrop:focus-within{outline:none}@media (prefers-contrast:high){.modal-container{border:2px solid var(--color-primary)}.form-input,.form-textarea{border:2px solid var(--color-border)}.form-input:focus,.form-textarea:focus{border-color:var(--color-primary)}}@media (prefers-reduced-motion:reduce){.btn-primary,.btn-secondary,.contact-method,.modal-backdrop,.modal-close-btn,.modal-container,.success-icon,.success-message,.success-overlay,.success-text,.success-title{animation:none;transition:none}}.project-modal-backdrop{align-items:center;animation:projectModalFadeIn .4s ease-out forwards;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#000c;bottom:0;display:flex;justify-content:center;left:0;opacity:0;overflow:hidden;padding:var(--spacing-lg);position:fixed;right:0;top:0;z-index:10000}.project-modal-container{animation:projectModalSlideIn .4s ease-out forwards;border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:0 20px 40px #17243f26;flex-direction:column;height:90vh;max-height:90vh;max-width:1200px;overflow:hidden;transform:scale(.85) translateY(40px);width:100%}.project-modal-container,.project-modal-header{background:var(--color-background);display:flex}.project-modal-header{align-items:flex-start;border-bottom:1px solid var(--color-border);border-radius:var(--radius-xl) var(--radius-xl) 0 0;justify-content:space-between;padding:var(--spacing-xl) var(--spacing-xl) var(--spacing-lg)}.project-header-info{flex:1 1}.project-modal-title{color:var(--color-prussian-blue);font-family:var(--font-heading);font-size:2rem;font-weight:500;line-height:1.2;margin:0 0 var(--spacing-xs) 0}.project-modal-subtitle{color:var(--color-prussian-blue);font-family:var(--font-primary);font-size:1.1rem;font-weight:400;line-height:1.4;margin:0 0 var(--spacing-sm) 0}.project-meta{align-items:center;display:flex;gap:var(--spacing-md)}.project-year{background:var(--color-secondary);border-radius:var(--radius-sm);box-shadow:0 1px 4px #0003;color:var(--color-background);font-family:var(--font-primary);font-size:.7rem;font-weight:400;letter-spacing:.05em;padding:2px var(--spacing-xs);text-transform:uppercase}.project-client{color:var(--color-prussian-blue);font-size:.875rem;font-weight:500}.project-client[data-award=true]{font-weight:700}.project-modal-close-btn{align-items:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-prussian-blue);cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:var(--spacing-sm);transition:all var(--transition-fast)}.project-modal-close-btn:hover{background:var(--color-tech-blue);color:var(--color-white-smoke)}.project-modal-close-btn:hover svg{color:var(--color-white-smoke)}.project-modal-close-btn:focus{outline:2px solid var(--color-accent);outline-offset:2px}.project-modal-content{grid-gap:var(--spacing-xxl);-webkit-overflow-scrolling:touch;display:grid;flex:1 1;gap:var(--spacing-xxl);grid-template-columns:1fr 1fr;overflow-x:hidden;overflow-y:hidden;padding:var(--spacing-xl)}.project-gallery{align-self:start;display:flex;flex-direction:column;gap:var(--spacing-md);height:-webkit-fit-content;height:fit-content;position:-webkit-sticky;position:sticky;top:0}.gallery-main{background:#0000;border-radius:var(--radius-lg);overflow:hidden;position:relative}.gallery-main-image{border-radius:var(--radius-lg);display:block;height:500px;max-height:500px;object-fit:contain;transition:transform var(--transition-normal);width:100%}.gallery-main-image[src$=".gif"],.gallery-main-image[src*=".gif"]{object-fit:cover;object-position:center}.gallery-main-image:hover{transform:scale(1.02)}.maximized-image-popup{animation:imagePopupFadeIn .3s ease-out;border-radius:var(--radius-lg);box-shadow:0 20px 40px #00000080;cursor:pointer;display:block!important;height:auto;left:50%;max-height:90vh;max-width:90vw;object-fit:contain;position:fixed;top:50%;transform:translate(-50%,-50%);width:auto;z-index:1001!important}.maximized-image-popup[src$=".gif"],.maximized-image-popup[src*=".gif"]{border-radius:0;height:100vh;max-height:100vh;max-width:100vw;object-fit:cover;width:100vw}.maximized-image-popup:hover{transform:translate(-50%,-50%) scale(1.01)}@keyframes imagePopupFadeIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.maximized-image-backdrop{animation:backdropFadeIn .3s ease-out;background:#000c;cursor:pointer;display:block!important;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1000!important}@keyframes backdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes backdropFadeOut{0%{opacity:1}to{opacity:0}}@keyframes imagePopupFadeOut{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.9)}}.gallery-nav-btn{align-items:center;background:#000000b3;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;height:40px;justify-content:center;opacity:0;position:absolute;top:50%;transform:translateY(-50%);transition:all var(--transition-fast);width:40px;z-index:10}.gallery-main:hover .gallery-nav-btn{opacity:1}.gallery-nav-btn:hover{background:#000000e6;transform:translateY(-50%) scale(1.1)}.gallery-nav-prev{left:var(--spacing-md)}.gallery-nav-next{right:var(--spacing-md)}.gallery-thumbnails{grid-gap:var(--spacing-sm);display:grid;gap:var(--spacing-sm);grid-template-columns:repeat(auto-fit,minmax(80px,1fr))}.gallery-thumbnail{background:#0000;border:none;border-radius:var(--radius-lg);cursor:pointer;height:80px;object-fit:contain;opacity:.7;transition:all var(--transition-fast);width:100%}.gallery-thumbnail:hover{opacity:.9;transform:scale(1.05)}.gallery-thumbnail.active{opacity:1;transform:scale(1.05)}.project-details{-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:var(--spacing-xl);max-height:calc(90vh - 200px);overflow-x:hidden;overflow-y:auto;padding-right:var(--spacing-sm)}.project-details::-webkit-scrollbar{width:8px}.project-details::-webkit-scrollbar-track{background:var(--color-background-alt);border-radius:4px}.project-details::-webkit-scrollbar-thumb{background:var(--color-grey-olive);border-radius:4px}.project-details::-webkit-scrollbar-thumb:hover{background:var(--color-tech-blue)}.project-tags{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);margin-top:var(--spacing-sm)}.project-tag{background:var(--color-tech-blue);border-radius:var(--radius-md);box-shadow:0 2px 4px #057bc11a;color:var(--color-white-smoke);font-family:var(--font-primary);font-size:.85rem;font-weight:400;padding:var(--spacing-xs) var(--spacing-sm);transition:all var(--transition-fast)}.project-tag:hover{background:var(--color-bronze-spice);box-shadow:0 4px 8px #c65a1e4d;color:var(--color-white-smoke);transform:translateY(-1px)}.project-section{display:flex;flex-direction:column;gap:var(--spacing-sm)}.project-section+.project-section{margin-top:var(--spacing-xl)}.section-title{align-items:center;color:var(--color-prussian-blue);display:flex;font-family:var(--font-heading);font-size:1.25rem;font-weight:500;gap:var(--spacing-sm);margin:0 0 var(--spacing-md) 0}.section-title:before{background:var(--color-secondary);border-radius:2px;content:"";height:20px;width:4px}.project-description,.project-text{color:var(--color-text);font-family:var(--font-primary);font-weight:400;line-height:1.6;margin:0 0 var(--spacing-md) 0}.project-section>.project-description:last-child,.project-section>.project-text:last-child{margin-bottom:0}.technologies-list{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.technology-item{background:var(--color-accent);border-radius:var(--radius-sm);color:var(--color-primary);cursor:default;font-family:var(--font-primary);font-size:.875rem;font-weight:400;padding:var(--spacing-xs) var(--spacing-sm);transition:all var(--transition-fast)}.technology-item:hover{background:var(--color-secondary);box-shadow:0 4px 8px #1877734d;color:var(--color-background);transform:translateY(-1px)}.testimonial-section{background:var(--color-hover);border-left:4px solid var(--color-accent);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.testimonial{margin:0}.testimonial-text{color:var(--color-text);font-size:1.1rem;font-style:italic;line-height:1.6;margin:0 0 var(--spacing-md) 0}.testimonial-author{display:flex;flex-direction:column;font-style:normal;gap:2px}.author-name{color:var(--color-primary);font-size:.95rem;font-weight:600}.author-role{color:var(--color-prussian-blue);font-size:.875rem}.project-links{display:flex;flex-wrap:wrap;gap:var(--spacing-md)}.project-link{align-items:center;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);display:inline-flex;font-weight:500;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);text-decoration:none;transition:all var(--transition-fast)}.project-link.primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-primary)}.project-link:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.project-link.primary:hover{background:#e55a5a}.project-link:focus{outline:2px solid var(--color-accent);outline-offset:2px}@keyframes projectModalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes projectModalSlideIn{0%{transform:scale(.85) translateY(40px)}to{transform:scale(1) translateY(0)}}@media (max-width:1024px){.project-modal-container{max-height:95vh;max-width:95vw}.gallery-main-image{height:400px;max-height:400px}.maximized-image-popup{height:auto;max-height:95vh;max-width:95vw;width:auto}.project-modal-content{gap:var(--spacing-xl)}.project-modal-title{font-size:1.75rem}}@media (max-width:768px){.project-modal-backdrop{padding:var(--spacing-md)}.project-modal-container{max-height:95vh}.gallery-main-image{height:300px;max-height:300px}.maximized-image-popup{height:auto;max-height:98vh;max-width:98vw;width:auto}.project-modal-header{flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-lg)}.project-modal-title{font-size:1.5rem}.project-modal-content{gap:var(--spacing-lg);grid-template-columns:1fr;padding:var(--spacing-lg)}.gallery-thumbnails{grid-template-columns:repeat(4,1fr)}.gallery-nav-btn{opacity:1}.project-links{flex-direction:column}.project-link{justify-content:center}}@media (max-width:480px){.project-modal-backdrop{padding:var(--spacing-sm)}.project-modal-content,.project-modal-header{padding:var(--spacing-md)}.project-modal-title{font-size:1.25rem}.project-meta{align-items:flex-start;flex-direction:column;gap:var(--spacing-sm)}.gallery-thumbnails{grid-template-columns:repeat(3,1fr)}.gallery-thumbnail{height:60px}}@media (prefers-contrast:high){.project-modal-container{border:2px solid var(--color-primary)}.project-link{border:2px solid var(--color-border)}}@media (prefers-reduced-motion:reduce){.gallery-main-image,.gallery-thumbnail,.project-link,.project-modal-backdrop,.project-modal-close-btn,.project-modal-container{animation:none;transition:none}}.project-body-text{margin-top:var(--spacing-sm)}.body-text-content{color:var(--color-text);font-size:16px;line-height:1.7;margin-bottom:var(--spacing-xl)}.body-text-content h1,.body-text-content h2,.body-text-content h3,.body-text-content h4,.body-text-content h5,.body-text-content h6{color:var(--color-prussian-blue);font-family:var(--font-heading);font-weight:500;margin:var(--spacing-xl) 0 var(--spacing-md) 0}.body-text-content>h1:first-child,.body-text-content>h2:first-child,.body-text-content>h3:first-child,.body-text-content>h4:first-child,.body-text-content>h5:first-child,.body-text-content>h6:first-child{margin-top:0}.body-text-content h1{font-size:28px;line-height:1.3}.body-text-content h2{font-size:24px;line-height:1.3}.body-text-content h3{font-size:20px;line-height:1.4}.body-text-content p{line-height:1.7;margin-bottom:var(--spacing-md)}.body-text-content p+h1,.body-text-content p+h2,.body-text-content p+h3,.body-text-content p+h4,.body-text-content p+h5,.body-text-content p+h6{margin-top:var(--spacing-xl)}.body-text-content h1+p,.body-text-content h2+p,.body-text-content h3+p,.body-text-content h4+p,.body-text-content h5+p,.body-text-content h6+p{margin-top:0}.body-text-content ol,.body-text-content ul{margin:var(--spacing-md) 0;padding-left:var(--spacing-lg)}.body-text-content li{line-height:1.6;margin-bottom:var(--spacing-xs)}.body-text-content blockquote{border-left:4px solid var(--color-primary);color:var(--color-text-secondary);font-style:italic;margin:var(--spacing-lg) 0;padding-left:var(--spacing-lg)}.body-text-content strong{color:var(--color-text);font-weight:600}.body-text-content em{color:var(--color-text-secondary);font-style:italic}.body-text-content .process-image-slider{-webkit-overflow-scrolling:touch;-ms-overflow-style:none;align-items:center;display:flex;flex-wrap:nowrap;gap:var(--spacing-sm);justify-content:flex-start;margin:var(--spacing-md) 0;overflow-x:auto;position:relative;scroll-behavior:smooth;scrollbar-width:none}.body-text-content .process-image-slider::-webkit-scrollbar{display:none}.inline-slider-nav-btn{align-items:center;background:#ffffffe6;border:none;border-radius:50%;box-shadow:0 2px 8px #0000001a;color:var(--color-prussian-blue);cursor:pointer;display:flex;height:32px;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);transition:all .2s ease;width:32px;z-index:2}.inline-slider-nav-btn:hover{background:#fff;transform:translateY(-50%) scale(1.1)}.inline-slider-prev{left:5px}.inline-slider-next{right:5px}.body-text-content .process-image-inline{border-radius:var(--radius-md);box-shadow:0 4px 12px #17243f1a;cursor:pointer;flex-shrink:0;height:150px;object-fit:cover;pointer-events:auto!important;position:relative;transition:all .3s ease;width:200px;z-index:10005!important}@media (max-width:768px){.body-text-content .process-image-inline{height:112px;width:150px}.body-text-content{font-size:15px}.body-text-content h1{font-size:24px}.body-text-content h2{font-size:20px}.body-text-content h3{font-size:18px}}.about-modal-overlay{align-items:center;animation:fadeIn .3s ease-out;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#000c;bottom:0;display:flex;justify-content:center;left:0;overflow:hidden;padding:var(--spacing-lg);position:fixed;right:0;top:0;z-index:9999}.about-modal-content{animation:slideUp .4s ease-out;background:var(--color-background);border:2px solid var(--color-royal);border-radius:var(--radius-xl);box-shadow:0 20px 40px #17243f26;display:flex;flex-direction:column;height:90vh;max-height:90vh;max-width:1000px;overflow:hidden;position:relative;width:100%}.about-modal-scrollable{-webkit-overflow-scrolling:touch;flex:1 1;overflow-x:hidden;overflow-y:auto;padding:var(--spacing-lg)}.about-modal-close{align-items:center;background:var(--color-prussian-blue);border:2px solid var(--color-prussian-blue);border-radius:50%;box-shadow:0 4px 12px #08364526;color:var(--color-white-smoke);cursor:pointer;display:flex;height:44px;justify-content:center;position:absolute;right:var(--spacing-lg);top:var(--spacing-lg);transition:all var(--transition-normal);width:44px;z-index:10}.about-modal-close:hover{background:var(--color-tech-blue);border-color:var(--color-tech-blue);box-shadow:0 8px 24px #057bc159;transform:translateY(-2px)}.about-modal-close svg{height:20px;width:20px}.about-modal-close svg,.about-modal-close:hover svg{color:var(--color-white-smoke)}.about-modal-header{align-items:flex-start;background:var(--color-background);border-radius:var(--radius-xl) var(--radius-xl) 0 0;display:flex;gap:var(--spacing-xl);overflow:hidden;padding:12px var(--spacing-xxl) var(--spacing-xl);position:relative}.about-modal-header:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cdefs%3E%3Cpattern id='a' width='100' height='100' patternUnits='userSpaceOnUse'%3E%3Ccircle cx='25' cy='25' r='1' fill='%23fff' opacity='.1'/%3E%3Ccircle cx='75' cy='75' r='1' fill='%23fff' opacity='.1'/%3E%3Ccircle cx='50' cy='10' r='.5' fill='%23fff' opacity='.1'/%3E%3C/pattern%3E%3C/defs%3E%3Cpath fill='url(%23a)' d='M0 0h100v100H0z'/%3E%3C/svg%3E");bottom:0;content:"";left:0;opacity:.3;pointer-events:none;position:absolute;right:0;top:0}.about-hero-image{border:4px solid var(--color-royal);border-radius:50%;box-shadow:0 8px 24px #1523204d;flex-shrink:0;height:200px;overflow:hidden;position:relative;width:200px;z-index:2}.about-hero-image img{height:100%;object-fit:cover;width:100%}.about-hero-content{flex:1 1;position:relative;z-index:2}.about-hero-content h1{font-size:1.5rem;font-weight:800;font-weight:700;letter-spacing:-.02em;margin:0 0 var(--spacing-sm) 0}.about-hero-content h1,.about-hero-content h2{color:var(--color-prussian-blue);font-family:var(--font-heading)}.about-hero-content h2{font-size:1.3rem;font-weight:800;font-weight:400;letter-spacing:.01em;margin:0 0 var(--spacing-md) 0}.about-intro{color:var(--color-prussian-blue);font-family:var(--font-primary);font-size:1.1rem;font-weight:400;line-height:1.6;margin:0 0 var(--spacing-sm) 0;opacity:1}.about-modal-body{padding:0}.about-section{margin-bottom:var(--spacing-xxl);opacity:0;transform:translateY(30px);transition:all .6s ease-out}.about-section:last-child{margin-bottom:0}.about-section.visible{opacity:1;transform:translateY(0)}.about-section:first-child.visible{transition-delay:.1s}.about-section:nth-child(2).visible{transition-delay:.2s}.about-section:nth-child(3).visible{transition-delay:.3s}.about-section:nth-child(4).visible{transition-delay:.4s}.about-section:nth-child(5).visible{transition-delay:.5s}.about-section h3{color:var(--color-prussian-blue);font-family:var(--font-heading);font-size:1.5rem;font-weight:800;font-weight:700;margin:0 0 var(--spacing-lg) 0;padding-left:var(--spacing-md);position:relative}.about-section h3:before{background:var(--color-secondary);border-radius:2px;content:"";height:24px;left:0;position:absolute;top:50%;transform:translateY(-50%);width:4px}.about-section>p{color:var(--color-prussian-blue);font-family:var(--font-primary);font-size:1rem;font-weight:400;line-height:1.7;margin:0 0 var(--spacing-md) 0;opacity:.9;padding-left:var(--spacing-md)}.expertise-grid{grid-gap:var(--spacing-lg);display:grid;gap:var(--spacing-lg);grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-top:var(--spacing-lg)}.expertise-item{background:var(--color-sand);border:1px solid var(--color-secondary);border-radius:var(--radius-lg);padding:var(--spacing-lg);transition:all var(--transition-normal)}.expertise-item:hover{border-color:var(--color-secondary);box-shadow:0 8px 24px #18777340;transform:translateY(-2px)}.expertise-item h4{font-size:1.1rem;font-weight:600;margin:0 0 var(--spacing-sm) 0}.expertise-item h4,.expertise-item p{color:var(--color-prussian-blue);font-family:var(--font-primary)}.expertise-item p{font-size:.9rem;font-weight:400;line-height:1.5;margin:0;opacity:.8}.project-highlights{display:flex;flex-direction:column;gap:var(--spacing-lg);margin-top:var(--spacing-lg);padding-left:var(--spacing-md)}.highlight-item{align-items:center;background:#0000;border:2px solid var(--color-tech-blue);border-radius:var(--radius-lg);display:flex;gap:var(--spacing-lg);padding:var(--spacing-lg);transition:all var(--transition-normal)}.highlight-item.clickable{cursor:pointer}.highlight-item:hover{box-shadow:0 8px 24px #4dd8ff26;transform:translateY(-2px)}.highlight-item.clickable:hover{border-color:var(--color-tech-blue);box-shadow:0 12px 32px #4dd8ff40;transform:translateY(-4px)}.highlight-preview{border:2px solid var(--color-royal);border-radius:var(--radius-lg);box-shadow:0 4px 12px #788ce333;flex-shrink:0;height:80px;overflow:hidden;width:80px}.highlight-preview img{height:100%;object-fit:cover;width:100%}.highlight-content{flex:1 1}.highlight-content h4{color:var(--color-prussian-blue);font-size:1.1rem;font-weight:600;margin:0 0 var(--spacing-sm) 0}.highlight-content p{color:var(--color-prussian-blue);font-size:.95rem;line-height:1.6;margin:0;opacity:.9}.project-award{color:var(--color-secondary);font-family:var(--font-primary);font-size:.85rem;font-style:italic;font-weight:500;margin-top:var(--spacing-xs)}.scroll-down-btn{align-items:center;background:var(--color-prussian-blue);border:2px solid var(--color-prussian-blue);border-radius:50%;bottom:var(--spacing-lg);box-shadow:0 4px 12px #08364526;cursor:pointer;display:flex;height:48px;justify-content:center;opacity:1;position:absolute;right:var(--spacing-lg);transform:translateY(0);transition:all var(--transition-normal);width:48px;z-index:10}.scroll-down-btn:hover{background:var(--color-tech-blue);border-color:var(--color-tech-blue);box-shadow:0 8px 24px #057bc159;transform:translateY(-2px)}.scroll-down-btn svg{color:var(--color-white-smoke);transition:all var(--transition-normal)}.scroll-down-btn:hover svg{color:var(--color-white-smoke);transform:translateY(2px)}.tools-list{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);margin-top:var(--spacing-lg)}.tool-tag{background:var(--color-secondary);border:1px solid var(--color-secondary);border-radius:var(--radius-md);box-shadow:0 2px 4px #1523201a;font-family:var(--font-primary);font-size:.85rem;font-weight:400;padding:var(--spacing-xs) var(--spacing-sm);transition:all var(--transition-fast)}.tool-tag,.tool-tag:hover{color:var(--color-white-smoke)}.tool-tag:hover{background:var(--color-bronze-spice);border-color:var(--color-bronze-spice);box-shadow:0 4px 8px #c65a1e4d;transform:translateY(-1px)}.about-cta{display:flex;justify-content:center;margin-top:var(--spacing-xl);padding-left:var(--spacing-md)}.cta-button{align-items:center;background:var(--color-royal);border:2px solid var(--color-royal);border-radius:var(--radius-lg);color:var(--color-white-smoke);display:inline-flex;font-size:1rem;font-weight:600;overflow:hidden;padding:var(--spacing-md) var(--spacing-lg);position:relative;text-decoration:none;transition:all var(--transition-fast)}.cta-button:before{background:var(--color-background);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.cta-button:hover:before{left:100%}.cta-button:hover{background:var(--color-primary);border-color:var(--color-primary);box-shadow:0 8px 24px #1523204d;color:var(--color-white-smoke);transform:translateY(-2px)}.cta-button.secondary{align-items:center;animation:smoothPulse 4s ease-in-out infinite;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--color-prussian-blue);border:2px solid var(--color-prussian-blue);border-radius:var(--radius-lg);box-shadow:0 4px 12px #15232026,0 0 4px var(--color-secondary);color:var(--color-white-smoke);cursor:pointer;display:flex;font-family:var(--font-heading);font-size:.9rem;font-weight:800;font-weight:600;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);transition:all var(--transition-fast)}.cta-button.secondary:hover{background:var(--color-tech-blue);border-color:var(--color-tech-blue);box-shadow:0 8px 24px #15232040,0 0 8px var(--color-secondary),0 0 12px var(--color-secondary),0 0 16px #18777366;color:var(--color-white-smoke);transform:translateY(-2px)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:768px){.about-modal-overlay{padding:var(--spacing-md)}.about-modal-header{flex-direction:column;gap:var(--spacing-lg);padding:var(--spacing-xl) var(--spacing-lg);text-align:center}.about-hero-image{height:150px;width:150px}.about-hero-content h1{font-size:1.5rem}.about-hero-content h2{font-size:1.1rem}.about-modal-body{padding:0}.expertise-grid{grid-template-columns:1fr}.about-cta{flex-direction:column}.cta-button{justify-content:center}.highlight-item{flex-direction:column;gap:var(--spacing-md);text-align:center}.highlight-preview{height:100px;margin:0 auto;width:100px}}@media (max-width:480px){.about-modal-content{margin:var(--spacing-sm);max-height:95vh}.about-hero-content h1,.about-section h3{font-size:1.5rem}}.portfolio-container{-webkit-overflow-scrolling:touch;-webkit-overflow-scrolling:auto;-webkit-touch-callout:none;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent;background:#0000;contain:none;height:100vh;overflow:visible;overscroll-behavior:none;overscroll-behavior-x:none;overscroll-behavior-y:none;position:relative;touch-action:manipulation;transform:translateZ(0);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-khtml-user-select:none;width:100vw;will-change:transform}.about-btn{align-items:center;animation:smoothPulse 4s ease-in-out infinite;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--color-prussian-blue);border:2px solid var(--color-prussian-blue);border-radius:var(--radius-lg);box-shadow:0 4px 12px #08364526,0 0 4px var(--color-prussian-blue);color:var(--color-white-smoke);cursor:pointer;display:flex;font-family:var(--font-heading);font-size:.9rem;gap:var(--spacing-sm);justify-content:center;left:var(--spacing-lg);padding:var(--spacing-md) var(--spacing-lg);position:fixed;top:var(--spacing-lg);transition:all var(--transition-fast);z-index:1002}.about-btn:hover{background:var(--color-tech-blue);border-color:var(--color-tech-blue);box-shadow:0 8px 24px #2a5caa59,0 0 8px var(--color-tech-blue),0 0 12px var(--color-tech-blue),0 0 16px #2a5caa66;transform:translateY(-2px)}.about-btn svg{height:16px;width:16px}.contact-btn{align-items:center;animation:smoothPulse 4s ease-in-out infinite;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--color-prussian-blue);border:2px solid var(--color-prussian-blue);border-radius:var(--radius-lg);box-shadow:0 4px 12px #08364526,0 0 4px var(--color-prussian-blue);color:var(--color-white-smoke);cursor:pointer;display:flex;font-family:var(--font-heading);font-size:.9rem;gap:var(--spacing-sm);justify-content:center;padding:var(--spacing-md) var(--spacing-lg);position:fixed;right:var(--spacing-lg);top:var(--spacing-lg);transition:all var(--transition-fast);z-index:1002}.contact-btn:hover{background:var(--color-tech-blue);border-color:var(--color-tech-blue);box-shadow:0 8px 24px #2a5caa59,0 0 8px var(--color-tech-blue),0 0 12px var(--color-tech-blue),0 0 16px #2a5caa66;transform:translateY(-2px)}.contact-btn svg{height:16px;width:16px}@keyframes smoothPulse{0%{box-shadow:0 4px 12px #08364526,0 0 2px var(--color-prussian-blue)}50%{box-shadow:0 4px 12px #08364526,0 0 6px var(--color-prussian-blue),0 0 8px var(--color-prussian-blue)}to{box-shadow:0 4px 12px #08364526,0 0 2px var(--color-prussian-blue)}}@media (max-width:1024px){.about-btn{font-size:.8rem;left:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);top:var(--spacing-md)}}@media (max-width:768px){.portfolio-container{-webkit-tap-highlight-color:transparent;touch-action:manipulation}.about-btn{left:var(--spacing-sm)}.about-btn,.contact-btn{font-size:.7rem;min-height:44px;min-width:44px;padding:var(--spacing-xs) var(--spacing-sm);top:var(--spacing-sm)}.contact-btn{right:var(--spacing-sm)}}@media (max-width:480px){.about-btn{left:var(--spacing-xs)}.about-btn,.contact-btn{font-size:.6rem;min-height:40px;min-width:40px;padding:var(--spacing-xs);top:var(--spacing-xs)}.contact-btn{right:var(--spacing-xs)}}@supports not ((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.contact-btn{background:#fffffff2}}.version-tag{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border:1px solid #fff3;border-radius:8px;bottom:20px;color:#fffc;font-family:Source Code Pro,monospace;font-size:12px;font-weight:500;padding:8px 12px;pointer-events:none;position:fixed;right:20px;-webkit-user-select:none;user-select:none;z-index:1000}.three-dot-container{flex-direction:column;gap:12px}.three-dot-container,.three-dot-wrapper{align-items:center;display:flex;justify-content:center}.three-dot-wrapper{gap:8px}.three-dot-dot{border-radius:50%;display:inline-block}.three-dot-pulsate .three-dot-dot{animation:pulsate 1.4s ease-in-out infinite}.three-dot-pulsate .three-dot-dot:first-child{animation-delay:0s}.three-dot-pulsate .three-dot-dot:nth-child(2){animation-delay:.2s}.three-dot-pulsate .three-dot-dot:nth-child(3){animation-delay:.4s}@keyframes pulsate{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.three-dot-bounce .three-dot-dot{animation:bounce 1.4s ease-in-out infinite}.three-dot-bounce .three-dot-dot:first-child{animation-delay:0s}.three-dot-bounce .three-dot-dot:nth-child(2){animation-delay:.2s}.three-dot-bounce .three-dot-dot:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.three-dot-rotate .three-dot-wrapper{animation:rotate 1.5s linear infinite}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.three-dot-small .three-dot-wrapper{gap:6px}.three-dot-medium .three-dot-wrapper{gap:8px}.three-dot-large .three-dot-wrapper{gap:10px}.three-dot-text{font-family:var(--font-primary);font-size:14px;font-weight:500}.loading-screen{align-items:center;background:var(--color-prussian-blue);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;transition:opacity .8s ease-out,visibility .8s ease-out,transform .8s ease-out;width:100vw;z-index:9999}.loading-screen.fade-out{opacity:0;transform:scale(1.05);visibility:hidden}.loading-container{align-items:center;display:flex;flex-direction:column;gap:.75rem;height:100%;justify-content:center;text-align:center;width:100%}.loading-text h2{font-family:Inter,sans-serif;font-size:2.2rem;letter-spacing:-.02em;margin:0}.loading-text h2,.loading-text p{color:var(--color-white-smoke);font-weight:400}.loading-text p{font-family:var(--font-primary);font-size:1.1rem;letter-spacing:.01em;margin:0 0 2rem}.progress-bar{border-radius:4px;box-shadow:inset 0 1px 3px #0000001a,0 1px 2px #0000000d;display:flex;gap:2px;height:8px;margin:0 auto .8rem;overflow:hidden;padding:1px;position:relative;width:320px}.progress-bar,.progress-bar:before{background:var(--color-background-alt)}.progress-bar:before{animation:backgroundShimmer 3s ease-in-out infinite;bottom:0;content:"";left:0;position:absolute;right:0;top:0}.progress-segment{background:#ffffff1a;border-radius:2px;flex:1 1;height:100%;transition:all .3s ease}.progress-segment.filled{background:var(--color-tech-blue);box-shadow:0 0 4px #057bc166,0 0 8px #057bc133}@keyframes backgroundShimmer{0%,to{opacity:.3}50%{opacity:.6}}.progress-text{color:var(--color-white-smoke);font-family:var(--font-primary);font-size:1rem;font-weight:500;letter-spacing:.02em}@media (max-width:768px){.loading-container{gap:.5rem}.loading-text h2{font-size:1.8rem}.loading-text p{font-size:1rem}.progress-bar{width:260px}}@media (prefers-contrast:high){.progress-bar{border:1px solid #2c2c2c}}@media (prefers-reduced-motion:reduce){.progress-bar:before{animation:none}.progress-segment{transition:none}}.App{background:#0000;height:100vh;opacity:0;overflow:hidden;transform:scale(.95);transition:opacity 1s ease-in-out .3s,transform 1s ease-in-out .3s;width:100vw}.App.loaded{opacity:1;transform:scale(1)}
/*# sourceMappingURL=main.bbdf0b47.css.map*/