*{box-sizing:border-box;margin:0;padding:0}:root{--text-align:center;--bg-dark:#147d32;--bg-light:white;--color-primary:#7db859;--color-text:#cdedc9;--color-card:#f5f5f5;--font-title:3rem;--font-subtitle:1.5rem;--font-text:1rem;--radius:20px;--dark-green:var(--bg-dark);--color-bg:var(--text-main);--page-bg:#fff;--surface-bg:#fff;--surface-alt:#f8fbf8;--text-main:#222722;--text-secondary:#4a504b;--border-color:var(--dark-green);--header-bg:var(--color-text);--footer-bg:var(--color-text);--input-bg:#fff;--shadow-color:0px 10px 30px #287039cc;--swiper-theme-color:var(--bg-dark);--swiper-pagination-color:var(--bg-dark);--swiper-pagination-bullet-inactive-color:var(--bg-dark);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page-bg:#111713;--surface-bg:#1b241e;--surface-alt:#242e27;--text-main:#edf3ee;--text-secondary:#c5d0c7;--border-color:var(--bg-dark);--header-bg:#1b241e;--footer-bg:#1b241e;--input-bg:#202a23;--shadow-color:#28703940;--bg-light:var(--page-bg);--color-text:var(--surface-alt);--color-card:var(--surface-bg)}html{scroll-behavior:smooth;font-size:16px}body{background-color:var(--page-bg);min-height:100vh;color:var(--text-main);font-family:Arial,sans-serif;line-height:2;transition:background-color .25s,color .25s}#root{flex-direction:column;min-height:100vh;display:flex}article{background-color:var(--bg-light);color:var(--text-main)}section{padding-block:5rem}header{background-color:var(--header-bg);height:120px;color:var(--text-main);grid-template-columns:1fr 1fr;align-items:center;padding:1rem 3rem;transition:background-color .25s,color .25s;display:grid}.logo{grid-column:1;max-width:100px;max-height:100px}.nav-container{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:1rem;display:flex}.nav-link{color:var(--text-main);border-radius:5px;margin-right:0;padding:8px 12px;font-weight:500;text-decoration:none;transition:background-color .2s,color .2s}.nav-link:hover,.nav-link.active{color:#fff;background:var(--bg-dark)}.theme-toggle{border:1px solid var(--border-color);background-color:var(--surface-alt);color:var(--text-main);font:inherit;cursor:pointer;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;padding:.55rem .8rem;transition:background-color .2s,color .2s,border-color .2s;display:inline-flex}.theme-toggle:hover{border-color:var(--bg-dark)}.theme-toggle:focus-visible{outline:2px solid var(--bg-dark);outline-offset:3px}.theme-toggle svg{flex-shrink:0;font-size:1.1rem}:is(.card-experience,.context-card,.objective-card,.application-card,.feature-card,.datamodel-card,.diagram-card,.model-card,.gallery-card,.skills,.challenges){background-color:var(--surface-bg);color:var(--text-main);border-color:var(--border-color)}footer{background-color:var(--footer-bg);min-height:180px;color:var(--text-main);text-align:center;grid-template-columns:repeat(3,1fr);align-items:center;padding:2rem;transition:background-color .25s,color .25s;display:grid}.footer-socials{flex-direction:column;align-items:center;gap:1rem;display:flex}.footer-links{color:var(--bg-dark);font-size:1.75rem}a:hover{text-decoration:underline}.link{color:#fff}.badge{background:var(--bg-dark);color:#fff;border-radius:10px;padding:4px 12px;font-size:.8rem;display:inline-block}.fa-solid,.fa-brands{color:var(--dark-green);margin-right:8px;font-size:1.2rem}.nav-link:hover .fa-circle-arrow-left{transition:all .3s;transform:translate(-5px)}.page-error .hero-layout{background-color:var(--color-text);grid-template-columns:1fr 1fr;align-items:center;gap:5rem;min-height:50vh;display:grid}.page-error .hero-content{text-align:center;justify-items:center}.page-error .hero-title{padding:2rem;font-size:2rem;line-height:1.1}.page-error .hero-subtitle{padding:3rem;font-size:2.2rem}.page-error .hero-image{justify-content:center;display:flex}.page-error .hero-image img{width:100%;max-width:80%;height:auto;display:block}@media (width<=992px){header{padding:1rem}.nav-container{gap:.5rem}.nav-link{margin-right:10px}}@media (width<=768px){header{grid-template-columns:1fr;gap:1rem;height:auto}.logo{justify-self:center}.nav-container{flex-wrap:wrap;justify-content:center}.nav-link{margin-right:0}footer{grid-template-columns:1fr;gap:1.5rem}}.about-page{width:100%}.about-page .page-layout{background-color:var(--bg-light);color:var(--bg-dark);grid-template-columns:2fr 1fr;align-items:center;gap:2rem;padding:3rem 2rem;display:grid}.about-page .page-content{padding:1rem 6rem}.about-page .page-title{color:var(--bg-dark);padding-top:2rem;font-size:clamp(3rem,6vw,5rem);line-height:1.1}.about-page .page-subtitle{color:var(--text-main);padding:2rem 0;font-size:2.2rem}.about-page .page-badges{padding:2rem;display:flex}.about-page .badge{background-color:var(--bg-dark);color:#fff;margin-right:1rem}.about-page .page-text{color:var(--text-main);border-color:var(--border-color);padding:1rem}.about-page .page-list{color:var(--text-main);border-color:var(--border-color);margin-left:15%}.about-page .main-image{max-width:100%;height:auto;display:block}@media (width<=992px){.about-page .page-layout{grid-template-columns:1fr}.about-page .right-sidebar{max-width:400px;margin:0 auto}}@media (width<=768px){.about-page .page-content{width:auto;padding:2rem 1rem}.about-page .page-badges{padding:1rem}.about-page .page-list{margin-left:1rem}.about-page .right-sidebar{display:none}}.home-page{width:100%}.home-page .hero-layout{background-color:var(--bg-light);min-height:70vh;color:var(--color-bg);grid-template-columns:1fr 1fr;align-items:center;gap:5rem;padding:3rem 8%;display:grid}.home-page .hero-content{flex-direction:column;align-items:center;display:flex}.home-page .hero-title{color:var(--bg-dark);padding:2rem 0;font-size:3.1rem;font-weight:700;line-height:1.1}.home-page .hero-subtitle{padding:1rem;font-size:2.5rem}.home-page .page-badges{flex-wrap:wrap;justify-content:center;gap:.75rem;padding:1rem;display:flex}.home-page .hero-text{max-width:700px;padding:1rem;font-size:clamp(1rem,1.5vw,1.25rem);line-height:1.6}.home-page .hero-cta{background-color:var(--bg-dark);width:fit-content;color:var(--bg-light);border-radius:var(--radius);margin:1rem auto 0;padding:1rem 2rem;display:block}.home-page .hero-image img{width:100%;height:auto;display:block}.home-page .link{text-decoration:none}.page-layout,.projects-preview,.about-preview,.contact-preview{margin:0 auto;padding:0 1rem}.home-page .page-content{text-align:center;color:var(--text-main);border-color:var(--border-color);padding:10rem 10rem 1rem;font-size:clamp(1rem,1.5vw,1.25rem)}.home-page .page-title{color:var(--bg-dark);padding-bottom:2rem;font-size:clamp(2rem,4vw,4rem);font-weight:400;line-height:1.1}.xp-container{text-align:center;grid-template-columns:repeat(4,1fr);gap:2rem;width:min(1200px,90%);margin:0 auto;padding:3rem 1rem;display:grid}.card-experience{box-shadow:0px 10px 30px var(--bg-dark,.08);text-align:center;border:1px solid #dce8dc;border-radius:10px;padding:1.5rem}.about-preview{text-align:center;background-color:var(--color-text);justify-content:space-between;align-items:center;gap:3rem;padding:3rem 8%;display:flex}.home-page .about-preview .main-image{max-width:100%;height:auto;display:block}.page-title-bis{color:var(--bg-dark);font-size:var(--font-subtitle);padding:1rem 0}.page-text{color:var(--text-main);padding:.75rem;line-height:1.7}.home-page .page-cta{border:solid 1px var(--bg-dark);background-color:var(--bg-dark);border-radius:var(--radius);margin-top:3rem;padding:15px}.contact-preview{text-align:center;padding:5rem 8%}@media (width<=992px){.home-page .hero-layout{grid-template-columns:1fr;gap:3rem;min-height:auto;padding:4rem 6%}.home-page .hero-image img{display:none}.home-page .xp-container{grid-template-columns:repeat(2,1fr)}.home-page .about-preview{flex-direction:column}}@media (width<=768px){.home-page .hero-layout{padding:3rem 1.5rem}.home-page .hero-title{font-size:2.4rem}.home-page .hero-subtitle{font-size:2rem}.home-page .hero-text{font-size:1rem}.home-page .xp-container{grid-template-columns:1fr;gap:1.5rem;width:min(400px,90%);padding:2rem 0}.home-page .contact-preview{padding:3rem 1rem}.home-page .page-badges{padding:1rem}.home-page .page-content{justify-content:center;gap:1.5rem;width:auto;padding:0}.project-preview,.contact-preview{grid-template-columns:1fr;gap:1.5rem;width:min(400px,90%);padding:0}.preview-sidebar{display:none}}.cards-container{background-color:var(--bg-light);width:min(1400px,90%);color:var(--color-bg);grid-template-columns:repeat(3,1fr);gap:2rem;margin:0 auto;padding:0;display:grid}.card{color:#000;text-align:center;background-color:#fff;border:1px solid #ddd;border-radius:20px;width:100%;min-height:420px;margin:0 auto;padding:20px;transition:transform .3s;overflow:hidden}.card:hover{transform:translateY(-6px)}.card-title{color:var(--color-primary)}.card-img img{width:100%;height:auto}.card-description{margin-top:10px}.card-link{text-decoration:none}@media (width<=992px){.cards-container{grid-template-columns:repeat(2,1fr);gap:1.5rem}}@media (width<=768px){.cards-container{grid-template-columns:1fr;justify-content:center;gap:1.5rem;width:min(400px,90%);padding:0}.card{min-height:300px}}.projects-page{width:100%}.projects-page .hero-layout{background-color:var(--bg-light);min-height:60vh;color:var(--color-bg);grid-template-columns:1fr 1fr;align-items:center;gap:4rem;padding:1rem 8%;display:grid}.projects-page .hero-subtitle{padding:3rem 3rem 0;font-size:2.2rem}.projects-page .hero-content{text-align:center;max-width:700px;margin:0 auto}.projects-page .hero-title{color:var(--bg-dark);margin-bottom:4rem;font-size:clamp(2.5rem,5vw,4.5rem);line-height:1.1}.projects-page .page-badges{flex-wrap:wrap;justify-content:center;gap:.75rem;padding:1rem;display:flex}.projects-page .hero-text{max-width:600px;margin:0 auto 1.5rem;font-size:clamp(1rem,1.5vw,1.25rem);line-height:1.7}.projects-page .hero-cta{border:solid 2px var(--bg-dark);background-color:var(--bg-dark);border-radius:var(--radius);justify-content:center;align-items:center;min-width:180px;min-height:50px;margin-top:1rem;padding:.8rem 1.5rem}.projects-page .hero-cta .link{color:#fff;text-decoration:none}.projects-page .hero-image{justify-content:center;display:flex}.projects-page .hero-image img{width:100%;max-width:550px;height:auto;display:block}.projects-page>section:not(.hero-layout){width:min(1200px,92%);margin:0 auto}.project-link{color:inherit;text-decoration:none;display:block}.one-project{text-align:center;background-color:#f9f9f9;border:1px solid #ddd;border-radius:20px;width:100%;margin:4rem auto;padding:3rem 2rem}.one-project-title{color:var(--bg-dark);margin-bottom:1rem;font-size:clamp(1.5rem,2.5vw,2.2rem);text-decoration:none}.one-project-cta{color:#000;max-width:800px;margin:0 auto 2.5rem;font-size:1.05rem;line-height:1.7}.project-preview{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:2rem;margin:0 auto 2.5rem;display:grid}.project-preview a{width:100%;text-decoration:none;display:block}.grid-card{object-fit:contain;background-color:#fff;border:1px solid #dce8dc;border-radius:14px;width:100%;max-width:300px;height:280px;margin:0 auto;padding:1rem;transition:transform .2s,box-shadow .2s;display:block;box-shadow:0 5px 20px #0000000f}.project-preview a:hover .grid-card{transform:translateY(-5px);box-shadow:0 10px 25px #0000001a}@media (width<=992px){.projects-page .hero-layout{grid-template-columns:1fr;gap:3rem;min-height:auto;padding:4rem 6%}.projects-page .hero-image{display:none}.projects-page .hero-image img{max-width:450px}.projects-page .project-preview{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}.one-project{justify-items:center;padding:2.5rem 1.5rem}}@media (width<=768px){.projects-page .hero-layout{padding:3rem 1.25rem}.projects-page .hero-title{font-size:2.5rem}.projects-page .hero-text{font-size:1rem}.projects-page .hero-image img{max-width:100%}.one-project{border-radius:14px;width:92%;margin:2.5rem auto;padding:2rem 1rem}.one-project-title{font-size:1.5rem}.one-project-cta{font-size:1rem}.projects-page .project-preview{grid-template-columns:1fr;gap:1.5rem}.grid-card{max-width:200px;height:200px}}.projects-preview{flex-wrap:wrap;justify-content:center;gap:20px;padding:5rem 3rem;display:flex}.project-gallery{grid-template:repeat(2,1fr)/repeat(4,1fr);align-items:center;display:grid}.grid-card{text-align:center;background-color:#f9f9f9;border:1px solid #ddd;border-radius:10px;width:400px;margin:20px auto;padding:20px}.grid-title{color:var(--color-primary)}.grid-img{max-width:100%;height:auto;display:block}.grid-description{margin-top:10px}:root{--swiper-theme-color:#007aff}:host{z-index:1;margin-left:auto;margin-right:auto;display:block;position:relative}.swiper{z-index:1;margin-left:auto;margin-right:auto;padding:0;list-style:none;display:block;position:relative;overflow:hidden}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{z-index:1;width:100%;height:100%;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box;display:flex;position:relative}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate(0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;transition-property:transform;display:block;position:relative}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-slide,.swiper-3d .swiper-cube-shadow{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{scrollbar-width:none;-ms-overflow-style:none;overflow:auto}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-slides-offset-before);scroll-margin-inline-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-horizontal>.swiper-wrapper>.swiper-slide:last-child{margin-inline-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-slides-offset-before);scroll-margin-block-start:var(--swiper-slides-offset-before)}.swiper-css-mode.swiper-vertical>.swiper-wrapper>.swiper-slide:last-child{margin-block-end:var(--swiper-slides-offset-after)}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-slide-shadow-bottom{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;top:0;left:0}.swiper-3d .swiper-slide-shadow{background:#00000026}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,#00000080,#0000)}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(#0000,#00000080)}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(#00000080,#0000)}.swiper-lazy-preloader{z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-top-color:#0000;border-radius:50%;width:42px;height:42px;margin-top:-21px;margin-left:-21px;position:absolute;top:50%;left:50%}:is(.swiper:not(.swiper-watch-progress),.swiper-watch-progress .swiper-slide-visible) .swiper-lazy-preloader{animation:1s linear infinite swiper-preloader-spin}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";pointer-events:none;position:absolute;top:0;left:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-prev,.swiper-button-next{width:var(--swiper-navigation-size);height:var(--swiper-navigation-size);z-index:10;cursor:pointer;color:var(--swiper-navigation-color,var(--swiper-theme-color));justify-content:center;align-items:center;display:flex;position:absolute}:is(.swiper-button-prev,.swiper-button-next).swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}:is(.swiper-button-prev,.swiper-button-next).swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled :is(.swiper-button-prev,.swiper-button-next){display:none!important}:is(.swiper-button-prev,.swiper-button-next) ::slotted(svg),:is(.swiper-button-prev,.swiper-button-next) svg{object-fit:contain;transform-origin:50%;fill:currentColor;pointer-events:none;width:100%;height:100%}.swiper-button-lock{display:none}.swiper-button-prev,.swiper-button-next{top:var(--swiper-navigation-top-offset,50%);margin-top:calc(0px - (var(--swiper-navigation-size) / 2))}.swiper-button-prev{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-button-prev ::slotted(.swiper-navigation-icon),.swiper-button-prev .swiper-navigation-icon{transform:rotate(180deg)}.swiper-button-next{right:var(--swiper-navigation-sides-offset,4px);left:auto}.swiper-horizontal .swiper-button-prev,.swiper-horizontal .swiper-button-next,.swiper-horizontal~.swiper-button-prev,.swiper-horizontal~.swiper-button-next{top:var(--swiper-navigation-top-offset,50%);margin-top:calc(0px - (var(--swiper-navigation-size) / 2));margin-left:0}.swiper-horizontal .swiper-button-prev,.swiper-horizontal~.swiper-button-prev,.swiper-horizontal.swiper-rtl .swiper-button-next,.swiper-horizontal.swiper-rtl~.swiper-button-next{left:var(--swiper-navigation-sides-offset,4px);right:auto}.swiper-horizontal .swiper-button-next,.swiper-horizontal~.swiper-button-next,.swiper-horizontal.swiper-rtl .swiper-button-prev,.swiper-horizontal.swiper-rtl~.swiper-button-prev{right:var(--swiper-navigation-sides-offset,4px);left:auto}:is(.swiper-horizontal .swiper-button-prev,.swiper-horizontal~.swiper-button-prev,.swiper-horizontal.swiper-rtl .swiper-button-next,.swiper-horizontal.swiper-rtl~.swiper-button-next) ::slotted(.swiper-navigation-icon),:is(.swiper-horizontal .swiper-button-prev,.swiper-horizontal~.swiper-button-prev,.swiper-horizontal.swiper-rtl .swiper-button-next,.swiper-horizontal.swiper-rtl~.swiper-button-next) .swiper-navigation-icon{transform:rotate(180deg)}:is(.swiper-horizontal.swiper-rtl .swiper-button-prev,.swiper-horizontal.swiper-rtl~.swiper-button-prev) ::slotted(.swiper-navigation-icon),:is(.swiper-horizontal.swiper-rtl .swiper-button-prev,.swiper-horizontal.swiper-rtl~.swiper-button-prev) .swiper-navigation-icon{transform:rotate(0)}.swiper-vertical .swiper-button-prev,.swiper-vertical .swiper-button-next,.swiper-vertical~.swiper-button-prev,.swiper-vertical~.swiper-button-next{left:var(--swiper-navigation-top-offset,50%);margin-left:calc(0px - (var(--swiper-navigation-size) / 2));margin-top:0;right:auto}.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-prev{top:var(--swiper-navigation-sides-offset,4px);bottom:auto}:is(.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-prev) ::slotted(.swiper-navigation-icon),:is(.swiper-vertical .swiper-button-prev,.swiper-vertical~.swiper-button-prev) .swiper-navigation-icon{transform:rotate(-90deg)}.swiper-vertical .swiper-button-next,.swiper-vertical~.swiper-button-next{bottom:var(--swiper-navigation-sides-offset,4px);top:auto}:is(.swiper-vertical .swiper-button-next,.swiper-vertical~.swiper-button-next) ::slotted(.swiper-navigation-icon),:is(.swiper-vertical .swiper-button-next,.swiper-vertical~.swiper-button-next) .swiper-navigation-icon{transform:rotate(90deg)}.swiper-pagination{text-align:center;z-index:10;transition:opacity .3s;position:absolute;transform:translate(0,0)}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-pagination-fraction,.swiper-pagination-custom,.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);width:100%;left:0}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);display:inline-block}button.swiper-pagination-bullet{box-shadow:none;appearance:none;border:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity,1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-vertical>.swiper-pagination-bullets,.swiper-pagination-vertical.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translateY(-50%)}:is(.swiper-vertical>.swiper-pagination-bullets,.swiper-pagination-vertical.swiper-pagination-bullets) .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}:is(.swiper-vertical>.swiper-pagination-bullets,.swiper-pagination-vertical.swiper-pagination-bullets).swiper-pagination-bullets-dynamic{width:8px;top:50%;transform:translateY(-50%)}:is(.swiper-vertical>.swiper-pagination-bullets,.swiper-pagination-vertical.swiper-pagination-bullets).swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,top .2s;display:inline-block}:is(.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-horizontal.swiper-pagination-bullets) .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}:is(.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-horizontal.swiper-pagination-bullets).swiper-pagination-bullets-dynamic{white-space:nowrap;left:50%;transform:translate(-50%)}:is(.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-horizontal.swiper-pagination-bullets).swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,#00000040);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));transform-origin:0 0;width:100%;height:100%;position:absolute;top:0;left:0;transform:scale(0)}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:100% 0}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);top:0;left:0}.swiper-vertical>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite{width:var(--swiper-pagination-progressbar-size,4px);height:100%;top:0;left:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);touch-action:none;background:var(--swiper-scrollbar-bg-color,#0000001a);position:relative}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%));position:absolute}.swiper-vertical>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-vertical{left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%));position:absolute}.swiper-scrollbar-drag{background:var(--swiper-scrollbar-drag-bg-color,#00000080);border-radius:var(--swiper-scrollbar-border-radius,10px);width:100%;height:100%;position:relative;top:0;left:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{text-align:center;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.swiper-zoom-container>img,.swiper-zoom-container>svg,.swiper-zoom-container>canvas{object-fit:contain;max-width:100%;max-height:100%}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{pointer-events:none;opacity:0;z-index:-1000;position:absolute;top:0;left:0}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-flow:column wrap}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{opacity:.6;z-index:0;width:100%;height:100%;position:absolute;bottom:0;left:0}.swiper-cube .swiper-cube-shadow:before{content:"";filter:blur(50px);background:#000;position:absolute;inset:0}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right{z-index:0;backface-visibility:hidden}.swiper.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right{z-index:0;backface-visibility:hidden}.swiper-creative .swiper-slide{backface-visibility:hidden;transition-property:transform,opacity,height;overflow:hidden}.swiper.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:bottom;backface-visibility:hidden;overflow:hidden}.details-page{width:100%}.details-page .hero-layout{background-color:var(--bg-light);min-height:50vh;color:var(--color-bg);grid-template-columns:1fr 1fr;align-items:center;gap:5rem;margin-bottom:2rem;padding:3rem 9rem;display:grid}.details-page .hero-content{justify-items:center}.details-page .hero-title{color:var(--bg-dark);padding:2rem;font-size:2rem;line-height:1.1}.details-page .hero-subtitle{padding:3rem 3rem 0;font-size:2.2rem}.details-page .page-badges{flex-wrap:wrap;justify-content:center;gap:.75rem;padding:2rem;display:flex}.details-page .hero-text{max-width:600px;padding:2rem;font-size:1.5rem;line-height:1.6}.details-page .hero-image{justify-content:center;align-items:center;display:flex}.details-page .hero-image img{width:100%;max-width:80%;height:auto;display:block}.details-page .hero-cta{background-color:var(--bg-dark);color:var(--bg-light);border-radius:var(--radius);width:30%;margin-top:2rem;margin-left:15rem;padding:2rem}.details-page .project-details{width:min(1200px,92%);margin:0 auto}.section-title{border:2px solid var(--bg-dark);color:var(--bg-dark);border-radius:10px;margin-bottom:2rem;padding:.45rem 1.2rem;font-size:1.5rem;font-weight:600;display:inline-block}.section-type{color:var(--bg-dark);width:fit-content;padding:.4rem 1rem}.section-description{max-width:1000px;margin:0 auto;padding:2rem 0;font-size:1.15rem;line-height:1.8}.details-page .card-title{color:var(--bg-dark);margin-bottom:1rem;font-size:1.5rem;font-weight:600}.context,.objective,.approach,.feature,.datamodel,.model,.deployment,.gallery{padding:5rem 0}.context-card,.objective-card,.feature-card,.datamodel-card,.model-card,.deployment-card,.skills,.challenges{background-color:var(--surface-alt);border:1px solid var(--border-color);border-radius:var(--radius)}.context{text-align:center;max-width:850px;margin:0 auto}.approach,.feature{text-align:center}.context-description{margin-bottom:2.5rem;font-size:1.15rem;line-height:1.8}.context-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem;display:grid}.context-card{text-align:center;padding:1.5rem}.objective,.deployment{text-align:center;max-width:1000px;margin:0 auto}.objectives-grid,.approach-grid,.features-grid,.data-choices,.deployment-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;display:grid}.objective-card,.deployment-card{text-align:center;padding:2rem}.approach{text-align:center}.approach-card{border-left:4px solid var(--bg-dark);background-color:var(--surface-alt);text-align:left;margin:0;padding:2rem}.feature{text-align:center}.feature-card{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:130px;padding:1.5rem;transition:transform .2s,box-shadow .2s;display:flex}.feature-card:hover{box-shadow:var(--shadow-color);transform:translateY(-4px)}.feature-icon,.datamodel-icon{color:var(--bg-dark);margin-bottom:.75rem;font-size:2rem}.feature-title{text-align:center;font-size:1.2rem;font-weight:700}.feature-content{text-align:center;line-height:1.6}.datamodel{text-align:center;padding:5rem 0}.datamodel .section-title{margin-bottom:2rem;display:inline-block}.datamodel .section-description{margin-bottom:3rem}.datamodel-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;max-width:1200px;margin:0 auto;display:grid}.datamodel-card{padding:2rem;box-shadow:0 0 #0000000f}.datamodel-card h3{color:var(--bg-dark);margin-bottom:1.5rem;font-size:1.2rem}.datamodel-card .grid-img{border-radius:8px;width:100%;max-width:1100px;height:auto;margin:0 auto;display:block}.datamodel-subtitle{margin:4rem auto 2rem;font-size:1.4rem}.data-choices{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;display:grid}.data-choices .datamodel-card{text-align:center;background-color:var(--surface-bg);min-height:130px;color:var(--text-main);border-color:var(--border-color);flex-direction:column;justify-content:center;align-items:center;padding:1.5rem;display:flex}.data-choices .datamodel-card .datamodel-subtitle{margin:.75rem 0;font-size:1.2rem;font-weight:700}.data-choices .section-description{margin:0;padding:0;font-size:1rem;line-height:1.7}.diagram{border:1px solid #e5e5e5;border-radius:14px;padding:2rem}.diagram-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem;display:grid}.diagram-card{box-shadow:var(--shadow-color);text-align:center;border-radius:20px;padding:2rem}.diagram-img{border-radius:8px;width:100%;height:auto;margin:0 auto;display:block}.model{text-align:center}.model-grid{grid-template-columns:1fr;gap:2rem;display:grid}.model-card{text-align:center;padding:2rem}.model-card .card-img{width:100%;max-width:1100px;margin:0 auto;display:block}.cta-btn{background-color:var(--bg-dark);border:none;border-radius:20px;width:10rem;height:3rem}.link-to{color:#fff;font-size:1rem}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem;display:grid}.gallery-card{text-align:center;border:1px solid #dce8dc;border-radius:14px;padding:1rem;box-shadow:0 5px 20px #0000000f}.gallery-title{color:var(--bg-dark)}.img-description{text-align:center;margin:2rem 1rem 1rem}.details-img{object-fit:contain;border-radius:8px;width:100%;height:450px;transition:transform .2s;display:block}.details-img,.card-img,.grid-img{cursor:pointer;transition:transform .2s}.card-img:hover,.grid-img:hover{transform:scale(1.03)}.details-img:hover{transform:scale(1.015)}.swiper-button-prev,.swiper-button-next{color:var(--swiper-pagination-bullet-inactive-color)}.gallery .swiper-pagination-bullet{background-color:var(--swiper-pagination-bullet-inactive-color);opacity:.4}.gallery .swiper-pagination-bullet-active{background-color:var(--swiper-pagination-color);opacity:1}.project-learning{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem;width:min(1000px,92%);margin:0 auto;padding:4rem 0;display:grid}.project-learning .skills,.project-learning .challenges{padding:2rem}.project-learning .section-title{margin-bottom:1rem}.project-learning .section-description{margin:0 0 1.5rem;padding:0;font-size:1rem;line-height:1.6}.project-learning .list{flex-direction:column;gap:.8rem;margin:0;padding:0;list-style:none;display:flex}.project-learning .list-item{align-items:center;gap:.7rem;margin:0;line-height:1.5;display:flex}.project-learning .list-icon{color:var(--bg-dark);flex-shrink:0;font-size:.8rem}.conclusion{text-align:center;width:min(900px,92%);margin:0 auto;padding:2rem 0 4rem}.conclusion .section-description{margin:0 auto;padding:0;font-size:1.15rem;line-height:1.8}.lightbox{z-index:1000;cursor:pointer;background:#000000d9;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.lightbox-content{cursor:default;flex-direction:column;align-items:center;max-width:90vw;max-height:90vh;display:flex;position:relative}.lightbox-content img{object-fit:contain;border-radius:8px;width:auto;max-width:90vw;height:auto;max-height:80vh}.lightbox-content p{color:#fff;text-align:center;margin-top:1rem}.lightbox-close{color:#fff;cursor:pointer;background:0 0;border:none;font-size:2.5rem;line-height:1;position:absolute;top:-45px;right:-10px}.git-btn{border:1px solid var(--bg-dark);background-color:var(--bg-dark);border-radius:20px;width:15rem;min-height:5rem;margin:0 auto 50px;padding:1rem;display:block}.git-link{color:#fff;font-size:1rem}.git-icon{margin-top:1rem}@media (width<=992px){.details-page .hero-layout{grid-template-columns:1fr;padding:4rem 6%}.details-page .hero-image{display:none}.context-grid,.objectives-grid,.approach-grid,.features-grid,.datamodel-grid,.data-choices,.diagram-grid,.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-details{width:min(1100px,92%)}}@media (width<=768px){.details-page .hero-layout{padding:1rem 1.25rem}.details-page .hero-title{font-size:2rem}.details-page .hero-subtitle{padding:2rem 1rem;font-size:1.8rem}.details-page .hero-text{padding:1rem;font-size:1.1rem}.details-page .page-badges{padding:1rem}.detail-image{height:200px}.context,.objective,.approach,.feature,.deployment,.datamodel,.diagram,.model,.gallery{padding:3rem 0}.section-description{padding:1rem;font-size:1rem}.context-grid,.objectives-grid,.approach-grid,.features-grid,.deployment-grid,.datamodel-grid,.data-choices,.diagram-grid,.gallery-grid,.diagram-grid .data-choices{grid-template-columns:1fr}.context-card,.objective-card,.approach-card,.feature-card,.deployment-card,.datamodel-card,.diagram-card,.model-card,.gallery-card{padding:1.5rem}.project-learning{grid-template-columns:1fr;gap:1.5rem;width:min(500px,92%);padding:3rem 0}.project-learning .skills,.project-learning .challenges{padding:1.5rem}.project-learning .section-description{font-size:.95rem}.conclusion{width:min(500px,92%);padding:1rem 0 3rem}.conclusion .section-description{font-size:1rem}.git-btn{width:min(15rem,80%)}}.contact-page{width:100%}.contact-page .page-layout{background-color:var(--bg-light);grid-template-columns:60% 40%;gap:3rem;padding:3rem 2rem;display:grid}.contact-page .page-content{padding:1rem 6rem;font-size:1.2rem}.contact-page .page-title{color:var(--bg-dark);padding-top:2rem;font-size:clamp(3rem,6vw,5rem);font-weight:400;line-height:1.1}.contact-page .page-subtitle{color:var(--text-main);padding:2rem 0;font-size:2rem}.contact-page .page-badges{padding:2rem;display:flex}.contact-page .badge{background-color:var(--bg-dark);color:#fff;margin-right:1rem}.form-layout{justify-content:center;width:100%;display:flex}.form-container{width:min(450px,100%)}.form{border:2px solid var(--bg-dark);border-radius:var(--radius);background-color:var(--color-text);width:100%;color:var(--bg-dark);padding:15px}.form-case{box-sizing:border-box;background-color:var(--bg-light);border:2px solid var(--bg-dark);border-radius:var(--radius);width:100%;color:var(--bg-dark);margin-top:2rem;padding:15px;display:flex}.submit-btn{background-color:var(--bg-dark);border:2px solid var(--bg-dark);border-radius:var(--radius);color:#fff;cursor:pointer;width:50%;margin:2rem auto 0;padding:15px;display:block}@media (width<=992px){.contact-page .page-layout{grid-template-columns:1fr}.contact-page .page-content{padding:1rem 3rem}}@media (width<=768px){.contact-page .page-content{padding:1rem}.contact-page .page-badges{padding:1rem;display:block}.form-container{width:min(450px,95%)}}
