:root{--bg:#07060f;--bg2:#0e0b1f;--ink:#ecebff;--muted:#a7a3c9;--cyan:#2ff3ff;--pink:#ff2bd6;--violet:#8b5cff;--lime:#b6ff3b;--glass:#100c24c7;--line:#8b5cff59;--radius:16px;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}body{background:var(--bg);background-image:radial-gradient(1200px 600px at 80% -10%, #ff2bd629, transparent 60%), radial-gradient(900px 600px at -10% 20%, #2ff3ff1f, transparent 60%), linear-gradient(180deg, var(--bg), var(--bg2));color:var(--ink);font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0}a{color:var(--cyan)}strong{color:#fff}.skip{z-index:100;background:var(--cyan);color:#000;border-radius:8px;padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:6px}.topbar{z-index:30;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);background:#07060fb8;justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;display:flex;position:sticky;top:0}.brand{font:700 15px/1 var(--mono);letter-spacing:.18em;color:#fff;white-space:nowrap;align-items:center;gap:8px;text-decoration:none;display:flex}.brand .sep{color:var(--pink)}.brand-dot{background:var(--lime);width:9px;height:9px;box-shadow:0 0 10px var(--lime);border-radius:50%}.nav{flex-wrap:wrap;gap:4px;display:flex}.nav a{color:var(--muted);font:500 13px/1 var(--mono);letter-spacing:.04em;border-radius:8px;padding:8px 10px;text-decoration:none}.nav a:hover,.nav a.active{color:#fff;background:#8b5cff2e}.top-actions{align-items:center;gap:8px;display:flex}.mode-toggle{color:var(--muted);border:1px solid var(--line);font:500 12px/1 var(--mono);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;padding:8px 12px}.mode-toggle:hover{color:#fff;border-color:var(--cyan)}.btn{background:linear-gradient(90deg, var(--pink), var(--violet));color:#fff;font:700 15px/1 var(--sans);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:8px;padding:13px 20px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 0 24px #ff2bd659}.btn:hover{transform:translateY(-1px);box-shadow:0 0 34px #ff2bd699}.btn-ghost{border:1px solid var(--cyan);color:var(--cyan);box-shadow:none;background:0 0}.btn-ghost:hover{box-shadow:0 0 22px #2ff3ff59}.btn-small{white-space:nowrap;padding:9px 14px;font-size:13px}.intro{max-width:1080px;margin:0 auto;padding:72px 20px 40px}.kicker{font:600 12px/1.4 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--cyan);margin:0 0 14px}h1{font:800 clamp(44px, 9vw, 104px)/.95 var(--sans);letter-spacing:-.02em;margin:0 0 18px}.glitch{color:#fff;text-shadow:0 0 18px #2ff3ff80,0 0 42px #ff2bd659;display:inline-block;position:relative}.glitch:before,.glitch:after{content:attr(data-text);opacity:.7;pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.glitch:before{color:var(--pink);clip-path:inset(0 0 60%);animation:4s step-end infinite gl;transform:translate(2px)}.glitch:after{color:var(--cyan);clip-path:inset(55% 0 0);animation:5s step-end infinite reverse gl;transform:translate(-2px)}@keyframes gl{0%,92%,to{transform:translate(0)}94%{transform:translate(3px,-1px)}96%{transform:translate(-3px,1px)}}.lead{color:var(--muted);max-width:680px;margin:0 0 28px;font-size:clamp(17px,2.1vw,21px)}.cta-row{flex-wrap:wrap;gap:12px;display:flex}.hint{color:var(--muted);font:13px/1.5 var(--mono);margin-top:22px}.panels{gap:22px;max-width:1080px;margin:0 auto;padding:0 20px 40px;display:grid}.panel{background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(20px,3.5vw,36px);scroll-margin-top:80px;box-shadow:inset 0 0 0 1px #ffffff05,0 20px 60px #00000059}.panel-star{border-color:#ff2bd68c;box-shadow:0 0 40px #ff2bd61f}.tag{font:600 12px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--pink);margin:0 0 8px}.panel h2{font:750 clamp(24px, 3.4vw, 34px)/1.15 var(--sans);margin:0 0 18px}.psr{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:0 0 18px;display:grid}.psr div{border-left:2px solid var(--violet);padding-left:14px}.psr div:nth-child(2){border-color:var(--cyan)}.psr div:nth-child(3){border-color:var(--lime)}.psr dt{font:700 12px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#fff;margin-bottom:4px}.psr dd{color:var(--muted);margin:0}.chips{flex-wrap:wrap;gap:8px;margin:0 0 20px;padding:0;list-style:none;display:flex}.chips li{font:500 12px/1 var(--mono);border:1px solid var(--line);color:#d9d4ff;background:#8b5cff14;border-radius:999px;padding:7px 10px}.offer{background:linear-gradient(120deg,#ff2bd61f,#2ff3ff14);border:1px solid #ff2bd64d;border-radius:12px;margin-top:6px;padding:18px}.offer p{margin:0 0 14px}.skills{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.skills div{border:1px solid var(--line);background:#2ff3ff0a;border-radius:12px;padding:16px}.skills h3{font:700 14px/1.3 var(--mono);color:var(--cyan);letter-spacing:.06em;margin:0 0 6px}.skills p{color:var(--muted);margin:0;font-size:14px}.offers{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-bottom:20px;display:grid}.offer-card{color:var(--muted);background:#2ff3ff0d;border:1px solid #2ff3ff59;border-radius:14px;flex-direction:column;gap:8px;padding:20px;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.offer-card:hover{border-color:var(--cyan);transform:translateY(-2px);box-shadow:0 0 28px #2ff3ff40}.offer-card strong{font-size:18px;line-height:1.25}.o-k{font:600 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--lime)}.o-go{color:var(--cyan);margin-top:auto;font-weight:700}.mail-line{flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 12px;display:flex}.mail{font:700 clamp(18px, 3vw, 24px)/1.2 var(--mono);color:#fff;border-bottom:2px solid var(--pink);word-break:break-all;text-decoration:none}.copy{border:1px solid var(--line);color:var(--muted);font:12px/1 var(--mono);cursor:pointer;background:0 0;border-radius:999px;padding:7px 12px}.copy:hover{color:#fff;border-color:var(--cyan)}.socials{font-family:var(--mono);flex-wrap:wrap;gap:16px;margin:0;padding:0;list-style:none;display:flex}.foot{text-align:center;color:var(--muted);font:12px/1.6 var(--mono);padding:30px 20px 40px}.scene,.loader,.hover-label,.panel-close,.only-3d{display:none}.mode-3d body{background:#05040b;height:100dvh;overflow:hidden}.mode-3d .scene{z-index:0;display:block;position:fixed;top:0;bottom:0;left:0;right:0}.mode-3d .scene canvas{cursor:default;width:100%;height:100%;display:block}.mode-3d .topbar{-webkit-backdrop-filter:none;background:linear-gradient(#05040bd9,#05040b00);border-bottom:0;position:fixed;left:0;right:0}.mode-3d .only-3d{display:block}.mode-3d .intro{z-index:10;pointer-events:none;max-width:620px;margin:0;padding:0 28px 34px;transition:opacity .4s,transform .4s;position:fixed;bottom:0;left:0}.mode-3d .intro a,.mode-3d .intro button{pointer-events:auto}.mode-3d .intro h1{margin-bottom:12px;font-size:clamp(34px,4.6vw,62px)}.mode-3d .intro .lead{text-shadow:0 2px 12px #000,0 0 2px #000;color:#d8d4f5;max-width:520px;margin-bottom:20px;font-size:16px}.mode-3d .intro:before{content:"";z-index:-1;background:radial-gradient(at 20% 80%,#05040bd9,#05040b00 70%);position:absolute;top:-60px;bottom:0;left:0;right:-80px}.mode-3d.panel-open .intro{opacity:0;transform:translateY(20px)}.mode-3d.panel-open .intro *{pointer-events:none}.mode-3d .foot{display:none}.mode-3d .panels{z-index:20;overscroll-behavior:contain;pointer-events:none;width:min(520px,100%);max-width:none;margin:0;padding:70px 18px 18px;transition:transform .45s cubic-bezier(.2,.8,.2,1);display:block;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(105%)}.mode-3d.panel-open .panels{pointer-events:auto;transform:none}.mode-3d .panel{-webkit-backdrop-filter:blur(14px);background:#0a0818e6;display:none}.mode-3d .panel.is-open{animation:.45s both rise;display:block}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.mode-3d .panel .psr{grid-template-columns:1fr}.mode-3d .panel-close{z-index:2;border:1px solid var(--line);color:#fff;cursor:pointer;background:#0a0818e6;border-radius:50%;place-items:center;width:42px;height:42px;margin:0 0 10px auto;font-size:16px;display:grid;position:sticky;top:0}.mode-3d .panel-close:hover{border-color:var(--pink);box-shadow:0 0 16px #ff2bd680}.mode-3d .loader{z-index:50;font:13px/1 var(--mono);letter-spacing:.14em;color:var(--cyan);text-transform:uppercase;background:#05040b;flex-direction:column;justify-content:center;align-items:center;gap:14px;transition:opacity .6s;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.mode-3d .loader i{background:linear-gradient(90deg, var(--pink), var(--cyan));transform-origin:0;width:220px;height:2px;box-shadow:0 0 12px var(--pink);transition:transform .3s;display:block;transform:scaleX(.05)}.loader.done{opacity:0;pointer-events:none}.mode-3d .hover-label{z-index:15;pointer-events:none;border:1px solid var(--cyan);color:#fff;font:600 13px/1.3 var(--mono);opacity:0;background:#05040bd9;border-radius:10px;padding:8px 12px;transition:opacity .15s;display:block;position:fixed;transform:translate(14px,14px);box-shadow:0 0 18px #2ff3ff59}.hover-label.show{opacity:1}.hover-label small{color:var(--cyan);margin-top:2px;font-weight:400;display:block}@media (max-width:860px){.nav{display:none}.topbar{padding:10px 16px}.intro{padding:48px 16px 28px}.panels{padding:0 16px 32px}.mode-3d .intro{padding:0 16px 24px}.mode-3d .panels{padding:64px 10px 10px}}@media (max-width:420px){.brand{letter-spacing:.12em;font-size:13px}.mode-toggle{padding:7px 9px}}.panel h2:focus{outline:none}.capture .loader,.capture .topbar,.capture .hint,.capture .cta-row,.capture .hover-label{display:none!important}.capture .intro{padding-bottom:60px}@media (max-width:1360px){.nav{display:none}}@media (max-width:480px){.topbar{gap:8px;padding:10px 12px}.brand{letter-spacing:.08em;gap:6px;font-size:12px}.top-actions{gap:6px}.btn-small{padding:8px 11px;font-size:12px}.mode-toggle{padding:7px 8px;font-size:11px}}@media (max-width:360px){.brand .sep,.brand-dot{display:none}}html,body{overflow-x:clip}@media (max-width:1360px){.topbar{flex-wrap:wrap;row-gap:6px}.nav{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;order:3;width:100%;margin:0 -4px;display:flex;overflow-x:auto}.nav::-webkit-scrollbar{display:none}.nav a{border:1px solid var(--line);border-radius:999px;flex:none;padding:7px 10px;font-size:12px}.panel{scroll-margin-top:110px}}@media (max-width:860px){.mode-3d .intro .lead,.mode-3d .intro .kicker{display:none}.mode-3d .intro h1{font-size:40px}.mode-3d .intro .btn{padding:11px 16px;font-size:14px}.mode-3d .panels{padding-top:112px}.mode-3d .panel-close{margin:0;position:fixed;top:112px;right:14px}.mode-3d .panel{padding-top:56px}}.on-touch{display:none}@media (pointer:coarse){.on-touch{display:inline}.on-desk{display:none}}.gallery{grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 18px;display:grid}.gallery img{border:1px solid var(--line);cursor:zoom-in;background:#fff;border-radius:10px;width:100%;height:auto;transition:transform .15s}.gallery img:hover{transform:scale(1.02)}.gallery figcaption{color:var(--muted);font:12px/1.5 var(--mono);grid-column:1/-1}.mode-3d .gallery{grid-template-columns:1fr 1fr}.mode-3d .gallery img:first-child{grid-column:1/-1}@media (max-width:640px){.gallery{grid-template-columns:1fr}}.ref{color:var(--muted);margin:0;font-size:14px}.zoom{z-index:80;cursor:zoom-out;overscroll-behavior:contain;background:#05040b;padding:56px 16px 40px;display:flex;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.zoom img{object-fit:contain;border-radius:10px;width:auto;max-width:100%;height:auto;max-height:100%;margin:auto;display:block;box-shadow:0 0 40px #2ff3ff26}.zoom-fermer{z-index:81;border:1px solid var(--line);color:#fff;font:600 13px/1 var(--mono);cursor:pointer;background:#0a0818e6;border-radius:999px;padding:10px 14px;position:fixed;top:12px;right:12px}.zoom-aide{z-index:81;color:var(--muted);font:12px/1.3 var(--mono);white-space:nowrap;pointer-events:none;position:fixed;bottom:10px;left:50%;transform:translate(-50%)}@media (max-width:860px) and (orientation:portrait){.zoom{cursor:default;padding:56px 0 40px}.zoom img{border-radius:8px;max-width:none;height:min(62vh,800px);max-height:none;margin:auto 16px}}.panel-specialite{background:linear-gradient(140deg, #2ff3ff14, #ff2bd612 60%, var(--glass));border-color:#2ff3ff99;box-shadow:0 0 50px #2ff3ff24,inset 0 0 0 1px #ff2bd626}.panel-specialite .tag{color:var(--cyan)}.intro-txt{color:#d8d4f5;margin:0 0 16px;font-size:17px}.methode{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;margin:0 0 20px;padding:0;list-style:none;display:grid}.methode li{border:1px solid var(--line);color:var(--muted);background:#8b5cff0f;border-radius:12px;padding:12px 14px;font-size:14px}.methode strong{margin-bottom:2px;display:block}.mode-3d .methode{grid-template-columns:1fr}.pole-titre{font:700 12px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--lime);margin:0 0 10px}.slogan{font:600 15px/1.4 var(--mono);color:var(--cyan);margin:-10px 0 16px}@media (max-width:1360px){.mode-3d .panels{padding-top:112px}}.mode-3d .loader{border:1px solid var(--line);background:#05040bcc;border-radius:12px;gap:10px;padding:12px 16px;font-size:11px;top:auto;bottom:20px;left:auto;right:20px}.mode-3d .loader i{width:160px}.mode-3d .scene canvas{opacity:0;transition:opacity .25s}.mode-3d.ready .scene canvas{opacity:1}.suite{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:22px;padding-top:16px;display:flex}.suite a{font:600 13px/1.3 var(--mono);color:var(--cyan);border:1px solid var(--line);border-radius:999px;padding:8px 12px;text-decoration:none}.suite a:hover{border-color:var(--cyan);color:#fff}.suite .contact-mini{color:#fff;background:linear-gradient(90deg, var(--pink), var(--violet));border:0}.mode-simple .suite{display:none}.toast{z-index:90;opacity:0;border:1px solid var(--cyan);color:#fff;max-width:calc(100% - 32px);font:14px/1.4 var(--sans);background:#0a0818f2;border-radius:12px;padding:12px 16px;transition:all .25s;position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);box-shadow:0 0 24px #2ff3ff4d}.toast.show{opacity:1;transform:translate(-50%)}.about{color:#d8d4f5;margin:0 0 18px;font-size:16px}.about p{margin:0 0 10px}@media (max-width:860px){.mode-simple .topbar{transition:transform .25s}.mode-simple .topbar.cachee{transform:translateY(-100%)}}.mode-3d .panels{padding-top:6px;top:64px}@media (max-width:1360px){.mode-3d .panels{padding-top:8px;top:100px}}@media (max-width:860px){.mode-3d .panels{padding-top:8px;top:104px}.mode-3d .panel-close{top:116px}.mode-3d .panel{padding-top:56px}}.fab{display:none}@media (max-width:860px){.mode-simple .fab{right:14px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:40;background:linear-gradient(90deg, var(--pink), var(--violet));color:#fff;font:700 14px/1 var(--sans);border-radius:999px;padding:12px 16px;text-decoration:none;transition:transform .25s;display:inline-flex;position:fixed;transform:translateY(90px);box-shadow:0 6px 24px #ff2bd673}.mode-simple.fab-on .fab{transform:none}}.panel.replie .psr div:not(:last-child),.panel.replie .gallery img:not(:first-child),.panel.replie .methode li:nth-child(n+3){display:none}.deplier{border:1px dashed var(--line);width:100%;color:var(--cyan);font:600 13px/1 var(--mono);cursor:pointer;background:0 0;border-radius:10px;margin:-4px 0 16px;padding:10px;display:block}.deplier:hover{border-color:var(--cyan)}@media (max-width:860px){.mode-3d .panel-close{margin:0;position:absolute;top:20px;right:20px}}.suite .retour{border:1px solid var(--line);color:var(--muted);font:600 13px/1.3 var(--mono);cursor:pointer;background:0 0;border-radius:999px;padding:8px 12px}.suite .retour:hover{color:#fff;border-color:var(--pink)}.recentrer{display:none}.mode-3d .recentrer{z-index:12;border:1px solid var(--line);color:var(--muted);font:600 12px/1 var(--mono);cursor:pointer;-webkit-backdrop-filter:blur(8px);background:#05040bb3;border-radius:999px;padding:10px 14px;display:inline-flex;position:fixed;bottom:18px;right:18px}.mode-3d .recentrer:hover{color:#fff;border-color:var(--cyan)}.mode-3d.panel-open .recentrer{display:none}.capture .recentrer{display:none!important}.mode-3d .scene canvas{touch-action:none}.mode-3d.explore .intro{opacity:0;transform:translateY(20px)}.mode-3d.explore .intro *{pointer-events:none}.mode-3d.explore .recentrer{color:#fff;border-color:var(--cyan);box-shadow:0 0 16px #2ff3ff59}.mode-3d:not(.explore) .recentrer{display:none}html.zoom-ouvert,html.zoom-ouvert body{overflow:hidden}.mode-switch{border:1px solid var(--line);color:var(--muted);font:800 12px/1 var(--mono);letter-spacing:.08em;cursor:pointer;background:#0d0b18;border-radius:999px;align-items:center;gap:7px;padding:5px 5px 5px 10px;transition:background .3s,box-shadow .3s,color .3s;display:inline-flex}.ms-track{background:#24202f;border-radius:999px;width:34px;height:20px;transition:background .3s;position:relative;box-shadow:inset 0 0 0 1px #ffffff0f}.ms-thumb{background:#565067;border-radius:50%;width:16px;height:16px;transition:transform .25s,background .25s,box-shadow .25s;position:absolute;top:2px;left:2px}.mode-switch[aria-checked=true]{color:#fff;background:linear-gradient(90deg, var(--pink), var(--violet), var(--cyan));text-shadow:0 0 6px #fffc;background-size:200% 100%;border-color:#0000;animation:4s ease-in-out infinite neon-switch;box-shadow:0 0 14px #ff2bd68c,0 0 26px #2ff3ff59}.mode-switch[aria-checked=true] .ms-track{background:#ffffff47}.mode-switch[aria-checked=true] .ms-thumb{box-shadow:0 0 10px #fff, 0 0 18px var(--cyan);background:#fff;transform:translate(14px)}.mode-switch:hover{filter:brightness(1.12)}@keyframes neon-switch{0%,to{background-position:0 0}50%{background-position:100% 0}}.mode-simple .nav{display:none!important}.onglets{z-index:25;scrollbar-width:none;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);background:#07060fe0;gap:6px;max-width:1080px;margin:0 auto 18px;padding:10px 20px;scroll-margin-top:57px;transition:top .25s;display:flex;position:sticky;top:57px;overflow-x:auto}.onglets::-webkit-scrollbar{display:none}.onglets button{border:1px solid var(--line);color:var(--muted);font:600 13px/1 var(--mono);cursor:pointer;background:0 0;border-radius:999px;flex:none;padding:9px 14px}.onglets button:hover{color:#fff;border-color:var(--cyan)}.onglets button.actif{color:#fff;background:linear-gradient(90deg,#ff2bd659,#2ff3ff4d);border-color:#0000;box-shadow:0 0 14px #ff2bd64d}.panel.hors-onglet{display:none}.mode-simple .panel{scroll-margin-top:120px}@media (max-width:860px){.onglets{padding:8px 12px;scroll-margin-top:52px;top:52px}.mode-simple .topbar.cachee~.onglets{top:0}.mode-simple .topbar{flex-wrap:nowrap}}.cv-ligne{margin:4px 0 18px}.panel-contact .cv-ligne{margin:18px 0 0}.btn-cv{border:1px solid var(--pink);color:#fff;background:0 0;box-shadow:0 0 16px #ff2bd640}.btn-cv:hover{background:#ff2bd626}
