:root{--background: #f8f9fb;--foreground: #1a1f35;--card: #ffffff;--card-foreground: #1a1f35;--primary: #0d9488;--primary-soft: rgba(13, 148, 136, .15);--primary-foreground: #ffffff;--secondary: #f0f1f4;--secondary-foreground: #2a3040;--muted: #f0f1f4;--muted-foreground: #6b7280;--accent: #0d9488;--accent-foreground: #ffffff;--border: #e2e4e9;--ring: #0d9488;--view-max-width: 1280px;--bloc-max-width: 950px;--view-horizontal-mobile-padding: 24px;--view-horizontal-desktop-padding: 48px;--space-0: 4px;--space-1: 8px;--space-2: 16px;--space-3: 24px;--space-4: 32px;--space-5: 40px;--space-6: 48px;--space-7: 56px;--space-8: 64px;--space-9: 72px;--space-10: 80px;--space-11: 88px;--space-12: 96px;--space-15: 120px;--space-20: 160px;--space-30: 240px;--space-40: 320px;--font-primary: "Inter", Arial, "Apple Color Emoji", "Segoe UI Emoji";--font-secondary: "JetBrains Mono", Arial;--font-weight-base: 400;--font-weight-medium: 500;--font-weight-large: 600;--font-weight-xlarge: 700;--font-size-small: .9rem;--font-size-base: 1rem;--font-size-medium: 1.25rem;--font-size-large: 1.5rem;--font-size-xlarge: 2rem;--font-size-desktop-heading-1: 3rem;--font-size-desktop-heading-2: 2.5rem;--font-size-desktop-heading-3: 1.75rem;--font-size-desktop-heading-4: 1.25rem;--font-size-mobile-heading-1: 2.25rem;--font-size-mobile-heading-2: 2rem;--font-size-mobile-heading-3: 1.5rem;--font-size-mobile-heading-4: 1.25rem;--font-line-height-button: 50%;--font-line-height-large: 135%;--font-line-height-extra: 175%;--font-letter-spacing-medium: .02rem;--border-radius-small: 4px;--border-radius-base: 8px;--border-radius-medium: 16px;--border-radius-large: 32px;--card-shadow: 0px 4px 20px 0px rgba(0, 0, 0, .08)}.app--dark{--background: #0f1426;--foreground: #ecf1ff;--card: #121a31;--card-foreground: #ecf1ff;--primary: #2dd4bf;--primary-soft: rgba(45, 212, 191, .24);--primary-foreground: #06211f;--secondary: #1a243f;--secondary-foreground: #d7e1ff;--muted: #1a243f;--muted-foreground: #a0afcf;--accent: #2dd4bf;--accent-foreground: #06211f;--border: #2f3b60;--ring: #2dd4bf;--card-shadow: 0px 4px 20px 0px rgba(0, 0, 0, .35)}*{margin:0;box-sizing:border-box;scroll-behavior:smooth;font-family:var(--font-primary)}.no_scroll{overflow:hidden;height:100vh}.app{display:flex;flex-direction:column;align-items:center;min-height:100vh;background-color:var(--background);overflow:hidden;transition:background-color .25s ease}.app main{display:flex;flex-direction:column;align-items:center;width:100%;margin-top:var(--space-5)}ul,ol{padding:0;list-style:none}.heading_1{font-size:var(--font-size-mobile-heading-1);line-height:var(--font-line-height-large);color:var(--foreground);font-weight:var(--font-weight-xlarge);letter-spacing:0}.heading_2{font-size:var(--font-size-mobile-heading-2);line-height:var(--font-line-height-large);color:var(--foreground);font-weight:var(--font-weight-xlarge);letter-spacing:0}.heading_3{font-size:var(--font-size-mobile-heading-3);line-height:var(--font-line-height-large);color:var(--foreground);font-weight:var(--font-weight-xlarge);letter-spacing:0}.heading_4{font-size:var(--font-size-mobile-heading-4);line-height:var(--font-line-height-large);color:var(--foreground);font-weight:var(--font-weight-large);letter-spacing:0}.paragraph{font-size:var(--font-size-medium);line-height:var(--font-line-height-extra);color:var(--muted-foreground);font-weight:var(--font-weight-base)}@media screen and (min-width: 768px){.theme-toggle{margin-left:var(--view-horizontal-desktop-padding)}.heading_1{font-size:var(--font-size-desktop-heading-1)}.heading_2{font-size:var(--font-size-desktop-heading-2)}.heading_3{font-size:var(--font-size-desktop-heading-3)}.heading_4{font-size:var(--font-size-desktop-heading-4)}}.header{z-index:1000;position:fixed;top:0;width:100%;background:var(--background);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.header__inner{display:flex;flex-direction:row;align-items:center;gap:var(--space-1);width:100%;max-width:var(--view-max-width);margin:0 auto;padding:var(--space-2) var(--view-horizontal-mobile-padding)}.header:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:var(--view-max-width);height:1px;background-color:var(--border)}.header__logo{padding-right:var(--space-3);color:var(--foreground);font-size:var(--font-size-medium);font-weight:var(--font-weight-large);text-decoration:none;border-right:3px solid var(--primary);white-space:nowrap}.header__nav{display:flex;flex-direction:row;align-items:center;width:100%;gap:var(--space-2)}.header__list{display:flex;flex:1;align-items:center;gap:1rem;list-style:none}.header__list__item--cta{margin-left:auto}.header__list__item--cta .button-link span{display:none}.header__list>li:not(:last-child){display:none}.header__toggle{all:unset;cursor:pointer;position:relative;display:flex;align-items:center;gap:12px;padding:10px;background:var(--secondary);border:2px solid var(--border);border-radius:var(--border-radius-large);transition:border-color .2s}.header__toggle:hover{border-color:var(--primary)}.header__toggle__thumb{position:absolute;top:4px;left:4px;width:26px;height:26px;background:var(--primary);border-radius:50%;transition:transform .25s cubic-bezier(.34,1.56,.64,1);pointer-events:none}.header__toggle--dark .header__toggle__thumb{transform:translate(26px)}.header__toggle svg{position:relative;z-index:1;width:14px;height:14px;color:var(--muted-foreground);transition:color .2s;flex-shrink:0}.header__toggle svg:first-child{color:var(--primary-foreground)}.header__toggle--dark svg:first-child{color:var(--muted-foreground)}.header__toggle--dark svg:last-child{color:var(--primary-foreground)}@media screen and (min-width: 768px){.header__inner{padding:var(--space-2) var(--view-horizontal-desktop-padding)}}@media screen and (min-width: 992px){.header__list>li:not(:last-child){display:flex}.header__list>li:not(:last-child):hover a{color:var(--primary)}.header__list__item--cta .button-link span{display:inline}}.icon{display:inline-block;color:var(--border-deeper);stroke:currentColor;fill:none;stroke-width:0;transition:color .15s ease,opacity .15s ease,transform .15s ease}.icon--small{width:18px;height:18px}.icon--medium{width:22px;height:22px}.icon--large{width:32px;height:32px}.icon path{fill-rule:evenodd;clip-rule:evenodd;fill:currentColor}.button:hover .icon{transform:translateY(-1px)}.button:active .icon{transform:translateY(0)}.button:disabled .icon,.button.button--disabled .icon{opacity:.7}.button-link{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);font-family:var(--font-primary);letter-spacing:var(--font-letter-spacing-medium);text-decoration:none;border-radius:var(--border-radius-base);background-color:var(--primary)}.button-link--active{cursor:pointer;transition:background-color .15s ease,color .15s ease,border .15s ease,transform .15s ease}.button-link--active:hover{transform:translateY(-2px)}.button-link--disabled{pointer-events:none;transition:unset;opacity:.5}.button-link--disabled:hover{transform:unset}.button-link--variant-secondary{background-color:var(--primary);border:1px solid var(--primary);color:var(--card)}.button-link--variant-ghost{padding:0;background-color:transparent;border:1px solid transparent;color:var(--foreground)}.button-link--size-small{padding:var(--space-0) var(--space-2);font-size:var(--font-size-small);font-weight:var(--font-weight-medium)}.button-link--size-medium{padding:var(--space-1) var(--space-2);font-size:var(--font-size-base);font-weight:var(--font-weight-medium)}.button-link--icon-right svg{order:1}.about{width:100%;max-width:var(--view-max-width);padding:var(--space-10) var(--view-horizontal-mobile-padding)}.about__wrapper{display:flex;flex-direction:column;gap:var(--space-6)}.about__header{display:flex;flex-direction:column;gap:var(--space-3)}.about__header__name{display:flex;flex-direction:column;gap:var(--space-5)}.about__header__name span{color:var(--primary)}.about__header__title strong{display:flex;flex-direction:row;gap:var(--space-1);font-family:var(--font-secondary);font-weight:var(--font-weight-medium)}.about__header__title strong:before{content:"";width:4px;background-color:var(--primary)}.about__body{display:flex;flex-direction:column;gap:var(--space-2);text-align:justify}.about__body .paragraph{font-weight:var(--font-weight-medium)}.about__body .paragraph--strong{color:var(--foreground);font-weight:var(--font-weight-medium)}.about__tags{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--space-2)}.about__tags-item svg{color:var(--primary)}@media screen and (min-width: 560px){.about__header,.about__header__name{align-items:center}}@media screen and (min-width: 768px){.about{padding:var(--space-10) var(--view-horizontal-desktop-padding)}}@media screen and (min-width: 992px){.about__wrapper{margin:0 auto}.about__header{align-items:flex-start;gap:var(--space-1)}.about__header__name{align-items:flex-start}.about__tags{justify-content:flex-start}}.tag{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);width:max-content;padding:var(--space-1) var(--space-2);font-family:var(--font-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium);letter-spacing:var(--font-letter-spacing-medium);color:var(--foreground);transition:background-color .2s ease}.tag--size-small{padding:var(--space-0) var(--space-1)}.tag--size-default{padding:var(--space-1) var(--space-2)}.tag--variant-default{color:var(--secondary-foreground);background-color:var(--secondary);border:1px solid var(--border);border-radius:var(--border-radius-base)}.tag--variant-ghost{color:var(--foreground);padding:0;background-color:transparent;border:1px solid transparent;border-radius:var(--border-radius-base)}.tag--variant-status{color:var(--primary);background-color:var(--secondary);border:1px solid var(--primary);border-radius:var(--border-radius-medium)}.tag--icon-right svg{order:1}.skills{display:flex;flex-direction:column;gap:var(--space-9);width:100%;max-width:var(--view-max-width);padding:var(--space-10) var(--view-horizontal-mobile-padding)}.skills__stack{display:flex;flex-direction:column;gap:var(--space-3)}.skills__stack__title{color:var(--secondary-foreground);font-weight:var(--font-weight-large);text-transform:uppercase}.skills__stack__list{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--space-2)}.skills__stack__list--techno{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));align-items:stretch}.skills__stack__list__item{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:var(--space-5);width:100%;border:1px solid var(--border);border-radius:var(--border-radius-base)}.skills__stack__list__item:hover>p:first-child{color:var(--foreground)}.skills__stack__list__item--techno{padding:var(--space-2);background-color:var(--card);transition:background-color .1s ease}.skills__stack__list__item--techno:hover{background-color:var(--muted)}.skills__stack__list__item--domain{padding:var(--space-1) var(--space-2);background-color:var(--card);transition:border .1s ease}.skills__stack__list__item--domain:hover{border:1px solid var(--primary)}.skills__stack__list__item--soft{padding:var(--space-1) var(--space-2);background-color:var(--secondary);transition:border .1s ease}.skills__stack__list__item--soft:hover{border:1px solid var(--primary)}.skills__stack__list__item--label-techno{color:var(--muted-foreground);font-family:var(--font-secondary);font-weight:var(--font-weight-medium)}.skills__stack__list__item--label-domain,.skills__stack__list__item--label-soft{color:var(--muted-foreground)}.skills__stack__list__item--level{padding:var(--space-0) var(--space-2);background-color:var(--primary-soft);border-radius:var(--border-radius-medium);color:var(--primary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium)}@media screen and (min-width: 768px){.skills{padding:var(--space-10) var(--view-horizontal-desktop-padding)}.skills__stack__list__item{width:max-content}.skills__stack__list--techno .skills__stack__list__item--techno{width:100%}}.section__title{display:flex;align-items:center;gap:var(--space-2)}.section__title:after{content:"";flex:1;height:2px;background-color:var(--secondary)}.section__title__index{font-size:var(--font-size-medium);font-family:var(--font-secondary);color:var(--primary)}.recommendations{display:flex;flex-direction:column;gap:var(--space-9);width:100%;max-width:var(--view-max-width);padding:var(--space-10) var(--view-horizontal-mobile-padding)}.recommendations__list{display:grid;grid-template-columns:1fr;grid-gap:var(--space-3);width:100%}.recommendations__list__item__card{display:flex;flex-direction:column;gap:var(--space-2);max-width:650px;height:100%;margin:0 auto;padding:var(--space-4);background-color:var(--card);border:1px solid var(--secondaryer);border-radius:var(--border-radius-base);box-shadow:var(--card-shadow);transition:transform .16s ease,box-shadow .16s ease}.recommendations__list__item__card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001f}.recommendations__list__item__card__header{display:flex;align-items:self-start;gap:var(--space-1);margin-top:auto;padding-top:var(--space-3);border-top:1px solid var(--secondary)}.recommendations__list__item__card__avatar{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;min-width:52px;min-height:52px;border-radius:999px;background:linear-gradient(140deg,var(--primary-05),var(--muted));color:var(--primary);font-family:var(--font-primary);font-size:var(--font-size-medium);font-weight:var(--font-weight-large);border:1px solid var(--primary-25);overflow:hidden;flex-shrink:0}.recommendations__list__item__card__avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.recommendations__list__item__card__identity{display:flex;flex-direction:column;gap:var(--space-1)}.recommendations__list__item__card__name{font-size:var(--font-size-base);color:var(--foreground)}.recommendations__list__item__card__role{font-family:var(--font-secondary);font-size:var(--font-size-small);color:var(--muted-foreground)}.recommendations__list__item__card__source{width:max-content;margin-left:auto;padding:var(--space-0) var(--space-2);background-color:var(--secondary);border-radius:var(--border-radius-medium);color:var(--primary);font-size:var(--font-size-small);font-weight:var(--font-weight-medium)}.recommendations__list__item__card__text{font-size:var(--font-size-base);color:var(--muted-foreground);white-space:pre-line}.recommendations__list__item__card__content{display:flex;flex-direction:column;gap:var(--space-2)}@media screen and (min-width: 768px){.recommendations{padding:var(--space-10) var(--view-horizontal-desktop-padding)}}@media screen and (min-width: 992px){.recommendations__list{grid-template-columns:repeat(2,450px);justify-content:center}.recommendations__list__item:last-child{grid-column:1/3}.recommendations__list__item:last-child>.recommendations__list__item__card{max-width:unset}}@media screen and (min-width: 1280px){.recommendations__list{grid-template-columns:repeat(3,1fr)}.recommendations__list__item:last-child{grid-column:unset}}.projects{display:flex;flex-direction:column;gap:var(--space-10);width:100%;max-width:var(--view-max-width);padding:var(--space-10) var(--view-horizontal-mobile-padding)}.projects__list{display:flex;flex-direction:column;gap:var(--space-4)}.projects__list__card{display:flex;flex-direction:column;border-radius:var(--border-radius-small);box-shadow:var(--card-shadow);transition:transform .16s ease,box-shadow .16s ease}.projects__list__card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001f}.projects__list__card__content{display:flex;flex-direction:column;gap:var(--space-5);border-radius:var(--border-radius-small);padding:var(--space-3) var(--space-2);background-color:var(--card)}.projects__list__card__header{display:flex;flex-direction:column;gap:var(--space-2)}.projects__list__card__title{display:flex;flex-direction:row;justify-content:space-between}.projects__list__card__title--actions{display:flex;flex-direction:row;gap:var(--space-1)}.projects__list__card__title--actions a svg{color:var(--muted-foreground)}.projects__list__card__title--actions a:hover svg{color:var(--primary)}.projects__list__card__body__tags{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--space-1)}.projects__list__card__body__tags li svg{color:var(--primary)}.projects__list__card__body p{font-size:var(--font-size-base)}@media screen and (min-width: 768px){.projects{padding:var(--space-10) var(--view-horizontal-desktop-padding)}}@media screen and (min-width: 992px){.projects__list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-5)}.projects__list li{display:flex}.projects__list li article{flex:1}.projects__list li article .projects__list__card__content{height:100%}}.contact{display:flex;flex-direction:column;gap:var(--space-8);width:100%;padding:var(--space-10) var(--view-horizontal-mobile-padding)}.contact__card{display:flex;flex-direction:column;gap:var(--space-4)}.contact__content{display:flex;flex-direction:column;gap:var(--space-1)}.contact__intro{font-size:var(--font-size-medium)}.contact__actions{display:flex;flex-direction:column;gap:var(--space-2)}.contact__action{width:100%;justify-content:center}.contact__action svg{color:currentColor}.contact .button-link.contact__action--mail{border:1px solid var(--border);background-color:var(--card);color:var(--secondary-foreground)}.contact .button-link.contact__action--mail:hover{border-color:var(--primary);background-color:var(--primary-soft);color:var(--primary)}@media screen and (min-width: 576px){.contact__actions{flex-direction:row}.contact__action{width:auto;min-width:220px}}@media screen and (min-width: 768px){.contact{padding:var(--space-10) var(--view-horizontal-desktop-padding)}}@media screen and (min-width: 1280px){.contact{max-width:var(--view-max-width)}}.docs-mention{width:100%;padding:var(--space-10) var(--view-horizontal-mobile-padding)}.docs-mention__inner{display:flex;flex-direction:row;align-items:center;gap:var(--space-3);max-width:var(--bloc-max-width);margin:0 auto;padding:var(--space-3) var(--space-4);background-color:var(--secondary);border-radius:var(--border-radius-base);border-left:3px solid var(--primary-soft)}.docs-mention__icon{flex-shrink:0;margin-top:2px;color:var(--primary);opacity:.8}.docs-mention__text{font-size:var(--font-size-small);line-height:var(--font-line-height-extra);color:var(--muted-foreground);font-weight:var(--font-weight-base)}.docs-mention__link{color:var(--primary);text-decoration:none;font-weight:var(--font-weight-medium);white-space:nowrap;border-bottom:1px solid var(--primary-soft);transition:border-color .15s ease,opacity .15s ease}.docs-mention__link:hover{border-color:var(--primary);opacity:.85}@media screen and (min-width: 768px){.docs-mention{padding:var(--space-10) var(--view-horizontal-desktop-padding)}}.footer{width:100%}.footer__inner{width:100%;max-width:var(--view-max-width);margin:0 auto;padding:var(--space-7) var(--view-horizontal-mobile-padding);box-sizing:border-box}.footer__divider{width:100%;height:1px;background-color:var(--border)}.footer__content{display:grid;grid-template-columns:1fr;gap:var(--space-4);padding-top:var(--space-6)}.footer__brand-title{font-size:clamp(1.8rem,2vw,2.2rem);line-height:1.2;color:var(--foreground);font-weight:var(--font-weight-xlarge)}.footer__brand-author{margin-top:var(--space-0);font-size:var(--font-size-medium);line-height:1.5;color:var(--muted-foreground);font-weight:var(--font-weight-base)}.footer__info{display:flex;flex-direction:column;gap:6px;margin:0;font-style:normal;text-align:start}.footer__info-item{font-family:var(--font-secondary);font-size:var(--font-size-small);line-height:1.4;color:var(--secondary-foreground)}.footer__copyright{font-size:var(--font-size-small);line-height:1.5;color:var(--muted-foreground)}.footer__back-to-top{display:flex;flex-direction:row;gap:var(--space-1);align-items:center;font-size:var(--font-size-medium);font-weight:var(--font-weight-medium);line-height:1.5;color:var(--secondary-foreground);justify-self:start;width:fit-content;text-decoration:none;transition:.1s ease}.footer__back-to-top:hover{color:var(--primary);transform:translateY(-2px)}@media screen and (min-width: 768px){.footer__inner{padding:var(--space-7) var(--view-horizontal-desktop-padding)}.footer__content{grid-template-columns:1fr auto;align-items:start;gap:var(--space-8) var(--space-10)}.footer__info,.footer__back-to-top{justify-self:end;text-align:end}}
