/* ==========================================================
   style.css — toute la mise en forme du portfolio
   (couleurs, polices, mise en page, animations, version mobile)
   ========================================================== */

:root{
  color-scheme: dark;
  --ink:#0E1319;
  --ink-2:#141B23;
  --ink-3:#0A0F14;
  --ink-line:rgba(233,238,242,.12);
  --on-ink:#E9EEF2;
  --on-ink-dim:#93A1AD;
  --paper:#EEF1F3;
  --paper-card:#F9FAFB;
  --paper-line:rgba(18,24,32,.12);
  --on-paper:#121820;
  --on-paper-dim:#4E5B67;
  --signal:#6EC1E4;
  --signal-deep:#1C6A92;
  --amber:#E3B341;
  --display:'Bricolage Grotesque', 'Arial Narrow', Arial, sans-serif;
  --body:'Instrument Sans', 'Helvetica Neue', Arial, sans-serif;
  --mono:'JetBrains Mono', 'Courier New', monospace;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:var(--ink);color:var(--on-ink);font-family:var(--body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;}
a{color:inherit;}
h1,h2,h3{font-family:var(--display);margin:0;text-wrap:balance;}
p{margin:0;}
.wrap{max-width:1180px;margin:0 auto;padding-inline:clamp(16px,4vw,48px);}
.mono{font-family:var(--mono);}
.eyebrow{font-family:var(--mono);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;}
:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:4px;}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} *{transition:none !important;animation:none !important;} }

