:root{color-scheme:light;--color-page: #faf7f0;--color-surface: #faf7f0;--color-ink: #2d2a32;--color-ink-soft: #5c5866;--color-accent: #c8402a;--color-accent-hover: #a9331f;--color-accent-soft: rgba(200, 64, 42, .3);--color-accent-ink: #c8402a;--color-data: #2c5aa0;--color-data-strong: #1d3f75;--color-bar: #2c5aa0;--color-bar-hover: #1d3f75;--color-on-bar: #ffffff;--color-on-accent: #ffffff;--color-shadow: transparent;--color-light: #faf7f0;--color-line: rgba(45, 42, 50, .22);--color-line-strong: #2d2a32;--color-gold: #2c5aa0;--color-gold-text: #2c5aa0;--color-gold-light: #9db6dc;--color-gold-deep: #2c5aa0;--color-gold-ink: #ffffff;--gradient-gold-text: linear-gradient(#2c5aa0, #2c5aa0);--gradient-gold-badge: linear-gradient(#2c5aa0, #2c5aa0);--rule: 1.5px solid var(--color-line);--rule-strong: 2px solid var(--color-line-strong);--shadow-raised: none;--shadow-raised-hover: none;--shadow-raised-sm: none;--shadow-inset: inset 0 0 0 1.5px var(--color-line);--shadow-gold-rim: none;--shadow-chip-active: none;--shadow-button: none;--shadow-button-press: none;--shadow-badge-gold: none;--radius-xs: 6px 10px 5px 9px / 9px 5px 10px 6px;--radius-sm: 12px 18px 10px 16px / 16px 10px 18px 12px;--radius-md: 255px 15px 225px 15px / 15px 225px 15px 255px;--radius-lg: 255px 25px 225px 25px / 25px 225px 25px 255px;--radius-xl: 255px 25px 225px 25px / 25px 225px 25px 255px;--radius-pill: 255px 15px 225px 15px / 15px 225px 15px 255px;--font-display: "Bricolage Grotesque", "Avenir Next", system-ui, sans-serif;--font-body: "Geist", "Segoe UI", system-ui, sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.125rem;--text-lg: clamp(1.25rem, 1.1rem + .6vw, 1.5rem);--text-xl: clamp(1.5rem, 1.25rem + 1vw, 2rem);--text-2xl: clamp(1.875rem, 1.4rem + 2vw, 2.75rem);--text-3xl: clamp(2.25rem, 1.5rem + 3.4vw, 4rem);--leading-tight: 1.08;--leading-snug: 1.25;--leading-body: 1.6;--tracking-display: -.025em;--tracking-label: .04em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--space-section: clamp(72px, 6rem + 4vw, 144px);--gutter: max(16px, env(safe-area-inset-left, 0px));--container: 1120px;--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-in-out: cubic-bezier(.77, 0, .175, 1);--ease-spring: cubic-bezier(.2, .9, .3, 1.2);--duration-fast: .12s;--duration-base: .2s;--duration-slow: .32s;--duration-reveal: .5s}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{background-color:var(--color-page);scroll-behavior:smooth;scroll-padding-top:96px;-webkit-text-size-adjust:100%}body{min-height:100vh;background-color:var(--color-page);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:clip}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;letter-spacing:var(--tracking-display);line-height:var(--leading-snug);text-wrap:balance}p{text-wrap:pretty}ul,ol{list-style:none}::selection{background:var(--color-accent-soft);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:var(--radius-xs)}.tabular{font-variant-numeric:tabular-nums}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;top:var(--space-3);left:var(--space-3);z-index:100;padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);background:var(--color-ink);color:var(--color-surface);font-weight:600;transform:translateY(-160%);transition:transform var(--duration-base) var(--ease-out)}.skip-link:focus-visible{transform:none}.container{width:100%;max-width:calc(var(--container) + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--space-section) 0}.section-head{display:grid;gap:var(--space-2);margin-bottom:var(--space-10);max-width:62ch}.section-kicker{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-gold-deep)}.section-title{font-size:var(--text-2xl);line-height:var(--leading-tight)}.section-lead{color:var(--color-ink-soft);font-size:var(--text-md)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}.icon{width:1.1em;height:1.1em;flex-shrink:0}.text-gold{font-style:normal;background:var(--gradient-gold-text);-webkit-background-clip:text;background-clip:text;color:transparent}.block{position:relative;min-width:0}.block--hollow{border:1px dashed var(--color-line-strong)}.block--gold{border-top:2px solid var(--color-gold)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:46px;padding:0 var(--space-5);border-radius:var(--radius-md);font-family:var(--font-body);font-weight:600;font-size:var(--text-sm);line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:box-shadow var(--duration-fast) var(--ease-out),background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.btn--sm{min-height:36px;padding:0 var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-xs)}.btn:not(:has(.btn-label)){aspect-ratio:1;padding:0}.btn-icon{display:inline-flex}.btn--primary{background:var(--color-accent);color:var(--color-on-accent);box-shadow:var(--shadow-button)}.btn--primary:hover{background:var(--color-accent-hover)}.btn--primary:active{box-shadow:var(--shadow-button-press)}.btn--soft{background:transparent;color:var(--color-ink);border:1.5px solid var(--color-ink)}.btn--soft:hover{color:var(--color-accent)}.chip{display:inline-flex;align-items:center;gap:var(--space-2);min-height:36px;padding:0 var(--space-4);border-radius:var(--radius-pill);background:transparent;color:var(--color-ink);border:1.5px solid var(--color-ink);font-size:var(--text-sm);font-weight:500;-webkit-tap-highlight-color:transparent;transition:box-shadow var(--duration-base) var(--ease-out),background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.chip:hover{color:var(--color-accent)}.chip[aria-pressed=true]{background:var(--color-accent);color:var(--color-on-accent);box-shadow:var(--shadow-chip-active)}.chip-count{font-size:var(--text-xs);opacity:.7}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:3px 9px;border-radius:var(--radius-pill);font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;line-height:1.4;letter-spacing:.02em;white-space:nowrap}.badge--gold{background:var(--gradient-gold-badge);color:var(--color-gold-ink);box-shadow:var(--shadow-badge-gold)}.badge--neutral{background:transparent;color:var(--color-ink-soft);border:1.5px solid var(--color-ink)}.stat-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-5) var(--space-6)}.stat{display:flex;flex-direction:column;gap:2px;min-width:0}.stat-value{order:-1;display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);line-height:1.1;letter-spacing:-.02em}.stat--lg .stat-value{font-size:var(--text-2xl)}.stat-label{font-size:var(--text-sm);color:var(--color-ink-soft)}.stat-badge{letter-spacing:var(--tracking-label);text-transform:uppercase;font-size:var(--text-xs)}.anim-icon{display:inline-grid;flex-shrink:0;width:var(--icon-size);height:var(--icon-size)}.anim-icon lord-icon{display:block;width:100%;height:100%}.m-header{position:sticky;top:0;z-index:50;background:var(--color-page);transition:box-shadow var(--duration-slow) var(--ease-out)}.m-header.is-scrolled{box-shadow:0 1px 0 var(--color-line)}.m-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);max-width:var(--container);min-height:60px;margin-inline:auto;padding:max(6px,env(safe-area-inset-top,0px)) var(--gutter) 6px}.m-progress{position:absolute;right:0;bottom:0;left:0;height:2px;background:var(--color-gold);transform-origin:0 50%}.m-burger{display:grid;place-items:center;width:44px;height:44px;margin-right:-8px;border-radius:var(--radius-sm);color:var(--color-ink);-webkit-tap-highlight-color:transparent}.m-burger-lines,.m-burger-lines:before,.m-burger-lines:after{display:block;width:22px;height:2px;border-radius:2px;background:currentColor;transition:transform var(--duration-slow) var(--ease-out),opacity var(--duration-base) var(--ease-out)}.m-burger-lines{position:relative}.m-burger-lines:before,.m-burger-lines:after{content:"";position:absolute;left:0}.m-burger-lines:before{transform:translateY(-7px)}.m-burger-lines:after{transform:translateY(7px)}.m-burger[aria-expanded=true] .m-burger-lines{background:transparent}.m-burger[aria-expanded=true] .m-burger-lines:before{background:var(--color-ink);transform:rotate(45deg)}.m-burger[aria-expanded=true] .m-burger-lines:after{background:var(--color-ink);transform:rotate(-45deg)}.m-menu{position:fixed;inset:60px 0 0;display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-8);padding:var(--space-6) var(--gutter) max(var(--space-8),env(safe-area-inset-bottom,0px));overflow-y:auto;background:var(--color-page);border-top:var(--rule)}.m-menu-list{display:grid;list-style:none}.m-menu-link{display:flex;align-items:baseline;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:var(--rule);font-family:var(--font-display);font-size:clamp(1.75rem,8vw,2.5rem);font-weight:700;line-height:1.15;letter-spacing:var(--tracking-display);color:var(--color-ink)}.m-menu-link:hover,.m-menu-link:focus-visible{color:var(--color-accent)}.m-menu-number{min-width:2ch;font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;color:var(--color-gold-deep)}.m-menu-foot{display:grid;gap:var(--space-4)}.m-menu-email{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;overflow-wrap:anywhere;text-decoration:underline;text-decoration-color:var(--color-accent-soft);text-underline-offset:4px}.m-menu-socials{display:flex;flex-wrap:wrap;gap:var(--space-2)}.section-number{font-variant-numeric:tabular-nums;color:var(--color-ink)}.section-number:after{content:"·";margin-left:var(--space-2);color:var(--color-ink-soft)}.m-filter{display:flex;gap:var(--space-2);margin-inline:calc(var(--gutter) * -1);padding:2px var(--gutter) var(--space-2);overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none}.m-filter::-webkit-scrollbar{display:none}.project-filters>.m-filter{flex:1 1 100%;min-width:0}.m-filter .chip{flex-shrink:0;scroll-snap-align:start}.m-more{width:100%;margin-top:var(--space-8)}.project-index{margin-right:var(--space-3);font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;color:var(--color-gold-deep);vertical-align:.2em}.site-brand{display:inline-flex;align-items:center;gap:var(--space-3);padding-right:var(--space-2);font-family:var(--font-display);font-weight:700;letter-spacing:-.01em;border-radius:var(--radius-pill)}.site-monogram{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--color-line-strong);font-size:var(--text-sm);color:var(--color-accent)}.hero{padding-top:var(--space-8)}.hero-inner{display:grid;gap:var(--space-8)}.hero-card{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"text photo" "proofs proofs";gap:var(--space-10) var(--space-12);padding-top:clamp(var(--space-6),3vw,var(--space-10))}.hero-text{grid-area:text;display:grid;align-content:start;gap:var(--space-6);min-width:0}.hero-title{font-size:var(--text-3xl);line-height:var(--leading-tight);max-width:18ch}.hero-quote{display:grid;gap:var(--space-1);max-width:54ch;margin:0}.hero-quote blockquote{margin:0;font-size:var(--text-md);font-style:italic;color:var(--color-ink-soft);text-wrap:pretty}.hero-quote figcaption{font-size:12px;font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-gold-deep)}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-5)}.hero-location{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-ink-soft)}.hero-socials{display:flex;gap:var(--space-3)}.hero-photo{grid-area:photo;align-self:start;width:clamp(200px,24vw,300px)}.hero-photo img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;border:2px solid var(--color-ink);border-radius:var(--radius-md);transform:rotate(-1.5deg)}.hero-proofs{grid-area:proofs;padding-top:var(--space-8);border-top:1px solid var(--color-line)}@media(max-width:820px){.hero-card{grid-template-columns:minmax(0,1fr);grid-template-areas:"photo" "text" "proofs";gap:var(--space-8)}.hero-photo{width:132px}}.project-filters:empty{display:none}.project-filters{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-8)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:var(--space-10) var(--space-8)}.project-grid-item{display:flex;min-width:0}.project-grid-empty{padding:var(--space-12) 0;text-align:center;color:var(--color-ink-soft)}.project-card{display:flex;flex-direction:column;gap:var(--space-4);width:100%;padding-top:var(--space-5);border-top:var(--rule-strong)}.project-card:hover{border-top-color:var(--color-accent)}.project-card:hover .project-title{color:var(--color-accent)}.project-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px var(--space-3)}.project-meta .project-competences{display:contents}.project-competences li{white-space:nowrap}.project-period{font-size:var(--text-xs);color:var(--color-ink-soft)}.project-title{font-size:var(--text-lg);line-height:var(--leading-snug);transition:color var(--duration-base) var(--ease-out)}.project-pitch{font-size:var(--text-sm);color:var(--color-ink-soft)}.project-foot{display:grid;gap:var(--space-4);margin-top:auto}.project-facts{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.project-stack{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:600;color:var(--color-ink)}.project-stack li+li:before{content:"·";margin-right:var(--space-3);color:var(--color-ink-soft)}.project-competences{display:flex;flex-wrap:wrap;gap:6px}.project-competences li{padding:2px 10px;border-radius:var(--radius-pill);border:1.5px solid var(--color-ink);font-size:var(--text-xs);font-weight:600;color:var(--color-ink-soft)}.project-competences li.is-parcours{border-color:var(--color-data);color:var(--color-gold-deep)}.project-team{display:inline-flex;align-items:center;gap:var(--space-1);flex-shrink:0;font-size:var(--text-xs);font-weight:600;color:var(--color-ink-soft)}.project-links{display:flex;flex-wrap:wrap;gap:var(--space-2)}.parcours-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-10) var(--space-12)}.parcours-card{height:100%;padding-top:var(--space-6);border-top:var(--rule-strong)}.parcours-group{margin-bottom:var(--space-6);font-size:var(--text-lg)}.parcours-list{display:grid;gap:var(--space-6)}.parcours-item{display:grid;grid-template-columns:9.5rem minmax(0,1fr);gap:var(--space-4)}.parcours-item+.parcours-item{padding-top:var(--space-6);border-top:1px solid var(--color-line)}.parcours-period{font-size:var(--text-xs);font-weight:600;color:var(--color-ink-soft);padding-top:3px}.parcours-title{font-weight:600;line-height:var(--leading-snug)}.parcours-place{font-size:var(--text-sm);color:var(--color-ink-soft)}.parcours-detail{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--color-ink-soft)}@media(max-width:860px){.parcours-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:480px){.parcours-item{grid-template-columns:minmax(0,1fr);gap:var(--space-1)}}.bento{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-10) 0;border-top:var(--rule-strong)}.bento-cell+.bento-cell{border-left:var(--rule)}.bento-cell{display:flex;min-width:0}.bento-cell--triathlon{grid-column:span 2}.bento-card{display:flex;flex-direction:column;gap:var(--space-5);width:100%;padding:var(--space-6) var(--space-8) 0}.bento-cell.bento-cell--triathlon,.bento-cell.bento-cell--echecs{border-left:0}.bento-cell--triathlon .bento-card,.bento-cell--echecs .bento-card{padding-left:0}.bento-card--small{gap:var(--space-4)}.bento-title{display:flex;align-items:center;gap:var(--space-3);font-size:var(--text-lg)}.bento-title .anim-icon{color:var(--color-gold-deep)}.bento-card--small .bento-title{font-size:var(--text-md)}.bento-apport{margin-top:auto;padding-top:var(--space-4);border-top:1px solid var(--color-line);font-size:var(--text-sm);color:var(--color-ink-soft)}.race-list{display:grid;gap:var(--space-2)}.race{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:var(--rule)}.race-place{font-weight:600}.race-format{font-size:var(--text-xs);font-weight:600;color:var(--color-ink-soft)}.race-time{font-size:var(--text-sm);padding:4px 12px}.tag-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag-list .badge{font-size:var(--text-xs);padding:5px 12px}.lang-list{display:grid;gap:var(--space-3)}.lang{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:var(--space-1) var(--space-3)}.lang dt{font-weight:600}.lang dd{font-size:var(--text-sm);color:var(--color-ink-soft)}@media(max-width:900px){.bento{grid-template-columns:minmax(0,1fr);border-top:0}.bento-cell--triathlon{grid-column:auto}.bento-cell,.bento-cell+.bento-cell{border-left:0;border-top:var(--rule-strong)}.bento-card,.bento-cell--triathlon .bento-card,.bento-cell--echecs .bento-card{padding:var(--space-6) 0 0}}.contact{padding-bottom:var(--space-10)}.contact-card{display:grid;justify-items:center;gap:var(--space-4);padding:clamp(var(--space-8),6vw,var(--space-20)) 0;text-align:center;border-top:var(--rule-strong)}.contact-email{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--space-3) var(--space-4);margin-top:var(--space-4);max-width:100%}.contact-email-text{min-width:0;max-width:100%;font-family:var(--font-body);font-weight:500;font-size:clamp(1.125rem,.8rem + 2vw,2rem);letter-spacing:-.02em;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;border-bottom:2px solid var(--color-accent-soft);transition:border-color var(--duration-base) var(--ease-out)}.copy-button{min-width:112px}.copy-icon,.copy-label{display:inline-flex}.contact-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3);margin-top:var(--space-4)}.footer-note{margin-top:var(--space-8);text-align:center;font-size:var(--text-xs);color:var(--color-ink-soft)}.footer-note a,.detail-credit a{color:inherit;text-decoration:underline;text-underline-offset:2px}.about-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--space-10) var(--space-12);align-items:start}.about-text{display:grid;gap:var(--space-4);font-size:var(--text-md);line-height:var(--leading-body)}.about-qualities{padding-top:var(--space-6);border-top:var(--rule-strong)}.quality-list{display:grid;gap:var(--space-5)}.quality-list--compact{gap:var(--space-3)}.quality-title{font-family:var(--font-display);font-size:var(--text-md);color:var(--color-gold-deep)}.quality-proof{font-size:var(--text-sm);color:var(--color-ink-soft)}@media(max-width:820px){.about-grid{grid-template-columns:minmax(0,1fr)}}.legal{font-size:var(--text-xs);color:var(--color-ink-soft)}.legal summary{width:fit-content;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.legal summary:hover{color:var(--color-accent)}.legal-list{display:grid;gap:var(--space-2);margin-top:var(--space-2)}.legal-list dt{font-weight:600;color:var(--color-ink)}.legal-list a{color:inherit;text-decoration:underline}.footer-legal{max-width:60ch;margin:var(--space-3) auto 0;text-align:center}.footer-legal summary{margin-inline:auto}.chart-card{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6)}.chart-head{display:grid;gap:var(--space-1)}.chart-title{font-family:var(--font-display);font-size:var(--text-md);font-weight:700;letter-spacing:-.01em}.chart-title:before{content:"";display:inline-block;width:.5em;height:.5em;margin-right:.45em;border-radius:50%;background:var(--gradient-gold-badge);box-shadow:var(--shadow-badge-gold);vertical-align:.08em}.chart-title--icon{display:flex;align-items:center;gap:.45em}.chart-title--icon:before{content:none}.chart-title--icon .anim-icon{color:var(--color-gold-deep)}.chart-hint{font-size:var(--text-sm);color:var(--color-ink-soft)}.timeline-scroll{overflow-x:auto;overflow-y:hidden;margin-inline:calc(-1 * var(--space-2));padding:var(--space-1) var(--space-2) var(--space-2);scrollbar-width:thin;overscroll-behavior-x:contain}.timeline-svg{display:block;max-width:none;height:auto;overflow:visible}.tl-grid{stroke:var(--color-line);stroke-width:1}.tl-year{font-size:12px;fill:var(--color-ink-soft);font-variant-numeric:tabular-nums}.tl-item{outline:none;transition:opacity var(--duration-base) var(--ease-out)}.tl-bar{fill:transparent;stroke:var(--color-line-strong);stroke-width:1;transition:fill var(--duration-base) var(--ease-out),stroke var(--duration-base) var(--ease-out)}.tl-item--cadre{cursor:pointer}.tl-item--cadre .tl-bar{fill:var(--color-bar);stroke:transparent}.tl-item--cadre:hover .tl-bar,.tl-item--cadre.is-active .tl-bar{fill:var(--color-bar-hover)}.tl-item.is-dimmed{opacity:.45}.tl-item:focus-visible .tl-bar{stroke:var(--color-ink);stroke-width:2}.tl-bar-label{font-size:12px;font-weight:600;fill:var(--color-ink);pointer-events:none}.tl-item--cadre .tl-bar-label{fill:var(--color-on-bar)}.tl-bar-label.tl-bar-label--outside{font-size:12px;fill:var(--color-ink-soft)}.tl-item--cadre .tl-bar-label--outside,.tl-item--cadre:hover .tl-bar-label--outside,.tl-item--cadre.is-active .tl-bar-label--outside{fill:var(--color-ink)}.tl-today line{stroke:var(--color-accent);stroke-width:1.5;stroke-dasharray:3 3}.tl-today text{font-size:12px;font-weight:600;fill:var(--color-accent-ink)}.theme-bars{display:grid;gap:var(--space-2);list-style:none}.theme-row{display:grid;grid-template-columns:minmax(84px,7.5rem) minmax(0,1fr) 3.2em;align-items:center;gap:var(--space-3);width:100%;min-height:36px;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);text-align:left;font-size:var(--text-sm);color:var(--color-ink);-webkit-tap-highlight-color:transparent;transition:background-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.theme-row:hover{background:var(--color-page)}.theme-row[aria-pressed=true]{background:var(--color-page);box-shadow:var(--shadow-inset)}.theme-row-label{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.theme-row[aria-pressed=true] .theme-row-label{color:var(--color-accent);font-weight:600}.theme-row:disabled{cursor:default}.theme-row:disabled:hover{background:none}.theme-row-none{font-size:var(--text-xs);font-weight:500;font-style:italic}.theme-row.is-empty .theme-row-label,.theme-row.is-empty .theme-row-value{color:var(--color-ink-soft)}.theme-track{position:relative;height:18px;border-radius:var(--radius-pill);box-shadow:var(--shadow-inset)}.theme-ghost,.theme-fill{position:absolute;inset:0 auto 0 0;border-radius:var(--radius-pill)}.theme-ghost{outline:1.5px dashed var(--color-data);outline-offset:-1.5px}.theme-fill{background:var(--color-data);box-shadow:inset 0 2px #ffffff73,inset 0 -2px #00000014;transition:background-color var(--duration-base) var(--ease-out)}.theme-row:hover .theme-fill,.theme-row[aria-pressed=true] .theme-fill{background:var(--color-data-strong)}.theme-row-value{font-weight:600;text-align:right}.theme-row-total{font-weight:400;color:var(--color-ink-soft)}.competence-list{display:grid;gap:2px;list-style:none}.competence-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-2);width:100%;min-height:32px;padding:3px var(--space-2);border-radius:var(--radius-sm);text-align:left;font-size:var(--text-sm);color:var(--color-ink);-webkit-tap-highlight-color:transparent;transition:background-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.competence-row:hover{background:var(--color-page)}.competence-row[aria-pressed=true]{background:var(--color-page);box-shadow:var(--shadow-inset)}.competence-row:disabled{cursor:default}.competence-row:disabled:hover{background:none}.competence-check{color:var(--color-data-strong)}.competence-label{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.competence-row[aria-pressed=true] .competence-label{color:var(--color-accent);font-weight:600}.competence-count{font-size:var(--text-xs);font-weight:600;color:var(--color-ink-soft);white-space:nowrap}.project-filters{align-items:center;gap:var(--space-3) var(--space-6)}.chip:disabled{opacity:.4;box-shadow:none;cursor:not-allowed}.chip:disabled:hover{color:var(--color-ink)}.intro-loader{position:fixed;inset:0;z-index:100;display:grid;place-items:center;align-content:center;gap:var(--space-6);background:var(--color-page);animation:intro-failsafe .3s var(--ease-out) 2.6s forwards}@keyframes intro-failsafe{to{opacity:0;visibility:hidden;pointer-events:none}}.intro-stage{position:relative}.intro-card{position:absolute;top:0;left:0;overflow:hidden;padding:7px 10px;border-radius:var(--radius-xs);background:var(--color-page);box-shadow:inset 0 0 0 1px var(--color-line),inset 3px 0 0 var(--color-accent-soft);font-size:12px;font-weight:600;line-height:1.2;white-space:nowrap;text-overflow:ellipsis;color:var(--color-ink);will-change:transform,opacity}.intro-frise{position:absolute;left:0;right:0;height:2px;border-radius:var(--radius-pill);background:var(--color-line)}.intro-dot{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--color-accent)}.intro-bar{position:absolute;border-radius:var(--radius-xs) var(--radius-xs) 4px 4px;background:var(--color-accent-soft);box-shadow:var(--shadow-raised-sm),inset 0 2px #ffffff73}.intro-skip{font-size:var(--text-xs);color:var(--color-ink-soft)}@media(prefers-reduced-motion:reduce){.intro-loader{display:none}}@media(max-width:600px){.chart-card{padding:var(--space-5) var(--space-4)}.theme-row{grid-template-columns:6.5rem minmax(0,1fr) 2.8em;gap:var(--space-2)}.project-filters{gap:var(--space-3)}}.dash{--dash-gap: clamp(10px, 1.1vw, 16px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);grid-template-areas:"frise themes tech" "competences center equipe" "statut sport contact";gap:0;height:100vh;height:100dvh;max-width:1680px;margin-inline:auto;padding-top:max(var(--dash-gap),env(safe-area-inset-top,0px));padding-bottom:max(var(--dash-gap),env(safe-area-inset-bottom,0px));padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));overflow:hidden}@media(max-height:760px){.dash{grid-template-rows:minmax(0,1fr) minmax(0,1.65fr) minmax(0,1fr)}.dash-cell--center{--center-inset: 4px}.dash .center-card{padding:12px 16px}.dash .tech-cloud{gap:3px}.dash .tech-bubble{padding:calc(2px + 4px * var(--weight, .5)) calc(6px + 6px * var(--weight, .5))}}@media(max-width:1200px){.dash{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) minmax(0,1fr)}.dash .tech-cloud{gap:3px}.dash .tech-bubble{padding:calc(2px + 4px * var(--weight, .5)) calc(6px + 6px * var(--weight, .5))}}.dash-cell{min-width:0;min-height:0;border-right:var(--rule);border-bottom:var(--rule)}.dash-cell--tech,.dash-cell--equipe,.dash-cell--contact{border-right:0}.dash-cell--statut,.dash-cell--sport,.dash-cell--contact{border-bottom:0}.dash-cell--themes>.chart-card{border:0}.dash-cell--frise{grid-area:frise}.dash-cell--themes{grid-area:themes}.dash-cell--tech{grid-area:tech}.dash-cell--competences{grid-area:competences}.dash-cell--center{grid-area:center}.dash-cell--equipe{grid-area:equipe}.dash-cell--statut{grid-area:statut}.dash-cell--sport{grid-area:sport}.dash-cell--contact{grid-area:contact}.dash .chart-card{display:flex;flex-direction:column;gap:var(--space-2);height:100%;padding:clamp(12px,1.6vh,20px) clamp(14px,1.4vw,24px);overflow:hidden}.dash .chart-head{gap:0}.dash .chart-title{font-size:.95rem;line-height:1.3}.dash .chart-hint{overflow:hidden;font-size:var(--text-xs);line-height:1.4;white-space:nowrap;text-overflow:ellipsis}.dash .chart-body{display:flex;flex:1;flex-direction:column;justify-content:center;min-height:0}.dash .ghost-total{font-weight:400;color:var(--color-ink-soft)}.dash .is-empty{opacity:.65}.dash .timeline-scroll{margin:0;padding:0;overflow-x:auto;overflow-y:hidden}.dash .tl-year,.dash .tl-bar-label,.dash .tl-bar-label--outside{font-size:12px}.dash .tl-today{stroke:var(--color-accent);stroke-width:1.5;stroke-dasharray:3 3}.dash-cell--themes{position:relative;z-index:5}.dash .theme-bars{display:grid;grid-auto-rows:minmax(0,44px);align-content:center;gap:0;height:100%}.dash .theme-bars li{min-height:0}.dash .theme-row{grid-template-columns:minmax(70px,7rem) minmax(0,1fr) 2.8em;gap:var(--space-2);height:100%;min-height:0;padding:0 var(--space-2);font-size:.8rem;line-height:1.2}.dash .theme-track{height:10px}.tech-cloud{display:flex;flex-wrap:wrap;align-content:center;justify-content:center;gap:6px}.tech-bubble{display:inline-flex;align-items:baseline;gap:5px;padding:calc(3px + 5px * var(--weight, .5)) calc(8px + 8px * var(--weight, .5));border-radius:var(--radius-pill);background:transparent;border:1.5px solid var(--color-ink);font-size:calc(11px + 4px * var(--weight, .5));font-weight:600;line-height:1.2;transition:background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.tech-bubble:hover{color:var(--color-accent)}.tech-bubble[aria-pressed=true]{background:var(--color-accent);color:var(--color-on-accent);box-shadow:var(--shadow-chip-active)}.tech-count{font-size:max(12px,.8em);color:var(--color-ink-soft)}.tech-bubble[aria-pressed=true] .tech-count,.tech-bubble[aria-pressed=true] .ghost-total{color:inherit;opacity:.85}.dash .bar-chart--competence .theme-row{grid-template-columns:minmax(96px,9.5rem) minmax(0,1fr) 2.8em}.parcours-dot{display:inline-block;width:7px;height:7px;margin-left:6px;border-radius:50%;background:var(--gradient-gold-badge);box-shadow:var(--shadow-badge-gold);vertical-align:middle}.team-chart{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--space-3);height:100%}.team-donut{width:clamp(72px,9vw,120px);max-height:100%;height:auto;aspect-ratio:1;transform:rotate(-90deg);overflow:visible}.team-donut circle{fill:none;stroke-width:13}.team-base{stroke:var(--color-page)}.team-arc{cursor:pointer}.team-arc-ghost{stroke:var(--color-data);opacity:.3;transition:opacity var(--duration-base) var(--ease-out)}.team-arc-fill{stroke:var(--color-data);opacity:var(--tone, 1);transition:stroke var(--duration-base) var(--ease-out),opacity var(--duration-base) var(--ease-out)}.team-arc:hover .team-arc-fill,.team-arc.is-active .team-arc-fill{stroke:var(--color-data-strong);opacity:1}.team-legend{display:grid;gap:2px}.legend-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:var(--space-2);width:100%;padding:5px var(--space-2);border-radius:var(--radius-sm);text-align:left;font-size:.8rem;transition:background-color var(--duration-base) var(--ease-out)}.legend-row:hover{background:var(--color-page)}.legend-row[aria-pressed=true]{background:var(--color-page);box-shadow:var(--shadow-inset);color:var(--color-accent);font-weight:600}.legend-dot{width:10px;height:10px;border-radius:50%;background:var(--color-data);opacity:var(--tone, 1)}.legend-row[aria-pressed=true] .legend-dot{background:var(--color-data-strong);opacity:1}.legend-value{font-weight:600}.status-chart{display:flex;flex-direction:column;justify-content:center;gap:var(--space-3);height:100%}.status-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.status-tile{display:grid;gap:2px;padding:var(--space-2) 0;border-top:2px solid var(--color-line);text-align:left;transition:border-color var(--duration-base) var(--ease-out)}.status-tile:hover{border-top-color:var(--color-line-strong)}.status-tile[aria-pressed=true]{border-top-color:var(--color-accent)}.status-value{font-family:var(--font-display);font-size:clamp(1.4rem,2.2vw,2rem);font-weight:700;line-height:1.1;letter-spacing:var(--tracking-display)}.status-tile:hover .status-value,.status-tile[aria-pressed=true] .status-value{color:var(--color-accent)}.status-value .ghost-total{font-size:.55em}.status-label{font-size:var(--text-xs);color:var(--color-ink-soft)}.status-split{display:flex;gap:3px;height:10px;padding:2px;border-radius:var(--radius-pill);box-shadow:var(--shadow-inset)}.status-part{min-width:0;border-radius:var(--radius-pill)}.status-part--livre{background:var(--color-data)}.status-part--en-cours{background:repeating-linear-gradient(135deg,var(--color-data) 0 3px,transparent 3px 6px)}.sport-card{width:100%;text-align:left;cursor:pointer}.sport-card[aria-pressed=true]{box-shadow:var(--shadow-raised),inset 0 0 0 2px var(--color-accent-soft)}.dash .sport-body{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);align-items:center;gap:var(--space-3)}.sport-slope{position:relative;height:100%;min-width:0;min-height:0}.sport-slope svg{width:100%;height:100%;overflow:visible}.slope-line{stroke:var(--color-data);stroke-width:2.5;stroke-linecap:round}.slope-dot{fill:var(--color-surface);stroke:var(--color-ink-soft);stroke-width:2}.slope-dot--best{fill:var(--color-gold);stroke:var(--color-gold-deep)}.slope-time{font-size:12px;font-weight:700;fill:var(--color-ink);font-variant-numeric:tabular-nums}.slope-time--best{fill:var(--color-gold-deep)}.slope-place{font-size:12px;fill:var(--color-ink-soft)}@media(max-width:600px){.slope-time,.slope-place{font-size:15px}}.slope-gain{position:absolute;top:0;right:0}.sport-chronos{display:grid;gap:4px}.sport-chronos div{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}.sport-chronos dt{font-size:var(--text-xs);color:var(--color-ink-soft)}.sport-chronos dd{font-family:var(--font-display);font-size:1rem;font-weight:700}.contact-cell-body{display:flex;flex-direction:column;justify-content:center;gap:var(--space-3);height:100%}.contact-facts{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5)}.contact-fact dt{font-size:12px;color:var(--color-ink-soft)}.contact-fact dd{font-family:var(--font-display);font-size:1.15rem;font-weight:700;line-height:1.2}.contact-cell-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.center-card{height:calc(100% - 2 * var(--center-inset));margin:var(--center-inset);padding:clamp(16px,2vw,28px);overflow:hidden;container:center / size;border:2.5px solid var(--color-ink);border-radius:18px 26px 20px 24px/24px 18px 26px 20px;background:#fffdf8;box-shadow:6px 6px 0 -1px var(--color-data)}.dash-cell--center{--center-inset: clamp(8px, 1vw, 14px);position:relative;z-index:1;border-right:0;border-bottom:0}.center-frame{height:100%}.center-view{display:flex;flex-direction:column;gap:var(--space-3);height:100%;min-height:0}.home-view{flex-direction:row;align-items:center;gap:clamp(16px,4cqw,32px)}.home-text{display:flex;flex:1;flex-direction:column;gap:clamp(5px,2.2cqh,14px);min-width:0;max-height:100%;overflow-y:auto;padding-bottom:4px}.home-quote{position:relative;display:grid;gap:clamp(6px,2cqh,12px);margin:0;padding-left:clamp(14px,3cqw,22px);border-left:3px solid var(--color-gold)}.home-quote blockquote{font-family:var(--font-display);font-size:clamp(1rem,min(5cqw,8.6cqh),2.6rem);font-weight:700;line-height:1.12;color:var(--color-ink);text-wrap:balance}.home-quote blockquote p:before{content:"« ";color:var(--color-gold)}.home-quote blockquote p:after{content:" »";color:var(--color-gold)}.home-quote figcaption{font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-gold-deep)}.home-name{font-family:var(--font-display);font-size:clamp(1.5rem,min(8cqw,13cqh),3.8rem);font-weight:700;line-height:1.1;text-align:center;color:var(--color-gold-deep)}.home-about-link{align-self:flex-start}.home-photo{flex-shrink:0;width:min(32cqw,74cqh,340px)}.home-photo img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;border:2px solid var(--color-ink);border-radius:var(--radius-md);transform:rotate(-1.5deg)}@container center (max-width: 440px){.home-view{align-items:flex-start}.home-photo{width:min(26cqw,110px)}}@container center (max-height: 200px){.home-photo{width:min(26cqw,70cqh)}}.center-filters{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2)}.filter-pills{display:flex;flex-wrap:wrap;gap:6px}.filter-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-pill);background:var(--color-accent);color:var(--color-on-accent);box-shadow:var(--shadow-chip-active);font-size:var(--text-xs);font-weight:600}.filter-pill:hover{background:var(--color-accent-hover)}.text-button{font-size:var(--text-sm);font-weight:600;color:var(--color-ink-soft);text-decoration:underline;text-underline-offset:3px;transition:color var(--duration-base) var(--ease-out)}.text-button:hover{color:var(--color-accent)}.back-button{align-self:flex-start;text-decoration:none}.project-tabs-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2)}.project-count{font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-soft)}.project-tabs{display:flex;flex-wrap:wrap;gap:2px;padding:3px;border-radius:var(--radius-pill);box-shadow:var(--shadow-inset)}.project-tab{position:relative;isolation:isolate;width:30px;height:30px;border-radius:50%;font-size:var(--text-sm);font-weight:600;color:var(--color-ink-soft);transition:color var(--duration-base) var(--ease-out)}.project-tab:hover{color:var(--color-accent)}.project-tab[aria-selected=true]{color:var(--color-on-accent)}.project-tab-pill{position:absolute;inset:0;z-index:-1;border-radius:50%;background:var(--color-accent);box-shadow:var(--shadow-button)}.project-stage{position:relative;flex:1;min-height:0;overflow-x:hidden;overflow-y:auto}.project-panel{display:flex;flex-direction:column;gap:var(--space-2)}.project-foot-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-4);margin-top:var(--space-1)}.dash .project-title{font-size:clamp(1.3rem,min(5cqw,8cqh),2.2rem);line-height:1.1}.dash .project-pitch{max-width:62ch;font-size:clamp(.82rem,3.2cqh,1rem);line-height:1.5;color:var(--color-ink-soft)}.center-empty{justify-content:center;align-items:flex-start}.center-empty .center-filters{width:100%}.center-empty-text{font-size:var(--text-md)}.detail-view{overflow-y:auto}@property --scroll-fade{syntax: "<length>"; inherits: false; initial-value: 0px;}@keyframes scroll-fade{0%{--scroll-fade: 40px}to{--scroll-fade: 0px}}@supports (animation-timeline: scroll()){.detail-view,.home-text{animation:scroll-fade linear both;animation-timeline:scroll(self);-webkit-mask-image:linear-gradient(#000 calc(100% - var(--scroll-fade)),transparent);mask-image:linear-gradient(#000 calc(100% - var(--scroll-fade)),transparent)}}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5)}@container center (max-width: 380px){.detail-grid{grid-template-columns:minmax(0,1fr)}}.detail-block{display:grid;align-content:start;gap:var(--space-2)}.detail-title{font-size:1.05rem}.detail-title--big{font-size:clamp(1.4rem,6cqh,2rem)}.detail-apport{font-size:var(--text-sm);color:var(--color-ink-soft)}.detail-note{font-size:var(--text-xs);color:var(--color-ink-soft)}.dash .race-list{gap:6px}.dash .race{padding:3px 4px 3px var(--space-3);font-size:var(--text-sm)}.dash .race-time{padding:2px 10px}.chrono-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}.chrono-list dt{font-size:12px;color:var(--color-ink-soft)}.chrono-list dd{font-family:var(--font-display);font-size:clamp(1.1rem,5cqh,1.6rem);font-weight:700}.contact-main{display:grid;justify-items:start;gap:6px}.dash .contact-email{justify-content:flex-start;margin-top:0}.dash .contact-email-text{font-size:clamp(1rem,4cqw,1.5rem)}.dash .contact-actions{justify-content:flex-start;margin-top:0}.tuto{display:flex;align-items:center;gap:var(--space-2);padding:4px 4px 4px 10px;border-left:2px solid var(--color-gold)}.tuto-text{flex:1;font-size:var(--text-xs);font-weight:500;line-height:1.45}.tuto-badge{margin-right:4px;padding-block:1px}.tuto-ok{flex-shrink:0;padding:3px 12px;border-radius:var(--radius-pill);background:var(--color-accent);color:var(--color-on-accent);font-size:var(--text-sm);font-weight:600;box-shadow:inset 0 2px #ffffff40}.tuto-ok:hover{background:var(--color-accent-hover)}.is-tuto-target>.chart-card{animation:tuto-pulse 1.8s var(--ease-out) infinite}@keyframes tuto-pulse{0%{box-shadow:var(--shadow-raised),0 0 #2c5aa080}to{box-shadow:var(--shadow-raised),0 0 0 14px #2c5aa000}}@media(max-width:899px),(max-height:599px){.dash{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-template-areas:"center" "themes" "frise" "tech" "competences" "equipe" "statut" "sport" "contact";height:auto;padding-top:max(16px,env(safe-area-inset-top,0px));padding-bottom:max(24px,env(safe-area-inset-bottom,0px));overflow:visible}.dash .chart-card{height:auto;min-height:190px}.dash-cell{border-right:0;border-bottom:var(--rule)}.dash-cell--contact{border-bottom:0}.dash .theme-bars{grid-auto-rows:32px}.center-card{height:auto;container-type:inline-size}.home-view{flex-direction:column-reverse;align-items:flex-start}.home-photo{display:block;width:120px}.center-view,.center-frame{height:auto}.project-stage{overflow:visible}}.detail-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-4)}.about-tabs{display:flex;gap:var(--space-2)}.about-tab{padding:2px 12px;border:1.5px solid var(--color-ink);border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:600;color:var(--color-ink)}.about-tab:hover{color:var(--color-accent)}.about-tab[aria-pressed=true]{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-on-accent)}.dash .lang-list{gap:2px}.dash .lang dt{font-size:var(--text-sm)}.detail-foot{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--space-4)}.detail-foot .legal[open]{flex-basis:100%}
