/* Elo Making — page À propos (en plus de base.css) */
/* ---------- À propos ---------- */
.ab-hero__grid{display:grid;grid-template-columns:1fr auto;align-items:end;gap:clamp(24px,4vw,64px)}
.portrait{position:relative;width:clamp(220px,25vw,400px);margin-bottom:.6vw;perspective:900px}
.portrait__frame{position:relative;aspect-ratio:4/5;border-radius:22px;overflow:hidden;background:var(--bg-2);transform-style:preserve-3d;box-shadow:0 40px 80px -30px rgba(226,35,26,.35)}
.portrait__art{position:absolute;inset:-20%;background:radial-gradient(40% 35% at 30% 30%,#f2efea 0,transparent 70%),radial-gradient(45% 40% at 75% 70%,#e2231a 0,transparent 70%),radial-gradient(40% 40% at 80% 15%,#8a8680 0,transparent 70%),linear-gradient(160deg,#2a1d1a,#0b0b0c);background-size:140% 140%;animation:drift 14s ease-in-out infinite alternate}
@keyframes drift{to{background-position:100% 100%;transform:rotate(6deg) scale(1.05)}}
.portrait__sil{position:absolute;left:50%;bottom:0;width:78%;transform:translateX(-50%);opacity:.9}
.portrait__frame::after{content:"";position:absolute;inset:12px;border:1px dashed rgba(242,239,234,.45);border-radius:14px;pointer-events:none}
.portrait__tag{position:absolute;top:22px;left:22px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;background:rgba(11,11,12,.75);backdrop-filter:blur(10px);padding:8px 12px;border-radius:99px;display:inline-flex;align-items:center;gap:8px}
.portrait__tag::before{content:"";width:14px;height:11px;border:1.5px solid currentColor;border-radius:3px;box-shadow:inset 0 0 0 2px rgba(11,11,12,.75),inset 0 0 0 4px currentColor}
.portrait__ph{position:absolute;right:22px;bottom:20px;font-family:var(--serif);font-style:italic;font-size:clamp(22px,2vw,30px);color:var(--fg);text-align:right;line-height:1}
.portrait__ph small{display:block;font-family:var(--sans);font-style:normal;font-size:11px;letter-spacing:.1em;text-transform:uppercase;opacity:.7;margin-top:6px}
.portrait__badge{position:absolute;left:-46px;bottom:-34px;width:118px;height:118px;border-radius:50%;background:var(--accent);color:var(--bg);display:grid;place-items:center;transform:translateZ(40px)}
.portrait__badge svg{position:absolute;inset:0;width:100%;height:100%;animation:spin 16s linear infinite}
.portrait__badge text{font-size:10.5px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;fill:var(--bg)}
.portrait__badge b{font-family:var(--serif);font-style:italic;font-weight:400;font-size:34px;line-height:1}
@media (max-width:820px){.ab-hero__grid{grid-template-columns:1fr}.portrait{width:min(78%,320px);justify-self:end;margin-top:12px}.portrait__badge{left:-30px;width:96px;height:96px}}

/* histoire */
.story__big{font-size:clamp(30px,4.6vw,76px);line-height:1.08;letter-spacing:-.035em;font-weight:500;max-width:22ch}
.story__big em{color:var(--accent)}
.story__cols{display:grid;grid-template-columns:1fr 1.2fr;gap:clamp(32px,6vw,120px);margin-top:clamp(64px,8vw,120px)}
.story__pull{font-family:var(--serif);font-style:italic;font-size:clamp(28px,3vw,48px);line-height:1.08;color:var(--fg);position:sticky;top:120px;align-self:start}
.story__text p{font-size:clamp(17px,1.35vw,21px);line-height:1.6;color:rgba(242,239,234,.82);margin-bottom:1.2em;max-width:52ch}
.story__text p:first-child::first-letter{font-family:var(--serif);font-style:italic;font-size:4.2em;float:left;line-height:.8;margin:.06em .12em 0 0;color:var(--fg)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:clamp(64px,8vw,120px);border-top:1px solid var(--line);padding-top:32px}
.stat b{display:block;font-size:clamp(44px,5.4vw,90px);font-weight:600;letter-spacing:-.05em;line-height:1;font-variant-numeric:tabular-nums}
.stat span{color:var(--muted);font-size:14px}
@media (max-width:820px){.story__cols{grid-template-columns:1fr}.story__pull{position:static}.stats{grid-template-columns:1fr 1fr}}

/* valeurs */
.vals__head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:56px;flex-wrap:wrap}
.vals__head p{max-width:34ch;color:var(--muted)}
.vals{display:flex;gap:12px;height:min(72vh,640px)}
.val{position:relative;flex:1;min-width:0;border-radius:24px;padding:clamp(22px,2.4vw,36px);overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;transition:flex .9s var(--ease);cursor:pointer;outline-offset:4px}
.val:nth-child(1){background:var(--bg-3)}
.val:nth-child(2){background:var(--fg);color:var(--bg)}
.val:nth-child(3){background:var(--accent);color:var(--bg)}
.val:nth-child(4){background:#2a2a30}
.val.is-open{flex:3.2}
.val__n{font-size:14px;font-variant-numeric:tabular-nums;opacity:.6;display:flex;justify-content:space-between}
.val__n svg{width:22px;height:22px;transition:transform .6s var(--ease)}
.val.is-open .val__n svg{transform:rotate(45deg)}
.val__word{position:absolute;right:-.05em;top:42%;transform:translateY(-50%);font-family:var(--serif);font-style:italic;font-size:clamp(90px,13vw,230px);line-height:.8;opacity:0;transition:opacity .6s,transform .9s var(--ease);pointer-events:none;white-space:nowrap}
.val.is-open .val__word{opacity:.16;transform:translateY(-50%) translateX(-4%)}
.val h3{font-size:clamp(28px,3.2vw,54px);font-weight:600;letter-spacing:-.045em;line-height:1;white-space:nowrap}
.val__body{max-width:40ch;opacity:0;transform:translateY(16px);transition:opacity .5s,transform .7s var(--ease);margin-top:16px}
.val__body b{display:block;font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(22px,1.8vw,30px);line-height:1.1;margin-bottom:10px}
.val__body p{font-size:15px;opacity:.85}
.val.is-open .val__body{opacity:1;transform:none;transition-delay:.25s}
@media (max-width:900px){.vals{flex-direction:column;height:auto}.val{min-height:0}.val .val__body{opacity:1;transform:none}.val__word{opacity:.12}.val h3{white-space:normal}}

/* parcours */
.tl{display:grid;grid-template-columns:1fr 1.3fr;gap:clamp(32px,6vw,120px)}
.tl__aside{position:sticky;top:16vh;align-self:start}
.tl__year{font-size:clamp(90px,15vw,250px);font-weight:700;letter-spacing:-.07em;line-height:.8;display:flex;overflow:hidden;padding-bottom:.04em;font-variant-numeric:tabular-nums}
.tl__year span{display:inline-block}
.tl__year span:nth-child(n+3){color:var(--accent)}
.tl__aside p{color:var(--muted);margin-top:24px;max-width:30ch}
.tl__list{position:relative;padding-left:40px;overflow-x:clip}
.tl__ol{list-style:none}
.tl__list::before,.tl__progress{content:"";position:absolute;left:7px;top:8px;bottom:8px;width:1px;background:var(--line)}
.tl__progress{background:var(--accent);transform-origin:top;transform:scaleY(1)}
.tl__item{position:relative;padding:0 0 clamp(48px,6vw,88px)}
.tl__item:last-child{padding-bottom:0}
.tl__item::before{content:"";position:absolute;left:-40px;top:6px;width:15px;height:15px;border-radius:50%;background:var(--bg);border:1px solid var(--muted);transition:background .4s,border-color .4s,box-shadow .4s}
.tl__item.is-active::before{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 6px rgba(226,35,26,.18)}
.tl__when{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.tl__item h3{font-size:clamp(26px,2.6vw,42px);font-weight:600;letter-spacing:-.04em;line-height:1.05;margin:8px 0 6px}
.tl__where{color:var(--muted);font-size:14px;margin-bottom:14px}
.tl__item p{max-width:46ch;color:rgba(242,239,234,.8)}
.tl__item ul{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin-top:16px}
.tl__item li{font-size:12px;border:1px solid var(--line);border-radius:99px;padding:5px 12px;color:var(--muted)}
@media (max-width:820px){.tl{grid-template-columns:minmax(0,1fr)}.tl__item h3{overflow-wrap:break-word;hyphens:auto}.tl__aside{position:static}.tl__year{font-size:clamp(80px,26vw,140px)}}

/* services détaillés */
.offer__list{border-top:1px solid var(--line)}
.offer{border-bottom:1px solid var(--line)}
.offer__head{width:100%;display:grid;grid-template-columns:80px 1fr auto 56px;align-items:center;gap:24px;padding:clamp(22px,2.6vw,40px) 0;text-align:left}
.offer__num{width:48px;height:48px;border-radius:50%;background:var(--fg);color:var(--bg);display:grid;place-items:center;font-weight:700;font-size:20px;transition:transform .5s var(--ease)}
.offer__head:hover .offer__num,.offer.is-open .offer__num{transform:scale(1.1) rotate(-8deg)}
.offer__title{font-size:clamp(30px,5vw,84px);font-weight:600;letter-spacing:-.05em;line-height:1;color:var(--muted);transition:transform .6s var(--ease),color .4s}
.offer__head:hover .offer__title,.offer.is-open .offer__title{transform:translateX(20px);color:var(--fg)}
.offer__price{font-size:15px;color:var(--fg);text-align:right;white-space:nowrap}
.offer__price small,.offer__meta dd small{display:block;font-size:13px;color:var(--muted);font-weight:400;letter-spacing:0}
.offer__icon{width:56px;height:56px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;transition:border-color .4s,color .4s,transform .5s var(--ease)}
.offer__icon svg{width:18px;height:18px}
.offer.is-open .offer__icon{border-color:var(--fg);color:var(--fg);transform:rotate(45deg)}
.offer__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .7s var(--ease)}
.offer.is-open .offer__panel{grid-template-rows:1fr}
.offer__panel > div{overflow:hidden}
.offer__inner{display:grid;grid-template-columns:80px 1.1fr 1fr .8fr;gap:24px;padding:0 0 clamp(32px,4vw,56px)}
.offer__inner > p{grid-column:2;font-size:clamp(17px,1.3vw,20px);line-height:1.5;color:rgba(242,239,234,.85)}
.offer__inner h4{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:500;margin-bottom:14px}
.offer__inner ul{list-style:none;display:grid;gap:10px}
.offer__inner li{display:flex;gap:10px;align-items:baseline}
.offer__inner li::before{content:"";width:8px;height:8px;flex:none;background:var(--muted);clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)}
.offer__meta dl{display:grid;gap:14px}
.offer__meta dt{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}
.offer__meta dd{font-size:18px;font-weight:500;letter-spacing:-.02em}
.offer__meta a{display:inline-block;margin-top:20px;color:var(--fg);font-weight:600;border-bottom:1px solid currentColor}
/* services : lignes de métro (crème, la ligne survolée passe en rouge) */
.metro__head{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap;margin-bottom:clamp(40px,5vw,72px)}
.sign{display:inline-flex;align-items:center;gap:16px;border:2px solid var(--fg);border-radius:10px;padding:12px 24px;outline:1px solid var(--fg);outline-offset:5px;margin:6px 6px 28px}
.sign b{font-size:clamp(22px,2.4vw,34px);font-weight:600;letter-spacing:-.02em}
.sign span{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}
.metro__title{font-size:clamp(34px,4.6vw,76px);font-weight:600;letter-spacing:-.045em;line-height:1;max-width:15ch}
.metro__title em{color:var(--accent)}
.metro__head p{max-width:34ch;color:var(--muted)}
.metro{border-top:1px solid var(--line)}
.mline{display:grid;grid-template-columns:minmax(260px,34%) 1fr;gap:clamp(24px,3vw,56px);align-items:center;padding:clamp(28px,3vw,44px) 0;border-bottom:1px solid var(--line)}
.mline__id{display:flex;align-items:center;gap:18px}
.mline__n{width:clamp(48px,4vw,60px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:var(--fg);color:var(--bg);font-weight:700;font-size:clamp(20px,1.8vw,26px);flex:none;transition:transform .5s var(--ease)}
.mline:hover .mline__n{transform:scale(1.12) rotate(-8deg)}
.mline__id h3{font-size:clamp(24px,2.6vw,40px);font-weight:600;letter-spacing:-.04em;line-height:1.02}
.mline__track{position:relative;height:76px}
.mline__rail{position:absolute;left:0;right:0;top:23px;height:6px;border-radius:6px;background:rgba(242,239,234,.28);transform-origin:left;transform:scaleX(0);transition:background .4s}
.mline__st{position:absolute;top:15px;width:0;display:flex;flex-direction:column;align-items:center;gap:12px}
.mline__st i{width:22px;height:22px;border-radius:50%;background:var(--bg);border:4px solid var(--fg);flex:none;transition:border-color .4s,background .4s}
.mline__st span{font-size:13px;white-space:nowrap;color:var(--muted)}
.mline__st:last-child i{background:var(--fg)}
.mline__st:last-child span{color:var(--fg)}
.mline:hover .mline__rail{background:var(--accent)}
.mline:hover .mline__st i{border-color:var(--accent)}
.mline:hover .mline__st:last-child i{background:var(--accent)}
@media (max-width:820px){.mline{grid-template-columns:1fr;gap:18px}.mline__st span{font-size:11px;white-space:normal;text-align:center;width:9ch}}
.offer__metro{grid-column:2/-1;padding-bottom:8px}
.offer .mline__rail{transition:transform 1.1s var(--ease) .15s,background .4s}
.offer.is-open .mline__rail{transform:scaleX(1)}
.offer .mline__st{opacity:0;transform:translateY(10px);transition:opacity .4s,transform .5s var(--ease)}
.offer.is-open .mline__st{opacity:1;transform:none}
.offer:hover .mline__rail{background:var(--accent)}
.offer:hover .mline__st i{border-color:var(--accent)}
.offer:hover .mline__st:last-child i{background:var(--accent)}
@media (max-width:900px){.offer__metro{grid-column:auto}.offer__num{width:36px;height:36px;font-size:15px}}
@media (max-width:900px){.offer__head{grid-template-columns:36px 1fr 44px}.offer__price{display:none}.offer__icon{width:44px;height:44px}.offer__inner{grid-template-columns:1fr;padding-left:36px}.offer__inner > p{grid-column:auto}}

/* compétences */
.skills{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,7vw,140px)}
.skills h3{font-size:clamp(26px,2.4vw,38px);font-weight:600;letter-spacing:-.04em;margin-bottom:32px}
.skills h3 em{color:var(--accent)}
.skill{padding:18px 0;border-bottom:1px solid var(--line)}
.skill__top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px;gap:16px}
.skill__top span{font-size:clamp(17px,1.4vw,21px);font-weight:500;letter-spacing:-.02em}
.skill__top b{font-variant-numeric:tabular-nums;font-weight:500;color:var(--muted);font-size:14px}
.skill__bar{height:3px;background:var(--line);border-radius:3px;overflow:hidden}
.skill__bar i{display:block;height:100%;width:calc(var(--v) * 1%);background:linear-gradient(90deg,var(--accent-deep),var(--accent));transform-origin:left;border-radius:3px}
.tools{display:flex;flex-wrap:wrap;gap:10px}
.tool{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:99px;padding:10px 16px 10px 10px;font-size:15px;font-weight:500;transition:background .4s,color .4s,border-color .4s,transform .5s var(--ease);transform:rotate(var(--r,0deg))}
.tool i{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:11px;font-weight:700;letter-spacing:-.02em;background:var(--bg-3);color:var(--fg);transition:background .4s,color .4s}
.tool:hover{background:var(--fg);color:var(--bg);border-color:var(--fg);transform:rotate(0) translateY(-4px)}
.tool:hover i{background:var(--accent);color:var(--bg)}
.tools__cat{width:100%;font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:22px 0 4px}
.tools__cat:first-child{margin-top:0}
@media (max-width:820px){.skills{grid-template-columns:1fr}}