/* ---------- NAV ---------- */
.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;background:rgba(14,19,25,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--ink-line);}
.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:14px;}
.mark{display:flex;flex-direction:column;gap:4px;text-decoration:none;}
.mark-name{font-family:var(--display);font-weight:800;font-size:clamp(1.3rem,2.3vw,1.75rem);letter-spacing:-.02em;line-height:1.05;}
.mark-role{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--signal);line-height:1.2;}
.pinout{display:flex;gap:2px;height:4px;width:128px;}
.pinout span{flex:1;border-radius:1px;}
.p-wo{background:repeating-linear-gradient(90deg,#F2F2EE 0 3px,#E8762B 3px 6px);}
.p-o{background:#E8762B;}
.p-wg{background:repeating-linear-gradient(90deg,#F2F2EE 0 3px,#3FA05A 3px 6px);}
.p-b{background:#2F6FD6;}
.p-wb{background:repeating-linear-gradient(90deg,#F2F2EE 0 3px,#2F6FD6 3px 6px);}
.p-g{background:#3FA05A;}
.p-wbr{background:repeating-linear-gradient(90deg,#F2F2EE 0 3px,#8A5A3B 3px 6px);}
.p-br{background:#8A5A3B;}
.nav-links{display:flex;gap:26px;list-style:none;margin:0;padding:0;font-size:.93rem;}
.nav-links a{text-decoration:none;color:var(--on-ink-dim);transition:color .2s ease;}
.nav-links a:hover{color:var(--on-ink);}
.nav-right{display:flex;align-items:center;gap:16px;}
.lang{display:flex;border:1px solid var(--ink-line);border-radius:999px;padding:3px;}
.lang button{font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;background:none;border:0;color:var(--on-ink-dim);padding:5px 10px;border-radius:999px;cursor:pointer;}
.lang button[aria-pressed="true"]{background:var(--on-ink);color:var(--ink);}
.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--body);font-weight:600;font-size:.95rem;padding:12px 22px;border-radius:999px;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease;white-space:nowrap;}
.btn-signal{background:var(--signal);color:var(--ink);}
.btn-signal:hover{background:#9AD6EE;}
.btn-ghost{border-color:var(--ink-line);color:var(--on-ink);background:transparent;}
.btn-ghost:hover{border-color:var(--signal);color:var(--signal);}
.btn-sm{padding:9px 16px;font-size:.85rem;}

/* ---------- HERO ---------- */
.hero{padding-block:clamp(56px,9vw,112px) clamp(40px,6vw,72px);}
.hero-grid{display:grid;grid-template-columns:1.25fr .95fr;gap:clamp(32px,5vw,64px);align-items:center;}
.hero .eyebrow{color:var(--signal);margin-bottom:22px;}
.hero h1{font-weight:800;font-size:clamp(2.5rem,6vw,4.9rem);line-height:.98;letter-spacing:-.025em;}
.hero-sub{margin-top:24px;max-width:52ch;color:var(--on-ink-dim);font-size:1.08rem;}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px;}

.console{background:var(--ink-3);border:1px solid var(--ink-line);border-radius:10px;overflow:hidden;box-shadow:0 30px 60px -30px rgba(0,0,0,.6);}
.console-bar{display:flex;justify-content:space-between;gap:12px;padding:10px 16px;border-bottom:1px solid var(--ink-line);font-family:var(--mono);font-size:.72rem;color:var(--on-ink-dim);letter-spacing:.04em;}
.console-body{padding:18px 16px 20px;font-family:var(--mono);font-size:.84rem;line-height:1.75;overflow-x:auto;}
.console-body table{border-collapse:collapse;width:100%;min-width:300px;}
.console-body td,.console-body th{padding:0 14px 0 0;text-align:left;font-weight:400;white-space:nowrap;}
.console-body th{color:var(--on-ink-dim);}
.prompt{color:var(--on-ink);}
.prompt b{color:var(--signal);font-weight:500;}
.st-up{color:var(--signal);}
.st-wip{color:var(--amber);}
.cursor{display:inline-block;width:8px;height:1em;background:var(--signal);vertical-align:-2px;animation:blink 1.1s steps(1) infinite;}
@keyframes blink{50%{opacity:0;}}

.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:clamp(48px,7vw,80px);border-top:1px solid var(--ink-line);padding-top:28px;}
.stat-num{font-family:var(--display);font-weight:700;font-size:clamp(2rem,4vw,2.8rem);letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums;}
.stat-label{margin-top:10px;color:var(--on-ink-dim);font-size:.93rem;max-width:30ch;}

/* ---------- SERVICES ---------- */
.services{padding-block:clamp(56px,8vw,96px);border-top:1px solid var(--ink-line);}
.sec-head{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:end;margin-bottom:clamp(32px,5vw,56px);}
.sec-head h2{font-weight:700;font-size:clamp(2rem,4vw,3.1rem);letter-spacing:-.02em;line-height:1.05;}
.sec-head p{max-width:48ch;}
.dark .sec-head p{color:var(--on-ink-dim);}
.svc{display:grid;grid-template-columns:minmax(180px,.9fr) 1fr 1.4fr;gap:28px;padding-block:28px;border-top:1px solid var(--ink-line);align-items:baseline;}
.svc:last-child{border-bottom:1px solid var(--ink-line);}
.svc-layer{font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;color:var(--signal);}
.svc h3{font-weight:600;font-size:1.55rem;letter-spacing:-.01em;}
.svc p{color:var(--on-ink-dim);}

/* ---------- LIGHT SECTIONS ---------- */
.light{background:var(--paper);color:var(--on-paper);}
.light .eyebrow{color:var(--signal-deep);}
.light .sec-head p{color:var(--on-paper-dim);}
.projects{padding-block:clamp(56px,8vw,104px);}
.project{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(24px,4vw,48px);background:var(--paper-card);border:1px solid var(--paper-line);border-radius:14px;padding:clamp(16px,2.5vw,28px);}
.project-shots{display:grid;grid-template-columns:1.5fr 1fr;gap:12px;align-items:start;}
.project-shots img{width:100%;height:auto;display:block;border-radius:8px;border:1px solid var(--paper-line);background:#171410;}
.project-body{display:flex;flex-direction:column;gap:16px;padding-block:6px;}
.project-meta{font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;color:var(--on-paper-dim);}
.project h3{font-weight:700;font-size:clamp(1.7rem,3vw,2.3rem);letter-spacing:-.02em;line-height:1.05;}
.project-body p{color:var(--on-paper-dim);}
.tags{display:flex;flex-wrap:wrap;gap:8px;}
.tag{font-family:var(--mono);font-size:.74rem;padding:5px 10px;border-radius:999px;border:1px solid var(--paper-line);color:var(--on-paper);}
.badge{align-self:flex-start;font-family:var(--mono);font-size:.72rem;letter-spacing:.05em;padding:5px 10px;border-radius:999px;background:#FCEFD0;color:#6B4D07;}
.gh{margin-top:20px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;border:1px dashed rgba(18,24,32,.25);border-radius:14px;padding:22px clamp(16px,2.5vw,28px);}
.gh h3{font-weight:600;font-size:1.25rem;}
.gh p{color:var(--on-paper-dim);font-size:.95rem;}
.gh a{font-family:var(--mono);font-size:.9rem;color:var(--signal-deep);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px;}

.path{padding-block:clamp(40px,6vw,80px) clamp(56px,8vw,104px);border-top:1px solid var(--paper-line);}
.hops{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:24px;position:relative;}
.hops::before{content:"";position:absolute;left:6px;right:6px;top:6px;height:2px;background:repeating-linear-gradient(90deg,var(--signal-deep) 0 8px,transparent 8px 14px);opacity:.55;}
.hop{position:relative;padding-top:30px;display:flex;flex-direction:column;gap:8px;}
.hop::before{content:"";position:absolute;left:0;top:0;width:14px;height:14px;border-radius:50%;background:var(--paper);border:2px solid var(--signal-deep);}
.hop-label{font-family:var(--mono);font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--signal-deep);}
.hop h3{font-family:var(--body);font-weight:600;font-size:1.08rem;}
.hop p{color:var(--on-paper-dim);font-size:.95rem;}

/* ---------- MENTORAT ---------- */
.mentor{padding-block:clamp(56px,8vw,104px);}
.mentor-grid{display:grid;grid-template-columns:auto 1fr;gap:clamp(24px,5vw,72px);align-items:center;}
.mentor-num{font-family:var(--display);font-weight:800;font-size:clamp(5rem,15vw,11rem);line-height:.85;letter-spacing:-.04em;color:var(--signal);font-variant-numeric:tabular-nums;}
.mentor .eyebrow{color:var(--on-ink-dim);margin-bottom:20px;}
.mentor p.lead{font-size:clamp(1.15rem,2vw,1.45rem);line-height:1.45;max-width:40ch;}
.mentor p.note{margin-top:16px;color:var(--on-ink-dim);max-width:52ch;}

/* ---------- CONTACT ---------- */
.contact{background:var(--ink-2);padding-block:clamp(56px,8vw,104px);border-top:1px solid var(--ink-line);}
.cta-card{position:relative;overflow:hidden;background:#0F161D;border:1px solid var(--ink-line);border-radius:24px;padding:clamp(28px,5vw,64px);}
.cta-card::after{content:"";position:absolute;right:-1px;top:-1px;width:min(300px,55vw);height:min(300px,55vw);pointer-events:none;
  background:repeating-radial-gradient(circle at 100% 0,rgba(110,193,228,.22) 0 2px,transparent 2px 30px);
  -webkit-mask-image:radial-gradient(circle at 100% 0,#000 0,transparent 70%);mask-image:radial-gradient(circle at 100% 0,#000 0,transparent 70%);}
.cta-card .eyebrow{color:var(--on-ink-dim);margin-bottom:18px;position:relative;}
.contact h2{font-weight:800;font-size:clamp(2.1rem,5vw,3.9rem);letter-spacing:-.025em;line-height:1.02;max-width:18ch;position:relative;}
.cta-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px;position:relative;}
.contact-sub{margin-top:22px;color:var(--on-ink-dim);max-width:46ch;font-size:.95rem;position:relative;}
.contact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 40px;margin-top:40px;}
.row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-block:18px;border-top:1px solid var(--ink-line);flex-wrap:wrap;}
.row-k{font-family:var(--mono);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--on-ink-dim);}
.row-v{font-size:1.05rem;user-select:all;}
.row-v a{text-decoration:none;border-bottom:1px solid var(--ink-line);}
.row-v a:hover{border-color:var(--signal);color:var(--signal);}
.copy{text-decoration:none;font-family:var(--mono);font-size:.72rem;background:none;border:1px solid var(--ink-line);color:var(--on-ink-dim);border-radius:999px;padding:5px 12px;cursor:pointer;}
.copy:hover{border-color:var(--signal);color:var(--signal);}
footer{background:var(--ink-3);padding-block:24px;font-size:.85rem;color:var(--on-ink-dim);}
.foot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;}

/* ---------- RESPONSIVE ---------- */
@media (max-width:960px){
  .nav-links{display:none;}
  .hero-grid,.sec-head,.project,.mentor-grid{grid-template-columns:1fr;}
  .svc{grid-template-columns:1fr;gap:8px;}
  .hops{grid-template-columns:1fr;row-gap:34px;padding-left:34px;}
  .hops::before{left:6px;right:auto;top:8px;bottom:8px;width:2px;height:auto;background:repeating-linear-gradient(180deg,var(--signal-deep) 0 8px,transparent 8px 14px);}
  .hop{padding-top:0;}
  .hop::before{left:-34px;top:2px;}
  .contact-grid{grid-template-columns:1fr;}
}
@media (max-width:560px){
  .nav-right .btn{display:none;}
  .stats{grid-template-columns:1fr;gap:20px;}
  .project-shots{grid-template-columns:1fr;}
}


/* workbench illustration */
.bench{margin:0;}
.bench svg{width:100%;height:auto;display:block;}
.bench .laptop{cursor:pointer;}
.bench .r{transition:opacity .35s ease;}
.bench.typing .r{opacity:0;}
#caret{fill-opacity:0;}
.bench.typing #caret{fill-opacity:1;}
.bench .blink{animation:fblink 1.1s steps(1) infinite;}
@keyframes fblink{50%{fill-opacity:0;}}
.led{animation:led 1.6s steps(1) infinite;}
.led-a{animation-duration:2.4s;}
.led-b{animation-duration:.9s;}
.led-c{animation-duration:1.3s;animation-delay:.4s;}
.led-d{animation-duration:2.1s;}
.led-e{animation-duration:.7s;animation-delay:.2s;}
.led-f{animation-duration:1.1s;animation-delay:.6s;}
@keyframes led{50%{opacity:.25;}}
.steam{opacity:.35;animation:steam 3.2s ease-in-out infinite;}
.s2{animation-delay:1.6s;}
@keyframes steam{0%{opacity:0;transform:translateY(6px);}40%{opacity:.5;}100%{opacity:0;transform:translateY(-12px);}}
@media (max-width:960px){ .bench{max-width:560px;} }
.hero-art{display:flex;flex-direction:column;align-items:stretch;gap:18px;min-width:0;}
.hero-art .bench{width:100%;}
.socials{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;}
.socials a{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--ink-line);border-radius:999px;text-decoration:none;color:var(--on-ink-dim);font-size:.85rem;transition:color .2s ease,border-color .2s ease;}
.socials a:hover{color:var(--signal);border-color:var(--signal);}
.socials svg,.btn svg{width:1.05em;height:1.05em;}
.bench{position:relative;}
.desk-link{position:absolute;transform:translate(-50%,-100%);width:clamp(24px,5.5%,36px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;
  background:#1A222B;border:1.5px solid var(--signal);color:var(--on-ink);font-size:18px;text-decoration:none;
  box-shadow:0 10px 14px -6px rgba(0,0,0,.7);transition:transform .25s ease,background .25s ease;animation:bob 3.2s ease-in-out infinite;}
.desk-link::after{content:"";position:absolute;left:50%;bottom:-9px;width:60%;height:6px;transform:translateX(-50%);border-radius:50%;background:rgba(0,0,0,.45);filter:blur(2px);}
.desk-link:nth-of-type(2){animation-delay:1.6s;}
.desk-link:hover{background:var(--signal);color:var(--ink);}
.desk-link svg{width:52%;height:52%;}
@keyframes bob{0%,100%{transform:translate(-50%,-100%);}50%{transform:translate(-50%,-112%);}}

/* ---------- APPARITION AU DÉFILEMENT (js/motion.js) ---------- */
.motion .reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease var(--d,0ms),transform .7s cubic-bezier(.2,.7,.2,1) var(--d,0ms);}
.motion .reveal.in{opacity:1;transform:none;}
.project,.gh,.hop,.svc{transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;}
.motion .project.in:hover,.motion .gh.in:hover{transform:translateY(-4px);box-shadow:0 18px 40px -20px rgba(18,24,32,.35);}
.motion .hop.in:hover{transform:translateY(-3px);}
.svc:hover h3{color:var(--signal);}
.svc h3{transition:color .25s ease;}
.project-shots img{transition:transform .5s ease;}
.project:hover .project-shots img{transform:scale(1.02);}


/* ---------- MASCOTTE : le robot volant (js/mascot.js) ---------- */
.mascot{position:fixed;left:0;top:0;z-index:50;pointer-events:none;--lean:0deg;will-change:transform;}
.mascot.still{left:auto;top:auto;right:16px;bottom:16px;}
.mascot-btn{pointer-events:auto;display:block;background:none;border:0;padding:0;cursor:pointer;width:72px;height:86px;border-radius:24px;}
.mascot-svg{width:100%;height:100%;overflow:visible;transform:rotate(var(--lean));transform-origin:50% 40%;filter:drop-shadow(0 10px 12px rgba(0,0,0,.45));}
.m-shell{fill:#E9EEF2;stroke:#93A1AD;stroke-width:2;}
.m-visor{fill:#0E1319;}
.m-eye{fill:var(--signal);transform-box:fill-box;transform-origin:center;animation:m-blink 4.5s infinite;}
.m-eyes{transition:transform .2s ease;}
.m-ear{fill:var(--signal-deep);}
.m-ports rect{fill:#36434F;}
.m-stroke{fill:none;stroke:#93A1AD;stroke-width:4;stroke-linecap:round;}
.m-hand{fill:#E9EEF2;stroke:#93A1AD;stroke-width:2;}
.m-led{fill:var(--amber);animation:led 1.4s steps(1) infinite;}
.m-flame{fill:#E8762B;opacity:.9;}
.m-flame-in{fill:var(--amber);}
.m-jet{transform-box:fill-box;transform-origin:50% 0;animation:m-flicker .18s ease-in-out infinite alternate;}
.mascot.boost .m-jet{animation-name:m-flicker-boost;}
.mascot.still .m-jet{display:none;}
.m-arm{transform-box:fill-box;}
.m-arm-r{transform-origin:0 0;}
.m-arm-l{transform-origin:100% 0;}
.mascot.talking .m-arm-r{animation:m-wave .5s ease-in-out 4 alternate;}
.mascot-btn:hover .mascot-svg{transform:rotate(var(--lean)) scale(1.08);}
.mascot-bubble{position:absolute;bottom:calc(100% + 4px);left:58px;width:128px;height:128px;border-radius:50%;padding:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  background:var(--paper-card);color:var(--on-paper);border:1px solid var(--paper-line);box-shadow:0 14px 30px -14px rgba(0,0,0,.6);
  opacity:0;transform:translateY(8px) scale(.9);transform-origin:0 100%;transition:opacity .3s ease,transform .3s ease;}
/* la queue de la bulle : deux petits ronds qui descendent vers le robot */
.mascot-bubble::before,.mascot-bubble::after{content:"";position:absolute;border-radius:50%;background:var(--paper-card);border:1px solid var(--paper-line);}
.mascot-bubble::before{width:10px;height:10px;left:10px;bottom:-3px;}
.mascot-bubble::after{width:5px;height:5px;left:0;bottom:-11px;}
.mascot.flip .mascot-bubble,.mascot.still .mascot-bubble{left:auto;right:58px;transform-origin:100% 100%;}
.mascot.flip .mascot-bubble::before,.mascot.still .mascot-bubble::before{left:auto;right:10px;}
.mascot.flip .mascot-bubble::after,.mascot.still .mascot-bubble::after{left:auto;right:0;}
.mascot.below .mascot-bubble{bottom:auto;top:calc(100% + 4px);transform-origin:0 0;}
.mascot.below .mascot-bubble::before{bottom:auto;top:-3px;}
.mascot.below .mascot-bubble::after{bottom:auto;top:-11px;}
.mascot.below.flip .mascot-bubble{transform-origin:100% 0;}
.mascot.talking .mascot-bubble,.mascot:hover .mascot-bubble{opacity:1;transform:none;}
/* robot en mode "profil spécial" : yeux et lumière roses */
.mascot.vip .m-eye{fill:#FF7EB6;}
.mascot.vip .m-led{fill:#FF7EB6;}
.mascot.vip .mascot-bubble,.mascot.vip .mascot-bubble::before,.mascot.vip .mascot-bubble::after{border-color:rgba(255,126,182,.7);}
.mascot-say{font-size:.66rem;line-height:1.25;font-weight:500;}
.mascot-hint{margin-top:4px;font-family:var(--mono);font-size:.52rem;line-height:1.3;letter-spacing:.02em;color:var(--signal-deep);}
@keyframes m-blink{0%,92%,100%{transform:scaleY(1);}95%{transform:scaleY(.1);}}
@keyframes m-wave{from{transform:rotate(0);}to{transform:rotate(-35deg);}}
@keyframes m-flicker{from{transform:scaleY(.85);}to{transform:scaleY(1.1);}}
@keyframes m-flicker-boost{from{transform:scaleY(1.3);}to{transform:scaleY(1.7);}}
@media (max-width:560px){
  .mascot-btn{width:52px;height:62px;}
  .mascot-bubble{width:112px;height:112px;padding:12px;left:44px;}
  .mascot.flip .mascot-bubble,.mascot.still .mascot-bubble{right:44px;}
  .mascot-say{font-size:.6rem;}
  .mascot-hint{font-size:.48rem;}
}

/* ---------- MENU : onglet Jeux et menu mobile ---------- */
.games-link{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--ink-line);border-radius:12px;color:var(--amber);transition:border-color .2s ease,background .2s ease,transform .2s ease;}
/* le dé en 3D : un vrai cube de 6 faces, qui roule au survol */
.games-link{perspective:120px;}
.die{position:relative;width:18px;height:18px;transform-style:preserve-3d;transform:rotateX(-28deg) rotateY(38deg);animation:die-idle 5s ease-in-out infinite;}
.games-link:hover .die{animation:die-roll .9s cubic-bezier(.3,.7,.3,1);}
.die .face{position:absolute;inset:0;border-radius:4px;background-color:var(--amber);box-shadow:inset 0 0 0 1px rgba(0,0,0,.25);}
.die .f1{transform:translateZ(9px);background-image:radial-gradient(circle at 50% 50%, #1A1408 0 1.7px, transparent 2.1px);}
.die .f6{transform:rotateY(180deg) translateZ(9px);background-image:radial-gradient(circle at 28% 25%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 72% 25%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 28% 50%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 72% 50%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 28% 75%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 72% 75%, #1A1408 0 1.7px, transparent 2.1px);}
.die .f3{transform:rotateY(90deg) translateZ(9px);background-color:#C9982F;background-image:radial-gradient(circle at 25% 25%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 50% 50%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 75% 75%, #1A1408 0 1.7px, transparent 2.1px);}
.die .f4{transform:rotateY(-90deg) translateZ(9px);background-color:#C9982F;background-image:radial-gradient(circle at 28% 28%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 72% 28%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 28% 72%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 72% 72%, #1A1408 0 1.7px, transparent 2.1px);}
.die .f2{transform:rotateX(90deg) translateZ(9px);background-color:#F2C863;background-image:radial-gradient(circle at 28% 28%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 72% 72%, #1A1408 0 1.7px, transparent 2.1px);}
.die .f5{transform:rotateX(-90deg) translateZ(9px);background-image:radial-gradient(circle at 25% 25%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 75% 25%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 50% 50%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 25% 75%, #1A1408 0 1.7px, transparent 2.1px),radial-gradient(circle at 75% 75%, #1A1408 0 1.7px, transparent 2.1px);}
@keyframes die-idle{0%,100%{transform:rotateX(-28deg) rotateY(38deg);}50%{transform:rotateX(-34deg) rotateY(52deg);}}
@keyframes die-roll{from{transform:rotateX(-28deg) rotateY(38deg);}to{transform:rotateX(332deg) rotateY(398deg);}}
.games-link:hover{border-color:var(--amber);}
.games-link[aria-current="page"]{background:rgba(227,179,65,.12);border-color:var(--amber);}
.menu-btn{display:none;width:40px;height:40px;border:1px solid var(--ink-line);border-radius:12px;background:none;cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:4px;}
.menu-btn span{display:block;width:18px;height:2px;border-radius:2px;background:var(--on-ink);transition:transform .25s ease,opacity .25s ease;}
.menu-btn[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.menu-btn[aria-expanded="true"] span:nth-child(2){opacity:0;}
.menu-btn[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}
@media (max-width:960px){
  .menu-btn{display:flex;}
  .nav-links{position:absolute;left:0;right:0;top:100%;flex-direction:column;gap:0;padding:8px clamp(16px,4vw,48px) 16px;background:rgba(14,19,25,.97);border-bottom:1px solid var(--ink-line);
    display:flex;visibility:hidden;opacity:0;transform:translateY(-8px);transition:opacity .25s ease,transform .25s ease,visibility 0s .25s;}
  .nav.open .nav-links{visibility:visible;opacity:1;transform:none;transition:opacity .25s ease,transform .25s ease;}
  .nav-links a{display:block;padding:12px 0;font-size:1.05rem;border-bottom:1px solid var(--ink-line);}
  .nav-links li:last-child a{border-bottom:0;}
}

/* ---------- MENU sur petit téléphone : tout tient sur une ligne ---------- */
@media (max-width:480px){
  .nav-inner{gap:10px;}
  .nav-right{gap:6px;}
  .mark-name{font-size:1.12rem;}
  .mark-role{font-size:.62rem;letter-spacing:.08em;}
  .pinout{width:96px;}
  .games-link,.menu-btn{width:36px;height:36px;border-radius:10px;}
  .lang button{padding:4px 7px;}
}

/* ---------- CHATBOT du robot (js/chat.js) ---------- */
.chat-open .mascot{opacity:0;pointer-events:none;}
.chat{position:fixed;right:clamp(12px,2vw,24px);bottom:clamp(12px,2vw,24px);z-index:60;width:min(370px,calc(100vw - 24px));height:min(540px,calc(100vh - 110px));
  display:flex;flex-direction:column;background:var(--ink-2);border:1px solid var(--ink-line);border-radius:18px;box-shadow:0 30px 60px -20px rgba(0,0,0,.85);overflow:hidden;
  animation:chat-in .25s ease;}
.chat[hidden]{display:none;}
.chat.vip{border-color:rgba(255,126,182,.55);}
.chat-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--ink-line);background:var(--ink);}
.chat-face{position:relative;width:38px;height:30px;border-radius:12px;background:#E9EEF2;display:flex;align-items:center;justify-content:center;gap:7px;flex:none;}
.chat-face::before{content:"";position:absolute;inset:5px 6px;border-radius:8px;background:var(--ink);}
.chat-face span{position:relative;width:5px;height:9px;border-radius:3px;background:var(--signal);animation:m-blink 4.5s infinite;}
.chat.vip .chat-face span{background:#FF7EB6;}
.chat-who{display:flex;flex-direction:column;flex:1;line-height:1.2;}
.chat-who b{font-family:var(--display);font-size:1.05rem;}
.chat-status{font-family:var(--mono);font-size:.68rem;color:#7FD99A;}
.chat-status::before{content:"● ";}
.chat-close{background:none;border:0;color:var(--on-ink-dim);font-size:1.1rem;cursor:pointer;padding:6px;border-radius:8px;}
.chat-close:hover{color:var(--on-ink);background:rgba(233,238,242,.06);}
.chat-log{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;}
.msg{max-width:85%;white-space:pre-line;padding:9px 13px;border-radius:14px;font-size:.92rem;line-height:1.45;animation:chat-in .2s ease;}
.msg.bot{align-self:flex-start;background:var(--ink-3);border:1px solid var(--ink-line);border-bottom-left-radius:4px;}
.msg.me{align-self:flex-end;background:var(--signal);color:var(--ink);border-bottom-right-radius:4px;}
.chat.vip .msg.me{background:#FF7EB6;}
.msg.typing{display:flex;gap:4px;padding:12px 14px;}
.msg.typing i{width:6px;height:6px;border-radius:50%;background:var(--on-ink-dim);animation:dot 1s ease-in-out infinite;}
.msg.typing i:nth-child(2){animation-delay:.15s;}
.msg.typing i:nth-child(3){animation-delay:.3s;}
.msg-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:-2px;}
.msg-actions a{font-size:.8rem;font-weight:600;text-decoration:none;padding:6px 12px;border-radius:999px;border:1px solid var(--signal);color:var(--signal);}
.msg-actions a:hover{background:var(--signal);color:var(--ink);}
.chat-chips{display:flex;gap:6px;overflow-x:auto;padding:12px 14px 14px;border-top:1px solid var(--ink-line);scrollbar-width:thin;}
.chat-chip{flex:none;font:inherit;font-size:.82rem;padding:7px 12px;border-radius:999px;border:1px solid var(--ink-line);background:var(--ink);color:var(--on-ink);cursor:pointer;white-space:nowrap;}
.chat-chip:hover{border-color:var(--signal);color:var(--signal);}
.chat-chip:disabled{opacity:.45;cursor:wait;}
.chat-chip-vip{border-color:rgba(255,126,182,.6);color:#FFB3D3;}
@keyframes chat-in{from{opacity:0;transform:translateY(10px);}}
@keyframes dot{0%,100%{transform:translateY(0);opacity:.5;}50%{transform:translateY(-4px);opacity:1;}}
@media (max-width:560px){
  .chat{right:8px;left:8px;bottom:8px;width:auto;height:min(72vh,560px);}
  .chat-chips{flex-wrap:wrap;max-height:132px;overflow-y:auto;}
}
.chat-input{display:flex;gap:8px;padding:0 14px 14px;}
.chat-input input{flex:1;min-width:0;font:inherit;font-size:.9rem;padding:10px 14px;border-radius:999px;border:1px solid var(--ink-line);background:var(--ink);color:var(--on-ink);}
.chat-input input:focus{outline:none;border-color:var(--signal);}
.chat-input button{flex:none;width:40px;height:40px;border-radius:50%;border:0;background:var(--signal);color:var(--ink);font-size:1rem;cursor:pointer;}
.chat.vip .chat-input button{background:#FF7EB6;}
.chat-chips{padding-bottom:10px;}
/* chat sur téléphone : au-dessus du clavier, sans zoom automatique (iPhone zoome si le texte fait moins de 16px) */
@media (max-width:560px){
  .chat-input input{font-size:16px;}
  body.chat-open{overflow:hidden;}
  /* clavier ouvert : les questions passent sur une seule ligne qui défile, pour laisser la place à la conversation */
  .chat.kbd .chat-chips{flex-wrap:nowrap;max-height:none;overflow-x:auto;overflow-y:hidden;padding-top:8px;padding-bottom:8px;}
  .chat.kbd .chat-head{padding-block:8px;}
}

/* ---------- lien Admin : discret en pied de page, et dans le menu ☰ seulement ---------- */
.foot-admin{color:var(--on-ink-dim);text-decoration:none;font-family:var(--mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;opacity:.6;}
.foot-admin:hover{color:var(--signal);opacity:1;}
.nav-links .menu-only{display:none;}
.nav-links .menu-only[hidden],.foot-admin[hidden]{display:none !important;}
.foot{align-items:center;}
@media (max-width:960px){ .nav-links .menu-only{display:list-item;} .nav-links .menu-only a{color:var(--on-ink-dim);font-family:var(--mono);font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;} }

/* ---------- KAIRO qu'on déplace : attrapable, et la tête qui tourne avec des étoiles ---------- */
.mascot-btn{touch-action:none;cursor:grab;}
.mascot.dragging .mascot-btn{cursor:grabbing;}
.mascot.dragging .mascot-svg{animation:m-wiggle .25s ease-in-out infinite alternate;}
.m-xeyes{display:none;}
.m-xeyes path{fill:none;stroke:var(--signal);stroke-width:3.5;stroke-linecap:round;}
.m-stars{display:none;transform-box:view-box;transform-origin:50px 42px;}
.m-star{fill:var(--amber);}
.mascot.dizzy .m-eyes{display:none;}
.mascot.dizzy .m-xeyes{display:block;}
.mascot.dizzy .m-stars{display:block;animation:m-orbit 1.1s linear infinite;}
.mascot.dizzy .m-bot{transform-box:view-box;transform-origin:50px 60px;animation:m-woozy .45s ease-in-out infinite alternate;}
.mascot.vip.dizzy .m-xeyes path{stroke:#FF7EB6;}
@keyframes m-wiggle{from{transform:rotate(-10deg) scale(1.05);}to{transform:rotate(10deg) scale(1.05);}}
@keyframes m-orbit{to{transform:rotate(360deg);}}
@keyframes m-woozy{from{transform:rotate(-12deg);}to{transform:rotate(12deg);}}
