﻿:root{--bg:           #ffffff;--bg-secondary: #f9fafb;--bg-elevated:  #f3f4f6;--text:         #111827;--text-muted:   #6b7280;--text-subtle:  #9ca3af;--border:       #e5e7eb;--border-hover: #d1d5db;--accent:       #111827;--accent-light: #374151;--accent-bg:    rgba(17, 24, 39, 0.06);--glass-bg:       var(--bg-elevated);--glass-bg-hover: #e9eaec;--glass-border:   var(--border);--glass-blur:     0px;--glass-shadow:   var(--shadow-md);--gradient:        var(--accent);--gradient-subtle: var(--accent-bg);--cyan:    var(--accent);--indigo:  var(--accent);--orange:  var(--accent-light);--shadow-sm:   0 1px 3px rgba(0, 0, 0, 0.07);--shadow-md:   0 4px 12px rgba(0, 0, 0, 0.09);--shadow-lg:   0 12px 32px rgba(0, 0, 0, 0.11);--card-shadow: 0 1px 4px rgba(0, 0, 0, 0.07);--transition: 0.2s ease;--radius:     12px;--space-1:  0.5rem;--space-2:  1rem;--space-3:  1.5rem;--space-4:  2rem;--space-5:  2.5rem;--space-6:  3rem;--space-8:  4rem;--space-10: 5rem;--space-12: 6rem;--space-16: 8rem;--text-xs:   0.75rem;--text-sm:   0.875rem;--text-base: 1rem;--text-lg:   1.125rem;--text-xl:   1.25rem;--text-2xl:  1.5rem;--text-3xl:  1.875rem;--text-4xl:  2.25rem;--text-5xl:  3rem;--radius-sm:   4px;--radius-md:   8px;--radius-lg:   12px;--radius-xl:   16px;--radius-full: 9999px;--z-navbar:        100;--z-dropdown:      200;--z-modal:        1000;--z-modal-content: 1001;--parcours-formation:  var(--accent);--parcours-projet:     var(--accent-light);--parcours-experience: var(--text-muted)}[data-theme="dark"]{--bg:           #111827;--bg-secondary: #1f2937;--bg-elevated:  #374151;--text:         #f9fafb;--text-muted:   rgba(249, 250, 251, 0.6);--text-subtle:  rgba(249, 250, 251, 0.35);--border:       rgba(255, 255, 255, 0.1);--border-hover: rgba(255, 255, 255, 0.2);--accent:       #f9fafb;--accent-light: #e5e7eb;--accent-bg:    rgba(249, 250, 251, 0.08);--glass-bg:       rgba(255, 255, 255, 0.05);--glass-bg-hover: rgba(255, 255, 255, 0.09);--glass-border:   rgba(255, 255, 255, 0.1);--glass-shadow:   0 8px 32px rgba(0, 0, 0, 0.4);--gradient:        var(--accent);--gradient-subtle: var(--accent-bg);--cyan:    var(--accent);--indigo:  var(--accent);--orange:  var(--accent-light);--shadow-sm:   0 1px 3px rgba(0, 0, 0, 0.3);--shadow-md:   0 4px 16px rgba(0, 0, 0, 0.4);--shadow-lg:   0 12px 40px rgba(0, 0, 0, 0.5);--card-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);--parcours-formation:  var(--accent);--parcours-projet:     var(--accent-light);--parcours-experience: var(--text-muted)}@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/inter-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/inter-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:'Inter', -apple-system, BlinkMacSystemFont, sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;min-height:100vh}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-subtle)}::selection{background:var(--accent-bg);color:var(--text)}.navbar{position:fixed;top:0;left:0;right:0;background:var(--bg);border-bottom:1px solid var(--border);padding:0.85rem 2rem;z-index:var(--z-navbar);transition:background var(--transition),border-color var(--transition)}.nav-container{max-width:1100px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.logo{font-weight:800;font-size:1.15rem;color:var(--text);letter-spacing:-0.01em}.nav-links{display:flex;list-style:none;gap:0.25rem;align-items:center}.nav-links a{color:var(--text-muted);font-size:0.9rem;font-weight:450;transition:color var(--transition);padding:0.5rem 0.75rem;border-radius:8px;position:relative}.nav-links a:hover{color:var(--text)}.nav-links a.active{color:var(--text);font-weight:500}.nav-links a.active::after{content:'';position:absolute;bottom:2px;left:0.75rem;right:0.75rem;height:2px;background:var(--accent);border-radius:2px}.theme-toggle{background:var(--glass-bg);border:1px solid var(--border);width:36px;height:36px;border-radius:50%;cursor:pointer;font-size:0.9rem;display:flex;align-items:center;justify-content:center;transition:border-color var(--transition),background var(--transition);margin-left:0.5rem}.theme-toggle:hover{border-color:var(--border-hover);background:var(--glass-bg-hover)}.lang-toggle{display:inline-flex;align-items:center;justify-content:center;background:var(--glass-bg);border:1px solid var(--border);width:36px;height:36px;border-radius:50%;cursor:pointer;font-size:0.75rem;font-weight:700;letter-spacing:0.02em;color:var(--text-muted);transition:border-color var(--transition),background var(--transition),color var(--transition);margin-left:0.25rem;text-decoration:none}.lang-toggle:hover{border-color:var(--border-hover);background:var(--glass-bg-hover);color:var(--text)}.lang-toggle.lang-loading{opacity:0.5;cursor:wait;pointer-events:none}.mobile-menu-btn{display:none;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--text)}.hero{min-height:88vh;display:flex;align-items:center;justify-content:center;padding:8rem 2rem 4rem}.hero-content{max-width:900px;width:100%;display:flex;align-items:center;gap:4rem}.hero-text{flex:1;text-align:left}.hero-greeting{display:inline-flex;align-items:center;gap:0.5rem;font-size:0.9rem;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem;padding:0.35rem 0.9rem;background:var(--accent-bg);border:1px solid var(--border);border-radius:var(--radius-full);opacity:0;animation:heroFadeIn 0.5s 0.1s ease both}.hero-title{font-size:clamp(2.5rem, 7vw, 5rem);font-weight:800;margin-bottom:0.75rem;line-height:1.1;letter-spacing:-0.03em;opacity:0;animation:heroFadeIn 0.5s 0.2s ease both}.hero-title .gradient-text{color:var(--accent)}.hero-typing-line{height:2rem;margin-bottom:1.25rem;font-size:1.2rem;font-weight:500;opacity:0;animation:heroFadeIn 0.5s 0.3s ease both}.hero-typing-text{display:inline;color:var(--accent)}.hero-cursor{display:inline-block;margin-left:1px;color:var(--accent);animation:heroBlink 0.7s step-end infinite}@keyframes heroBlink{0%,100%{opacity:1}50%{opacity:0}}.hero-subtitle{color:var(--text-muted);font-size:1.05rem;margin-bottom:2rem;line-height:1.7;opacity:0;animation:heroFadeIn 0.5s 0.4s ease both}.hero-buttons{display:flex;gap:1rem;opacity:0;animation:heroFadeIn 0.5s 0.5s ease both}.hero-image{flex-shrink:0;opacity:0;animation:heroFadeIn 0.6s 0.3s ease both}.badge-scene{width:200px;height:200px;perspective:700px}.badge-flip{width:100%;height:100%;position:relative;transform-style:preserve-3d;animation:badgeSpin 7s ease-in-out infinite}.badge-face{position:absolute;inset:0;border-radius:50%;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;border:3px solid var(--border);box-shadow:0 4px 20px rgba(0,0,0,0.12)}.badge-face img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}.badge-face--back{transform:rotateY(180deg)}@keyframes badgeSpin{0%{transform:rotateY(0deg)}35%{transform:rotateY(0deg)}50%{transform:rotateY(180deg)}85%{transform:rotateY(180deg)}100%{transform:rotateY(360deg)}}@keyframes heroFadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.hero-greeting,.hero-title,.hero-typing-line,.hero-subtitle,.hero-buttons,.hero-image{opacity:1;animation:none}.badge-flip{animation:none}.fade-in{opacity:1;transform:none;transition:none}.project-card-link{transition:none}.project-card-link.filter-visible{animation:none}}.section{padding:var(--space-8) var(--space-4);max-width:1100px;margin:0 auto}.section--compact{padding-top:var(--space-5);padding-bottom:var(--space-5)}.section--compact .section-header{margin-bottom:1.25rem}.section-header{margin-bottom:2.5rem}.section-title{font-size:var(--text-2xl);font-weight:700;margin-bottom:0.5rem}.section-subtitle{color:var(--text-muted)}.page-header{padding:7rem 2rem 1.5rem;text-align:center}.page-header h1{font-size:2.25rem;font-weight:800;margin-bottom:0.5rem;color:var(--text)}.page-header p{color:var(--text-muted);font-size:1.05rem}.footer{border-top:1px solid var(--border);padding:var(--space-4);margin-top:var(--space-8);background:var(--bg)}.footer-content{max-width:1100px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.footer-text{color:var(--text-muted);font-size:0.9rem}.footer-version{font-size:var(--text-xs);color:var(--text-subtle);margin-top:0.15rem}.footer-links{display:flex;gap:1.5rem}.footer-links a{color:var(--text-muted);font-size:0.9rem;transition:color var(--transition)}.footer-links a:hover{color:var(--text)}.footer-legal{max-width:1100px;margin:0.75rem auto 0;padding-top:0.75rem;border-top:1px solid var(--border);display:flex;justify-content:center;align-items:center;gap:0.75rem}.footer-legal a{color:var(--text-subtle);font-size:0.8rem;transition:color var(--transition)}.footer-legal a:hover{color:var(--text-muted)}.footer-legal-sep{color:var(--text-subtle);font-size:0.8rem;opacity:0.5}.about-grid{display:grid;grid-template-columns:220px 1fr;gap:3rem;align-items:start}.profile-card{text-align:center;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);padding:2rem 1.5rem;position:sticky;top:5rem}.profile-image{width:120px;height:120px;border-radius:50%;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center;font-size:2.5rem;margin:0 auto 1rem;border:2px solid var(--border)}.profile-name{font-weight:700;font-size:1.1rem;margin-bottom:0.25rem}.profile-title{font-size:0.9rem;font-weight:500;color:var(--accent);margin-bottom:0.5rem}.profile-location{color:var(--text-muted);font-size:0.85rem}.about-content{display:flex;flex-direction:column;gap:1.5rem}.what-i-do-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.what-i-do-item{display:flex;gap:0.9rem;align-items:flex-start}.what-i-do-icon{font-size:1.4rem;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;flex-shrink:0}.what-i-do-item h4{font-size:0.95rem;font-weight:600;margin:0}.passions-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.passion-item{display:flex;gap:0.9rem;align-items:flex-start}.passion-emoji{font-size:1.6rem;flex-shrink:0;width:40px;text-align:center;line-height:1.4}.passion-item h4{font-size:0.95rem;font-weight:600;margin:0}@media (max-width: 768px){.what-i-do-grid,.passions-grid{grid-template-columns:1fr}}.social-icons{display:flex;justify-content:center;gap:0.75rem;margin-top:1rem}.social-icon-link{color:var(--text-muted);transition:color var(--transition),background var(--transition);width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--bg-secondary);border:1px solid var(--border)}.social-icon-link:hover{color:var(--accent);background:var(--bg-elevated);border-color:var(--border-hover)}.social-icon-link svg{width:18px;height:18px;fill:currentColor}.btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;border-radius:var(--radius-md);font-size:0.95rem;font-weight:500;border:none;cursor:pointer;transition:all 0.25s ease}.btn-primary{background:var(--accent);color:var(--bg);box-shadow:var(--shadow-sm)}.btn-primary:hover{opacity:0.85;transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text)}.btn-secondary:hover{background:var(--glass-bg-hover);border-color:var(--border-hover);transform:translateY(-1px)}.download-btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.7rem 1.25rem;background:var(--accent);color:var(--bg);border-radius:var(--radius-md);font-weight:500;font-size:0.9rem;transition:all 0.25s ease;margin:0.5rem 0.5rem 0.5rem 0;box-shadow:var(--shadow-sm)}.download-btn:hover{opacity:0.85;transform:translateY(-1px);box-shadow:var(--shadow-md)}.download-btn.secondary{background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);box-shadow:none}.download-btn.secondary:hover{background:var(--glass-bg-hover);border-color:var(--border-hover)}.cards-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:1.25rem}.project-card-link{display:block;transition:opacity 0.3s ease, transform 0.3s ease}.project-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);overflow:hidden;transition:border-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;box-shadow:var(--card-shadow);height:100%}.project-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.project-image{height:130px;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center;font-size:3rem;border-bottom:1px solid var(--border)}.project-content{padding:1.25rem}.project-title{font-size:1.05rem;font-weight:600;margin-bottom:0.5rem}.project-description{color:var(--text-muted);font-size:var(--text-sm);margin-bottom:1rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.project-tags{display:flex;flex-wrap:wrap;gap:0.4rem}.tag{background:var(--accent-bg);color:var(--accent);padding:0.2rem 0.6rem;border-radius:6px;font-size:var(--text-xs);font-weight:500;border:1px solid var(--border)}.project-card.featured{border-color:var(--border-hover);box-shadow:var(--shadow-sm),var(--card-shadow)}.project-categories{display:flex;flex-wrap:wrap;gap:0.35rem;margin-bottom:0.5rem}.project-category{font-size:var(--text-xs);background:var(--accent-bg);padding:0.15rem 0.5rem;border-radius:4px;font-weight:500;color:var(--accent)}.project-view-more{display:inline-flex;align-items:center;gap:0.25rem;margin-top:1rem;font-size:var(--text-sm);font-weight:500;color:var(--accent)}.project-card-link.filter-hidden{opacity:0;transform:scale(0.95);position:absolute;pointer-events:none;width:0;height:0;overflow:hidden;margin:0;padding:0}.project-card-link.filter-visible{animation:filterIn 0.35s ease forwards}@keyframes filterIn{from{opacity:0;transform:translateY(10px) scale(0.97)}to{opacity:1;transform:translateY(0) scale(1)}}.project-info-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));gap:1rem;margin:1.5rem 0}.project-info-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;text-align:center}.project-info-card .info-value{font-size:var(--text-2xl);font-weight:700;display:block;margin-bottom:0.25rem;color:var(--accent)}.project-info-card .info-label{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:0.05em;font-weight:500}.skills-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:1.5rem}.skill-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);padding:1.75rem;transition:border-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease}.skill-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.skill-card-header{display:flex;align-items:center;gap:0.75rem;margin-bottom:1.25rem}.skill-icon{width:42px;height:42px;border-radius:10px;background:var(--bg-secondary);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:1.3rem;flex-shrink:0}.skill-card-header h3{font-size:1.05rem;font-weight:600;margin:0}.skill-card-header p{font-size:var(--text-xs);color:var(--text-muted);margin:0.15rem 0 0}.skill-tags{display:flex;flex-wrap:wrap;gap:0.5rem}.skill-tag{display:inline-flex;align-items:center;background:var(--bg-secondary);border:1px solid var(--border);padding:0.35rem 0.7rem;border-radius:6px;font-size:var(--text-sm);color:var(--text-muted);transition:border-color 0.2s, background 0.2s, color 0.2s}.skill-tag:hover{border-color:var(--border-hover);background:var(--bg-elevated);color:var(--text)}.skill-tag--expert::after,.skill-tag--mid::after,.skill-tag--beginner::after{margin-left:0.4rem;font-size:0.55rem;letter-spacing:1px}.skill-tag--expert::after{content:"●●●";color:var(--accent);opacity:0.7}.skill-tag--mid::after{content:"●●○";color:var(--text-muted);opacity:0.9}.skill-tag--beginner::after{content:"●○○";color:var(--text-subtle);opacity:0.9}.skills-legend{display:flex;justify-content:center;gap:1.5rem;margin-top:2rem;font-size:var(--text-xs);color:var(--text-muted)}.skills-legend-item{display:flex;align-items:center;gap:0.35rem}.skills-legend-dots{font-size:0.55rem;letter-spacing:1px}@media (max-width: 1024px){.skills-grid{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 768px){.skills-grid{grid-template-columns:1fr}.skills-legend{gap:1rem}}.timeline{border-left:2px solid var(--glass-border);padding-left:1.75rem;margin-left:0.25rem;position:relative}.timeline::before{content:'';position:absolute;left:-1px;top:0;bottom:0;width:2px;background:var(--gradient);opacity:0.5;border-radius:2px}.timeline-item{position:relative;padding-bottom:2rem}.timeline-item:last-child{padding-bottom:0}.timeline-item::before{content:'';position:absolute;left:-1.75rem;top:0.4rem;width:12px;height:12px;background:var(--gradient);border-radius:50%;transform:translateX(calc(-50% - 1px));box-shadow:0 0 8px rgba(129,140,248,0.5)}.timeline-badge{display:inline-block;background:var(--gradient);color:#fff;font-size:var(--text-xs);font-weight:600;padding:0.15rem 0.55rem;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:0.35rem}.timeline-date{display:block;font-size:var(--text-xs);font-weight:600;margin-bottom:0.3rem;letter-spacing:0.02em;background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;width:fit-content}.timeline-title{font-weight:600;font-size:1.05rem;margin-bottom:0.2rem}.timeline-company{color:var(--text-muted);font-size:0.9rem;margin-bottom:0.4rem}.timeline-desc{color:var(--text-muted);font-size:var(--text-sm);line-height:1.6;margin-top:0.35rem;opacity:0.85}.parcours-filters{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-bottom:var(--space-4);justify-content:center}.parcours-timeline{max-width:700px;margin:0 auto}.parcours-year{font-size:var(--text-2xl);font-weight:800;margin:var(--space-4) 0 var(--space-2);padding-bottom:var(--space-1);color:var(--text);width:fit-content;border-bottom:none}.parcours-year:first-child{margin-top:0}.parcours-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-left:3px solid var(--glass-border);border-radius:var(--radius-xl);padding:1.25rem;margin-bottom:var(--space-2);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));transition:border-color var(--transition),box-shadow var(--transition),transform var(--transition)}.parcours-card:hover{box-shadow:var(--shadow-md);transform:translateX(4px)}:root{--parcours-formation:  #2563eb;--parcours-projet:     #16a34a;--parcours-experience: #d97706}[data-theme="dark"]{--parcours-formation:  #60a5fa;--parcours-projet:     #4ade80;--parcours-experience: #fbbf24}.parcours-card[data-type="formation"]{border-left-color:var(--parcours-formation)}.parcours-card[data-type="formation"]:hover{box-shadow:0 0 20px rgba(37,99,235,0.1),var(--shadow-md)}.parcours-card[data-type="projet"]{border-left-color:var(--parcours-projet)}.parcours-card[data-type="projet"]:hover{box-shadow:0 0 20px rgba(22,163,74,0.1),var(--shadow-md)}.parcours-card[data-type="experience"]{border-left-color:var(--parcours-experience)}.parcours-card[data-type="experience"]:hover{box-shadow:0 0 20px rgba(217,119,6,0.1),var(--shadow-md)}.parcours-card--current{box-shadow:var(--card-shadow)}.parcours-card-header{display:flex;align-items:center;gap:0.5rem;margin-bottom:0.5rem;flex-wrap:wrap}.parcours-tag{font-size:var(--text-xs);font-weight:600;padding:0.2rem 0.6rem;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:0.03em}.parcours-tag--formation{background:rgba(37,99,235,0.09);color:var(--parcours-formation);border:1px solid rgba(37,99,235,0.2)}.parcours-tag--projet{background:rgba(22,163,74,0.09);color:var(--parcours-projet);border:1px solid rgba(22,163,74,0.2)}.parcours-tag--experience{background:rgba(217,119,6,0.09);color:var(--parcours-experience);border:1px solid rgba(217,119,6,0.2)}.parcours-badge-current{font-size:0.65rem;font-weight:600;padding:0.15rem 0.5rem;border-radius:var(--radius-full);background:var(--gradient);color:#fff;text-transform:uppercase;letter-spacing:0.03em}.parcours-date{font-size:var(--text-xs);color:var(--text-muted);margin-left:auto}.parcours-title{font-weight:600;font-size:1.05rem;margin-bottom:0.15rem}.parcours-subtitle{color:var(--text-muted);font-size:var(--text-sm);margin-bottom:0.35rem}.parcours-desc{color:var(--text-muted);font-size:var(--text-sm);line-height:1.6;opacity:0.85}.parcours-link{display:inline-block;margin-top:0.5rem;font-size:var(--text-sm);font-weight:500;color:var(--accent);text-decoration:none;transition:opacity var(--transition)}.parcours-link:hover{opacity:0.7;text-decoration:underline}.parcours-link-group{display:flex;flex-wrap:wrap;gap:0.4rem 1rem;margin-top:0.5rem}@media (max-width: 600px){.parcours-date{margin-left:0;width:100%}}.content-section{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);padding:2rem;margin-bottom:1.5rem}.content-section-title{font-size:var(--text-lg);font-weight:600;margin-bottom:1rem}.article-header{padding:8rem 2rem 2rem;max-width:750px;margin:0 auto}.back-link{display:inline-flex;align-items:center;gap:0.25rem;font-size:0.9rem;margin-bottom:1.5rem;font-weight:500;color:var(--accent)}.back-link:hover{text-decoration:underline}.article-meta{display:flex;gap:1rem;margin-bottom:1rem;font-size:var(--text-sm);color:var(--text-muted);flex-wrap:wrap}.article-title{font-size:2rem;font-weight:700;margin-bottom:0.75rem;line-height:1.3}.article-subtitle{color:var(--text-muted);font-size:1.05rem;margin-bottom:1.5rem}.article-tags{display:flex;gap:0.5rem;flex-wrap:wrap}.article-content{max-width:750px;margin:0 auto;padding:2rem}.article-body{font-size:1rem;line-height:1.8}.article-body h2{font-size:1.35rem;font-weight:700;margin-top:2.5rem;margin-bottom:1rem;padding-bottom:0.5rem;border-bottom:1px solid var(--border)}.article-body h3{font-size:1.1rem;font-weight:600;margin-top:1.75rem;margin-bottom:0.75rem}.article-body p{margin-bottom:1rem;color:var(--text-muted)}.article-body ul,.article-body ol{margin-bottom:1rem;padding-left:1.5rem;color:var(--text-muted)}.article-body li{margin-bottom:0.5rem}.article-body strong{color:var(--text);font-weight:600}.article-body pre{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:1.25rem;overflow-x:auto;margin-bottom:1.5rem;font-size:var(--text-sm)}.article-body code{font-family:'JetBrains Mono', 'Monaco', 'Consolas', monospace;font-size:0.9em}.article-body p code,.article-body li code{background:var(--accent-bg);color:var(--accent);padding:0.15rem 0.4rem;border-radius:4px;font-size:0.85em}.article-body .table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:1.5rem;border:1px solid var(--border);border-radius:var(--radius-md)}.article-body table{width:100%;border-collapse:collapse;font-size:0.9rem;border:none;min-width:500px}.article-body th{background:var(--bg-secondary);font-weight:600;text-align:left;padding:0.65rem 1rem;border-bottom:1px solid var(--border);color:var(--text)}.article-body td{padding:0.6rem 1rem;border-bottom:1px solid var(--border);color:var(--text-muted)}.article-body tr:last-child td{border-bottom:none}.article-body blockquote{border-left:3px solid var(--accent);padding:0.75rem 1.25rem;margin:1.25rem 0;background:var(--accent-bg);border-radius:0 8px 8px 0;color:var(--text-muted)}.article-body a:not([class]){color:var(--accent);text-decoration:underline;text-underline-offset:2px}.article-body a:not([class]):hover{color:var(--accent-light)}.article-author{display:flex;align-items:center;gap:1rem;padding:1.5rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);margin-top:3rem}.author-avatar{width:48px;height:48px;border-radius:50%;background:var(--accent-bg);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--accent)}.author-info h4{font-weight:600;margin-bottom:0.25rem}.author-info p{color:var(--text-muted);font-size:0.9rem;margin:0}.article-nav{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border)}.article-nav-link{display:block;padding:1rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--transition),box-shadow var(--transition)}.article-nav-link:hover{border-color:var(--border-hover);box-shadow:var(--shadow-sm)}.nav-label{font-size:var(--text-sm);color:var(--text-muted)}.nav-title{font-weight:500}.contact-layout{display:grid;grid-template-columns:340px 1fr;gap:2.5rem;align-items:start}.contact-block-title{font-size:0.8rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--text-muted);margin-bottom:1rem}.contact-sidebar{display:flex;flex-direction:column;gap:1.5rem}.contact-info-block,.contact-socials-block-inner{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);padding:1.5rem}.contact-info-list{display:flex;flex-direction:column;gap:1rem}.contact-info-row{display:flex;align-items:flex-start;gap:0.75rem}.contact-info-icon{font-size:1.1rem;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;flex-shrink:0}.contact-info-label{display:block;font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted);margin-bottom:0.1rem}.contact-info-value{display:block;font-size:0.9rem;color:var(--text)}.contact-socials-list{display:flex;flex-direction:column;gap:0.5rem}.contact-social-row{display:flex;align-items:center;gap:0.75rem;padding:0.65rem 0.75rem;border-radius:var(--radius-md);border:1px solid transparent;transition:background var(--transition),border-color var(--transition);text-decoration:none;color:inherit}.contact-social-row:hover{background:var(--bg-secondary);border-color:var(--border)}.contact-social-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;flex-shrink:0}.contact-social-icon svg{width:15px;height:15px;fill:var(--text-muted)}.contact-social-info{display:flex;flex-direction:column;flex:1;gap:0}.contact-social-name{font-weight:600;font-size:0.875rem;line-height:1.3}.contact-social-handle{font-size:var(--text-xs);color:var(--text-muted)}.contact-social-arrow{color:var(--text-subtle);font-size:0.9rem;transition:transform var(--transition)}.contact-social-row:hover .contact-social-arrow{transform:translateX(3px);color:var(--text-muted)}.contact-form-block{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);padding:2rem}.contact-form-desc{color:var(--text-muted);font-size:0.9rem;margin-bottom:1.75rem;line-height:1.6}.contact-form{display:flex;flex-direction:column;gap:0}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:0.875rem;font-weight:500;margin-bottom:0.4rem;color:var(--text)}.form-required{color:#e11d48}.form-group input,.form-group textarea{width:100%;padding:0.7rem 0.9rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);color:var(--text);font-family:inherit;font-size:0.95rem;transition:border-color var(--transition),box-shadow var(--transition)}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--text-subtle)}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.form-group textarea{resize:vertical;min-height:140px;line-height:1.6}.contact-submit{width:100%;justify-content:center;gap:0.6rem;margin-top:0.5rem;padding:0.85rem 1.5rem;font-size:1rem}.contact-submit-arrow{transition:transform var(--transition)}.contact-submit:hover .contact-submit-arrow{transform:translateX(4px)}@media (max-width: 900px){.contact-layout{grid-template-columns:1fr}.contact-sidebar{display:grid;grid-template-columns:1fr 1fr}}@media (max-width: 600px){.contact-sidebar{grid-template-columns:1fr}.form-row{grid-template-columns:1fr}}.cv-container{max-width:850px;margin:0 auto;padding:6rem 2rem 3rem}.cv-actions{display:flex;gap:1rem;justify-content:center;margin-bottom:2rem}.cv-document{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-lg)}.cv-header{background:var(--accent);color:#fff;padding:2rem 2.5rem 1.75rem;position:relative;display:flex;align-items:flex-start;gap:1.5rem}.cv-header::after{content:'';position:absolute;bottom:0;left:2.5rem;right:2.5rem;height:1px;background:rgba(255,255,255,0.15)}[data-theme="dark"] .cv-header{background:#1a3c55;color:#e5e5e5}[data-theme="dark"] .cv-header::after{background:rgba(0,0,0,0.1)}.cv-header-photo{flex-shrink:0}.cv-header-photo img{width:90px;height:90px;border-radius:50%;object-fit:cover;object-position:center top;border:2px solid rgba(255,255,255,0.3);display:block}[data-theme="dark"] .cv-header-photo img{border-color:rgba(255,255,255,0.15)}.cv-header-content{flex:1;margin-bottom:0.75rem}.cv-profile{padding:1.25rem 2.5rem;background:color-mix(in srgb, var(--accent) 4%, transparent);border-bottom:1px solid var(--border);font-size:0.9rem;line-height:1.65;color:var(--text);font-style:italic}.cv-name{font-size:1.75rem;font-weight:700;margin-bottom:0.3rem;letter-spacing:-0.01em}.cv-title{opacity:0.95;margin-bottom:0.2rem;font-size:1.05rem}.cv-tagline{opacity:0.7;font-size:0.9rem;font-style:italic}.cv-contact{display:flex;flex-wrap:wrap;gap:1.25rem;margin-top:1rem}.cv-contact-item{font-size:var(--text-sm);opacity:0.9;display:inline-flex;align-items:center;gap:0.4rem}.cv-contact-item a{color:inherit;text-decoration:underline;text-underline-offset:2px}.cv-contact-item svg{flex-shrink:0;opacity:0.8}.cv-body{display:grid;grid-template-columns:1fr 260px}.cv-main{padding:2rem 2.5rem;border-right:1px solid var(--border)}.cv-sidebar{padding:2rem 1.5rem;background:var(--bg-secondary)}.cv-section{margin-bottom:2rem}.cv-section:last-child{margin-bottom:0}.cv-section-title{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:0.1em;margin-bottom:1rem;padding-bottom:0.5rem;border-bottom:2px solid var(--accent);color:var(--accent)}.cv-experience{margin-bottom:1.75rem;position:relative}.cv-experience:last-child{margin-bottom:0}.cv-experience-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:0.4rem}.cv-experience-title{font-weight:600;font-size:0.95rem}.cv-experience-company{color:var(--text-muted);font-size:var(--text-sm)}.cv-experience-date{color:var(--accent);font-size:var(--text-xs);font-weight:600;white-space:nowrap;background:color-mix(in srgb, var(--accent) 8%, transparent);padding:0.15rem 0.5rem;border-radius:4px;margin-top:0.15rem}.cv-experience-description{font-size:0.88rem;color:var(--text-muted);margin-bottom:0.4rem;font-style:italic}.cv-experience-list{list-style:none;padding:0}.cv-experience-list li{position:relative;padding-left:1rem;font-size:0.88rem;color:var(--text-muted);margin-bottom:0.3rem;line-height:1.45}.cv-experience-list li::before{content:'';position:absolute;left:0;top:0.55rem;width:4px;height:4px;border-radius:50%;background:var(--accent)}.cv-skills{display:flex;flex-wrap:wrap;gap:0.35rem}.cv-skill{background:var(--bg);padding:0.25rem 0.6rem;border-radius:6px;font-size:0.78rem;border:1px solid var(--border);transition:border-color var(--transition)}.cv-skill--strong{border-color:var(--accent);color:var(--accent);font-weight:600}.cv-skill-list{display:flex;flex-direction:column;gap:0}.cv-skill-item{display:flex;justify-content:space-between;align-items:center;font-size:0.82rem;padding:0.35rem 0;border-bottom:1px solid var(--border)}.cv-skill-item:last-child{border-bottom:none}.cv-skill-level{font-size:0.7rem;color:var(--text-muted);background:color-mix(in srgb, var(--accent) 8%, transparent);padding:0.1rem 0.4rem;border-radius:4px;font-weight:500;flex-shrink:0}.cv-lang{display:flex;flex-direction:column;gap:0.5rem}.cv-lang-item{display:flex;justify-content:space-between;align-items:center;padding:0.35rem 0;border-bottom:1px solid var(--border)}.cv-lang-item:last-child{border-bottom:none}.cv-lang-name{font-size:var(--text-sm);font-weight:500}.cv-lang-level{font-size:0.78rem;color:var(--text-muted);background:color-mix(in srgb, var(--accent) 8%, transparent);padding:0.15rem 0.5rem;border-radius:4px}.cv-interests{display:flex;flex-direction:column;gap:0.5rem}.cv-interest-item{display:flex;align-items:center;gap:0.5rem;font-size:var(--text-sm);color:var(--text-muted)}.cv-interest-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--accent);flex-shrink:0}@media print{.cv-actions,.navbar,.footer,.scroll-top{display:none !important}.cv-container{padding:0;max-width:100%}.cv-document{box-shadow:none;border:none}.cv-header{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media (max-width: 700px){.cv-body{grid-template-columns:1fr}.cv-main{border-right:none;border-bottom:1px solid var(--border);padding:1.5rem}.cv-sidebar{padding:1.5rem}.cv-header{padding:1.5rem;gap:1rem}.cv-header::after{left:1.5rem;right:1.5rem}.cv-header-photo img{width:65px;height:65px}.cv-profile{padding:1rem 1.5rem}.cv-experience-header{flex-direction:column;gap:0.25rem}}.cv-compact-container{max-width:210mm;margin:0 auto;padding:6rem 2rem 3rem}.cv-compact{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-lg);min-height:297mm;width:210mm;max-width:100%;display:flex;flex-direction:column}.cvc-header{display:grid;grid-template-columns:120px 1fr;grid-template-rows:auto auto;gap:0.5rem 1.25rem;padding:2rem 2rem 1.75rem;background:#1a5276;color:#fff;position:relative}.cvc-header::after{content:'';position:absolute;bottom:0;left:2rem;right:2rem;height:1px;background:rgba(255,255,255,0.15)}[data-theme="dark"] .cvc-header{background:#1a3c55;color:#e5e5e5}[data-theme="dark"] .cvc-header::after{background:rgba(0,0,0,0.1)}.cvc-photo{grid-row:span 2;align-self:center}.cvc-photo img{width:120px;height:120px;border-radius:50%;object-fit:cover;object-position:center top;border:2px solid rgba(255,255,255,0.25)}[data-theme="dark"] .cvc-photo img{border-color:rgba(0,0,0,0.15)}.cvc-identity{align-self:end}.cvc-name{font-size:2.1rem;font-weight:700;margin:0 0 0.2rem;letter-spacing:-0.01em}.cvc-title{font-size:1.15rem;opacity:0.95;margin:0}.cvc-contact{display:flex;flex-wrap:wrap;gap:0.4rem 1.1rem;font-size:0.93rem;opacity:0.9}.cvc-contact-item{display:flex;align-items:center;gap:0.4rem}.cvc-contact-item svg{opacity:0.8;flex-shrink:0;width:15px;height:15px}.cvc-body{display:grid;grid-template-columns:1fr 260px;flex:1}.cvc-main{padding:1rem 2rem;border-right:1px solid var(--border)}.cvc-sidebar{padding:1rem;background:var(--bg-secondary)}.cvc-profile{padding:1rem 2.5rem 0.5rem;font-size:0.88rem;line-height:1.65;color:var(--text)}.cvc-profile p{margin-bottom:0.6rem;text-align:justify}.cvc-profile p:last-child{margin-bottom:0}.cvc-section{margin-bottom:1.3rem}.cvc-section:last-child{margin-bottom:0}.cvc-section-title{font-size:0.75rem;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:#1a5276;margin-bottom:0.5rem;padding-bottom:0.3rem;border-bottom:2px solid #1a5276}[data-theme="dark"] .cvc-section-title{color:#5dade2;border-bottom-color:#5dade2}.cvc-item{margin-bottom:0.9rem}.cvc-item:last-child{margin-bottom:0}.cvc-item-header{display:flex;justify-content:space-between;align-items:flex-start;gap:0.5rem;margin-bottom:0.05rem}.cvc-item-title{font-weight:600;font-size:0.88rem;color:var(--text)}.cvc-item-date{font-size:0.72rem;color:#1a5276;font-weight:600;white-space:nowrap;background:color-mix(in srgb, #1a5276 8%, transparent);padding:0.08rem 0.4rem;border-radius:4px}[data-theme="dark"] .cvc-item-date{color:#5dade2;background:color-mix(in srgb, #5dade2 10%, transparent)}.cvc-item-sub{font-size:var(--text-xs);color:var(--text-muted);display:block}.cvc-skill-group{margin-bottom:1.1rem}.cvc-skill-group:last-child{margin-bottom:0}.cvc-skill-label{font-size:0.68rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.04em;display:block;margin-bottom:0.2rem}.cvc-skill-list{display:flex;flex-direction:column;gap:0.35rem}.cvc-skill-item{display:flex;justify-content:space-between;align-items:center;font-size:0.78rem;padding:0.3rem 0;border-bottom:1px solid var(--border)}.cvc-skill-item:last-child{border-bottom:none}.cvc-level{font-size:0.68rem;color:var(--text-muted);background:color-mix(in srgb, var(--accent) 8%, transparent);padding:0.08rem 0.35rem;border-radius:3px;font-weight:500}.cvc-interest-list{display:flex;flex-direction:column;gap:0.75rem}.cvc-interest-list .cvc-item{margin-bottom:0.3rem}@media (max-width: 700px){.cv-compact-container{padding:5rem 1rem 2rem}.cv-compact{width:100%;min-height:auto}.cvc-header{grid-template-columns:70px 1fr;padding:1.5rem}.cvc-header::after{left:1.5rem;right:1.5rem}.cvc-photo img{width:70px;height:70px}.cvc-name{font-size:1.3rem}.cvc-body{grid-template-columns:1fr}.cvc-main{border-right:none;border-bottom:1px solid var(--border);padding:1.25rem}.cvc-sidebar{padding:1.25rem}.cvc-item-header{flex-direction:column;gap:0.2rem}}@media print{@page{size:A4 portrait;margin:0}*{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}html,body{margin:0;padding:0;width:210mm;height:297mm;font-size:11pt;overflow:hidden}.cv-compact-container{padding:0;max-width:100%;width:210mm;height:297mm}.cv-actions,.navbar,.footer{display:none !important}.cv-compact{box-shadow:none;border:none;border-radius:0;width:210mm;height:297mm;display:flex;flex-direction:column}.cvc-header{background:#1a5276 !important;color:#fff !important;padding:2rem 2rem 1.75rem}.cvc-body{flex:1;display:grid;grid-template-columns:1fr 260px}.cvc-main{padding:1.3rem 2rem}.cvc-main .cvc-section{margin-bottom:1.4rem}.cvc-main .cvc-section:last-child{margin-bottom:0}.cvc-sidebar{background:var(--bg-secondary) !important;padding:1.3rem 1.2rem}.cvc-sidebar .cvc-section{margin-bottom:1.2rem}.cvc-sidebar .cvc-section:last-child{margin-bottom:0}.cvc-item{margin-bottom:0.7rem}.cvc-item-header{display:flex !important;flex-direction:row !important;justify-content:space-between !important;align-items:flex-start;gap:0.5rem}.cvc-item-title{flex:1;min-width:0}.cvc-item-date{flex-shrink:0;white-space:nowrap;margin-left:auto;color:#1a5276 !important}.cvc-section-title{color:#1a5276 !important;border-bottom-color:#1a5276 !important}.cvc-skill-group{margin-bottom:0.8rem}}.screenshot-gallery{display:flex;flex-wrap:wrap;gap:0.75rem;margin:1.5rem 0;justify-content:center;content-visibility:auto;contain-intrinsic-size:auto 400px}.screenshot-gallery p{margin:0;display:contents}.screenshot-gallery picture{display:block;line-height:0}.screenshot-gallery img{display:block;height:auto;border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--card-shadow)}.screenshot-gallery.phone-screens img{max-height:500px;width:auto;border-radius:var(--radius-xl);border:2px solid var(--border);box-shadow:var(--card-shadow)}.screenshot-gallery.photo-grid,.screenshot-gallery.photo-screens{display:grid;gap:0.75rem}.screenshot-gallery.photo-grid img,.screenshot-gallery.photo-screens img{width:100%;height:260px;object-fit:cover;object-position:center;border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--card-shadow)}.screenshot-gallery.photo-grid{grid-template-columns:repeat(2, 1fr)}.screenshot-gallery.photo-grid img{height:300px}.screenshot-gallery.photo-grid.cols-1{grid-template-columns:1fr;max-width:520px;margin-left:auto;margin-right:auto}.screenshot-gallery.photo-grid.cols-1 img{height:400px}.screenshot-gallery.photo-grid.cols-4 img{height:220px}.screenshot-gallery.photo-grid.tall img{height:400px}.screenshot-gallery.photo-screens{grid-template-columns:repeat(auto-fit, minmax(240px, 1fr))}.screenshot-gallery.photo-screens:has(picture:only-child) img,.screenshot-gallery.photo-screens:has(>img:only-child) img{height:auto;max-height:520px;object-fit:contain;background:var(--bg-secondary)}.screenshot-gallery.grid-2x2{display:grid;grid-template-columns:1fr 1fr;gap:0.75rem}.screenshot-gallery.grid-2x2 img{width:100%;height:auto;object-fit:contain;background:var(--bg-secondary);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--card-shadow)}@media (max-width: 768px){.screenshot-gallery.phone-screens img{max-height:400px}}@media (max-width: 600px){.screenshot-gallery.photo-screens{grid-template-columns:1fr}.screenshot-gallery.photo-screens img{height:230px}.screenshot-gallery.photo-screens:has(picture:only-child) img,.screenshot-gallery.photo-screens:has(>img:only-child) img{height:auto}.screenshot-gallery.photo-grid{grid-template-columns:1fr}.screenshot-gallery.photo-grid img{height:260px}.screenshot-gallery.photo-grid.cols-1 img{height:300px}.screenshot-gallery.photo-grid.cols-4 img{height:200px}.screenshot-gallery.photo-grid.tall img{height:320px}.screenshot-gallery.phone-screens img{max-height:350px}}.screenshot-gallery img,.article-body img{cursor:zoom-in}.pagination{display:flex;justify-content:center;align-items:center;gap:1.5rem;margin-top:3rem;padding-top:2rem;border-top:1px solid var(--border)}.pagination-link{padding:0.5rem 1rem;border-radius:var(--radius-md);font-size:0.9rem;font-weight:500;color:var(--accent);border:1px solid var(--border);transition:all var(--transition)}.pagination-link:hover{border-color:var(--accent);background:var(--accent-bg)}.pagination-link.disabled{color:var(--text-muted);opacity:0.4;pointer-events:none}.pagination-info{font-size:0.9rem;color:var(--text-muted)}.filter-bar{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:2.5rem;justify-content:center;padding:0.5rem;background:var(--bg-elevated);border-radius:14px;border:1px solid var(--border)}.filter-btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.55rem 1.1rem;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--text-muted);font-family:inherit;font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all 0.2s ease;position:relative}.filter-btn:hover{color:var(--text);background:var(--bg-secondary);border-color:var(--border)}.filter-btn.active{background:var(--accent);color:var(--bg);border-color:transparent;box-shadow:var(--shadow-sm)}.filter-label{white-space:nowrap}.filter-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;font-size:var(--text-xs);font-weight:600;background:var(--bg-secondary);color:var(--text-muted);transition:all 0.2s ease}.filter-btn.active .filter-count{background:rgba(255,255,255,0.2);color:var(--bg)}.filter-btn:hover .filter-count{background:var(--bg-elevated);color:var(--accent)}.filter-btn.active:hover .filter-count{background:rgba(255,255,255,0.2);color:var(--bg)}@media (max-width: 768px){.filter-bar{gap:0.35rem;padding:0.35rem}.filter-btn{padding:0.45rem 0.85rem;font-size:var(--text-xs)}}.lightbox-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.92);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity 0.3s ease, visibility 0.3s ease;touch-action:none}.lightbox-overlay.active{opacity:1;visibility:visible}.lightbox-overlay img{border-radius:4px;transform-origin:center center;will-change:transform;user-select:none;-webkit-user-select:none;touch-action:none;image-rendering:high-quality}.lightbox-close{position:fixed;top:16px;right:16px;z-index:var(--z-modal-content);background:rgba(255,255,255,0.15);border:none;color:#fff;width:40px;height:40px;border-radius:50%;font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background 0.2s ease;line-height:1}.lightbox-close:hover{background:rgba(255,255,255,0.3)}.lightbox-nav{position:fixed;top:50%;transform:translateY(-50%);z-index:var(--z-modal-content);background:rgba(255,255,255,0.15);border:none;color:#fff;width:44px;height:44px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background 0.2s ease}.lightbox-nav:hover{background:rgba(255,255,255,0.3)}.lightbox-prev{left:16px}.lightbox-next{right:16px}.lightbox-counter{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:var(--z-modal-content);color:rgba(255,255,255,0.7);font-size:var(--text-sm);font-weight:500;background:rgba(0,0,0,0.4);padding:0.3rem 0.75rem;border-radius:var(--radius-full)}.stack-grid{display:grid;grid-template-columns:repeat(8, 1fr);gap:1rem;justify-items:center}.stack-item{display:flex;flex-direction:column;align-items:center;gap:0.4rem}.stack-badge{width:40px;height:40px;border-radius:10px;background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-muted);display:flex;align-items:center;justify-content:center;transition:color var(--transition),border-color var(--transition),background var(--transition)}.stack-badge:hover{color:var(--accent);border-color:var(--border-hover);background:var(--bg-secondary)}.stack-badge svg{width:18px;height:18px;fill:currentColor}.stack-name{font-size:0.68rem;font-weight:500;color:var(--text-subtle);text-align:center;white-space:nowrap}@media (max-width: 1024px){.stack-grid{grid-template-columns:repeat(4, 1fr);gap:1.25rem}}@media (max-width: 480px){.stack-grid{grid-template-columns:repeat(4, 1fr)}}.lettre-container{max-width:210mm;margin:0 auto;padding:6rem 2rem 3rem}.lettre-document{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:2.2rem 3rem 2.5rem;min-height:297mm;box-sizing:border-box}.lettre-header{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:1.5rem;font-size:0.88rem;line-height:1.6;color:var(--text)}.lettre-sender{line-height:1.6;align-self:start}.lettre-sender-name{font-weight:700;font-size:1rem;margin-bottom:0.1rem}.lettre-recipient{line-height:1.6;font-size:0.95rem;justify-self:end;align-self:end;text-align:right;margin-top:2.5rem}.lettre-recipient-name{font-weight:700;font-size:1.35rem;margin-bottom:0.15rem}.lettre-meta{margin-bottom:1.5rem;font-size:0.88rem}.lettre-date{font-size:0.85rem;color:var(--text-muted);text-align:right;margin:-0.6rem 0 0.5rem}.lettre-meta-left{display:flex;flex-direction:column;gap:0.3rem}.lettre-objet{font-size:0.88rem;margin:0;line-height:1.4;white-space:nowrap}.lettre-dispos{font-size:0.85rem;color:var(--text-muted)}.lettre-body{font-size:0.9rem;line-height:1.65;color:var(--text)}.lettre-civility{margin-bottom:1rem;font-size:0.9rem}.lettre-paragraphs p{text-align:justify;text-indent:1.5em;margin-bottom:0.9rem;hyphens:auto;font-size:0.95rem}.lettre-signature{margin-top:1.5rem;display:inline-block}.lettre-sig-name{font-weight:600;font-size:0.78rem;margin-bottom:0.15rem}.lettre-sig-img{display:block;width:120px;height:auto;filter:invert(1);mix-blend-mode:multiply;opacity:0.85}[data-theme="dark"] .lettre-sig-img{filter:none;mix-blend-mode:normal;opacity:0.75}.lettre-actions{display:flex;gap:1rem;justify-content:center;margin-bottom:2rem}@media print{@page{size:A4 portrait;margin:0}*{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}html,body{margin:0;padding:0;width:210mm;height:297mm}.lettre-container{padding:0;max-width:100%;width:210mm;height:297mm}.lettre-actions,.navbar,.footer{display:none !important}.lettre-document{box-shadow:none;border:none;border-radius:0;width:210mm;min-height:297mm;padding:2.2rem 3rem 2.5rem}.lettre-sig-img{filter:invert(1) !important;mix-blend-mode:multiply !important;width:80px}}@media (max-width: 700px){.lettre-container{padding:5rem 1rem 2rem}.lettre-document{padding:2rem 1.5rem;min-height:auto}.lettre-header{grid-template-columns:1fr;gap:1.5rem}.lettre-meta{grid-template-columns:1fr}.lettre-recipient{justify-self:start;text-align:left}.lettre-meta-right{text-align:left}}.exp-container{max-width:210mm;margin:0 auto;padding:6rem 2rem 3rem}.exp-document{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:2.2rem 3rem 2.5rem;min-height:297mm;box-sizing:border-box}.exp-header{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem;align-items:start;padding-bottom:1.2rem;border-bottom:2px solid var(--text);margin-bottom:1.2rem;font-size:0.88rem;line-height:1.5}.exp-header-left{text-align:left}.exp-student-name{font-weight:700;font-size:0.95rem;margin-bottom:0.1rem}.exp-student-group{color:var(--text-muted);font-size:0.82rem;margin:0}.exp-header-center{text-align:center}.exp-doc-title{font-weight:700;font-size:1rem;margin:0;text-transform:uppercase;letter-spacing:0.04em}.exp-header-right{text-align:right}.exp-company{font-weight:700;font-size:0.95rem;margin:0;color:var(--text-muted)}.exp-subtitle{margin-bottom:1.5rem;text-align:center}.exp-exp-title{font-weight:700;font-size:1.1rem;margin:0 0 0.2rem;color:var(--text)}.exp-periode{font-size:0.85rem;color:var(--text-muted);margin:0}.exp-body{font-size:0.92rem;line-height:1.7;color:var(--text)}.exp-body p{text-align:justify;text-indent:1.5em;margin-bottom:1rem;hyphens:auto}.exp-body strong{font-weight:700}.exp-actions{display:flex;gap:1rem;justify-content:center;margin-bottom:2rem}@media print{@page{size:A4 portrait;margin:0}@page :first{margin:0}*{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}html,body{margin:0;padding:0;width:210mm;height:auto !important;overflow:visible !important}.exp-container{padding:0;max-width:100%;width:210mm}.exp-actions,.navbar,.footer{display:none !important}.exp-document{box-shadow:none;border:none;border-radius:0;width:210mm;min-height:297mm;height:auto !important;padding:2.2rem 3rem 2.5rem}.exp-body p{page-break-inside:avoid}.page-break{height:0 !important;margin:0 !important;padding:0 !important;border:none !important;display:block;page-break-before:always;break-before:page}}@media (max-width: 700px){.exp-container{padding:5rem 1rem 2rem}.exp-document{padding:2rem 1.5rem;min-height:auto}.exp-header{grid-template-columns:1fr;gap:0.5rem}.exp-header-center,.exp-header-right{text-align:left}}@view-transition{navigation:auto}::view-transition-old(root){animation:vtFadeOut 0.18s ease forwards}::view-transition-new(root){animation:vtFadeIn 0.22s ease forwards}@keyframes vtFadeOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}@keyframes vtFadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes orbFloat{0%,100%{transform:translate(0, 0) scale(1)}33%{transform:translate(30px, -40px) scale(1.05)}66%{transform:translate(-20px, 20px) scale(0.97)}}.section-title .word{display:inline-block;opacity:0;transform:translateY(12px);transition:opacity 0.35s ease, transform 0.35s ease}.section-title.words-revealed .word{opacity:1;transform:translateY(0)}.page-header h1.words-revealed .word{opacity:1;transform:translateY(0)}.page-header h1 .word{display:inline-block;opacity:0;transform:translateY(12px);transition:opacity 0.4s ease, transform 0.4s ease}.filter-btn{transform:scale(1)}.filter-btn:active{transform:scale(0.95)}.filter-btn.active{transform:scale(1)}@media (prefers-reduced-motion: reduce){::view-transition-old(root),::view-transition-new(root){animation:none}.section-title .word,.page-header h1 .word{opacity:1;transform:none;transition:none}.orb{animation:none}}.skip-link{position:absolute;top:-100%;left:1rem;background:var(--accent);color:var(--bg);padding:0.75rem 1.5rem;border-radius:0 0 var(--radius-md) var(--radius-md);z-index:var(--z-dropdown);font-weight:500;font-size:0.9rem;transition:top 0.2s ease}.skip-link:focus{top:0}.fade-in{opacity:0;transform:translateY(10px);transition:opacity 0.3s ease, transform 0.3s ease}.fade-in.visible{opacity:1;transform:translateY(0)}.scroll-top{position:fixed;bottom:24px;right:24px;width:40px;height:40px;background:var(--accent);color:var(--bg);border:none;border-radius:var(--radius-md);cursor:pointer;opacity:0;visibility:hidden;transition:opacity var(--transition),visibility var(--transition),box-shadow var(--transition);font-size:1rem;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md)}.scroll-top:hover{opacity:0.85;box-shadow:var(--shadow-lg)}.scroll-top.visible{opacity:1;visibility:visible}.text-center{text-align:center}.text-muted{color:var(--text-muted)}@media print{.navbar,.footer,.cv-actions{display:none}.cv-container{padding:0}.cv-document{border:none}}@media (max-width: 1024px){.cards-grid{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 768px){.cards-grid{grid-template-columns:1fr}.nav-links{display:none;position:absolute;top:100%;left:0;right:0;background:var(--bg);flex-direction:column;padding:1rem;gap:0.25rem;border-bottom:1px solid var(--border)}.nav-links.active{display:flex}.mobile-menu-btn{display:block}.hero-content{flex-direction:column-reverse;text-align:center;gap:2rem}.hero-text{text-align:center}.hero-greeting{margin:0 auto 1rem}.hero-buttons{flex-direction:column;align-items:center}.hero-image img{width:160px;height:160px}.about-grid{grid-template-columns:1fr;text-align:center}.profile-card{margin-bottom:1rem;position:static}.contact-grid,.contact-socials-grid{grid-template-columns:1fr}.footer-content{flex-direction:column;text-align:center}.page-header h1{font-size:1.75rem}}