/* fun facts */
.facts__head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:40px;flex-wrap:wrap}
.facts__hint{display:inline-flex;align-items:center;gap:10px;font-size:14px;color:var(--muted)}
.facts__hint svg{width:20px;height:20px;animation:bob 2s ease-in-out infinite}
.facts__board{position:relative;height:min(82vh,760px);border:1px dashed var(--line);border-radius:28px;overflow:hidden;background:radial-gradient(circle at 1px 1px,rgba(242,239,234,.09) 1px,transparent 0) 0 0/28px 28px}
.fact{position:absolute;left:var(--x);top:var(--y);width:clamp(220px,22vw,300px);padding:24px;border-radius:20px;transform:rotate(var(--r));box-shadow:0 30px 60px -20px rgba(0,0,0,.6);cursor:grab;user-select:none;touch-action:none}
.fact:active{cursor:grabbing}
.fact b{display:block;font-size:clamp(40px,4vw,64px);font-weight:700;letter-spacing:-.06em;line-height:.95;margin-bottom:12px}
.fact p{font-size:15px;line-height:1.4}
.fact small{display:block;margin-top:16px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;opacity:.55}
.fact:nth-child(6n+1){background:var(--fg);color:var(--bg)}
.fact:nth-child(6n+2){background:var(--accent);color:var(--bg)}
.fact:nth-child(6n+3){background:var(--bg-3);color:var(--fg);border:1px solid var(--line)}
.fact:nth-child(6n+4){background:#f2efea;color:var(--bg)}
.fact:nth-child(6n+5){background:#2a2a30;color:var(--fg)}
.fact:nth-child(6n+6){background:#b9c7ff;color:var(--bg)}
.fact:nth-child(6n+4) b,.fact:nth-child(6n+1) b{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.02em}
@media (max-width:820px),(pointer:coarse){
  .facts__board{height:auto;border:0;background:none;display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:10px 2px 24px;border-radius:0;-webkit-overflow-scrolling:touch}
  .fact{position:relative;left:auto;top:auto;flex:none;width:min(78vw,300px);scroll-snap-align:start;cursor:auto;touch-action:auto}
  .facts__hint .h-drag{display:none}
}
@media (min-width:821px) and (pointer:fine){.facts__hint .h-swipe{display:none}}

.cta__links{display:flex;gap:28px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:40px;color:var(--muted);font-size:15px}
.cta__links a{border-bottom:1px solid var(--line);padding-bottom:2px;transition:color .3s,border-color .3s}
.cta__links a:hover{color:var(--fg);border-color:var(--accent)}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
