/* ===== Hero « signal » — Portfolio ===== */
:root {
    --rw-bone: #EEEEE8;
    --rw-ink: #0D0E10;
    --rw-brass: #D4FF3A;   /* couleur d'accent (vert citron) */
    --rw-stone: #75766F;
    --rw-cloud: #FFFFFF;
    --rw-night: #08090A;
    --rw-pink: #FF3E88;
    --font-d: 'Funnel Display', Inter, -apple-system, Arial, sans-serif;
    --font-b: 'Funnel Sans', Inter, system-ui, -apple-system, Arial, sans-serif;
    --font-m: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
    --maxw: clamp(1280px, 92vw, 1520px);
}
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; overflow-x: clip; }
body { font-family: var(--font-b); background: var(--rw-night); color: var(--rw-cloud); }
.f-d { font-family: var(--font-d); }
.f-m { font-family: var(--font-m); }
a { color: inherit; }
:where(a[href], button):focus-visible { outline: 3px solid var(--rw-cloud); outline-offset: 2px; box-shadow: 0 0 0 2px var(--rw-night); }

/* apparition progressive */
.rise { opacity: 0; translate: 0 16px; transition: opacity .9s ease var(--d, 0ms), translate 1s cubic-bezier(.2,.8,.2,1) var(--d, 0ms); }
.rwh-nav.rise { translate: 0 -10px; }
.rwh.is-in .rise { opacity: 1; translate: 0 0; }

/* ===== Boutons ===== */
.rw-btn{position:relative;display:inline-flex;padding:0;min-height:56px;border-radius:999px;text-decoration:none;cursor:pointer;isolation:isolate;white-space:nowrap;font-size:14px;font-weight:600;letter-spacing:-.005em;border:0;color:var(--fg);transition:color .35s,transform .45s cubic-bezier(.34,1.56,.64,1)}
.rw-face{position:relative;z-index:1;display:inline-flex;align-items:center;gap:14px;width:100%;min-height:inherit;padding:0 10px 0 26px;border-radius:inherit;background:var(--face);-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);box-shadow:inset 0 0 0 1px var(--rim);overflow:hidden;isolation:isolate}
.rw-fill{position:absolute;z-index:0;inset:0;background:var(--fill);border-radius:inherit;clip-path:circle(0% at 100% 50%);transition:clip-path .7s cubic-bezier(.7,0,.2,1)}
.rw-btn:hover .rw-fill,.rw-btn:focus-visible .rw-fill{clip-path:circle(150% at 100% 50%)}
.rw-lbl{position:relative;z-index:1;display:inline-flex;flex-direction:column;justify-content:center;line-height:1.15}
.rw-roll{display:block;height:1.2em;overflow:hidden;line-height:1.2}
.rw-l1,.rw-l2{display:block;transition:translate .5s cubic-bezier(.7,0,.2,1)}
.rw-btn:hover .rw-l1,.rw-btn:hover .rw-l2,.rw-btn:focus-visible .rw-l1,.rw-btn:focus-visible .rw-l2{translate:0 -100%}
.rw-arr{position:relative;z-index:1;display:grid;place-items:center;width:38px;height:38px;flex:none;border-radius:50%;background:var(--chip);color:var(--chipfg);overflow:hidden;transition:background .4s,color .4s}
.rw-arr>span{grid-area:1/1;display:grid;place-items:center;transition:transform .55s cubic-bezier(.7,0,.2,1)}
.rw-arr svg{width:15px;height:15px}
.rw-a2{transform:translate(-160%,160%)}
.rw-btn:hover .rw-a1,.rw-btn:focus-visible .rw-a1{transform:translate(160%,-160%)}
.rw-btn:hover .rw-a2,.rw-btn:focus-visible .rw-a2{transform:none}
.rw-btn:hover .rw-arr,.rw-btn:focus-visible .rw-arr{background:var(--chip2);color:var(--chipfg2)}
.rw-ping{position:absolute;z-index:3;right:-3px;top:-5px;width:22px;height:22px;pointer-events:none}
.rw-ping b{position:absolute;inset:0;display:block;border-radius:999px;background:var(--rw-pink);color:var(--rw-ink);font:600 10px/22px var(--font-m);text-align:center;overflow:hidden;scale:0;transition:scale .45s cubic-bezier(.34,1.56,.64,1);box-shadow:0 0 0 2.5px var(--rw-night)}
.rw-ping b span{display:block;height:22px;transition:translate .45s cubic-bezier(.7,0,.2,1) .2s}
.rw-ping-r{position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 2px var(--rw-brass);opacity:0}
.rw-btn:hover .rw-ping b,.rw-btn:focus-visible .rw-ping b{scale:1;transition-delay:.12s}
.rw-btn:hover .rw-ping b span,.rw-btn:focus-visible .rw-ping b span{translate:0 -100%}
.rw-btn:hover .rw-ping-r,.rw-btn:focus-visible .rw-ping-r{animation:rw-pingr 1.2s cubic-bezier(.2,.6,.3,1) .25s 2}
@keyframes rw-pingr{0%{opacity:.95;transform:scale(1)}100%{opacity:0;transform:scale(3.2)}}
.rw-btn:hover,.rw-btn:focus-visible{color:var(--fg2)}
.rw-btn:hover{transform:translate(var(--mx,0px),var(--my,0px))}
.rw-btn:active{transform:translate(var(--mx,0px),var(--my,0px)) scale(.97)!important;transition-duration:.12s}
.rw-btn.rw-solid{--face:var(--rw-ink);--rim:transparent;--fill:var(--rw-brass);--fg:var(--rw-bone);--fg2:var(--rw-ink);--chip:var(--rw-brass);--chipfg:var(--rw-ink);--chip2:var(--rw-ink);--chipfg2:var(--rw-brass)}
.rw-btn.rw-ghost{--face:color-mix(in srgb,var(--rw-cloud) 14%,transparent);--rim:color-mix(in srgb,var(--rw-cloud) 38%,transparent);--fill:var(--rw-cloud);--fg:var(--rw-cloud);--fg2:var(--rw-ink);--chip:color-mix(in srgb,var(--rw-cloud) 18%,transparent);--chipfg:var(--rw-cloud);--chip2:var(--rw-ink);--chipfg2:var(--rw-cloud)}
.rw-btn.rw-quiet{min-height:44px;font-size:13px;--face:var(--rw-brass);--rim:transparent;--fill:var(--rw-ink);--fg:var(--rw-ink);--fg2:var(--rw-bone);--chip:var(--rw-ink);--chipfg:var(--rw-brass);--chip2:var(--rw-brass);--chipfg2:var(--rw-ink)}
.rw-btn.rw-quiet .rw-arr{width:30px;height:30px}
.rw-btn.rw-quiet .rw-face{padding-left:18px;gap:10px;padding-right:7px}
.rw-port{width:7px;height:7px;flex:none;border-radius:50%;background:var(--rw-pink);animation:rw-blink 1.4s ease-in-out infinite}
@keyframes rw-blink{50%{opacity:.25}}

/* ===== Section ===== */
.rwh{position:relative;width:100%;height:clamp(720px,100svh,1080px);overflow:hidden;background:var(--rw-night);color:var(--rw-cloud);isolation:isolate}
.rwh.has-cur,.rwh.has-cur *{cursor:none!important}
.rwh-bg{position:absolute;inset:0;z-index:0;overflow:hidden;translate:0 calc(var(--sy,0)*14%)}
.rwh-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) brightness(.62) contrast(1.05);transform:scale(1.12);transition:transform 2.2s cubic-bezier(.2,.8,.2,1),opacity .6s}
.rwh.is-in .rwh-img{transform:scale(1)}
.rwh.is-gl .rwh-img{opacity:0}
.rwh-cv{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .8s}
.rwh.is-gl .rwh-cv{opacity:1}
.rwh-shade{position:absolute;inset:0;pointer-events:none;background:radial-gradient(60% 46% at 50% 50%,color-mix(in srgb,var(--rw-night) 52%,transparent),transparent 72%),linear-gradient(180deg,color-mix(in srgb,var(--rw-night) 55%,transparent) 0,transparent 18%)}

/* menu */
.rwh-nav{position:absolute;z-index:5;left:0;right:0;top:0;display:flex;align-items:center;gap:28px;max-width:var(--maxw);margin:0 auto;padding:22px clamp(20px,3.2vw,48px) 0}
.rwh-logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none;font-size:21px;letter-spacing:-.03em;font-weight:700}
.rwh-links{display:flex;gap:4px;list-style:none;margin:0 auto;padding:5px;border-radius:999px;background:color-mix(in srgb,var(--rw-night) 38%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rw-cloud) 14%,transparent)}
.rwh-links a{display:block;padding:9px 16px;border-radius:999px;font-size:14px;text-decoration:none;color:color-mix(in srgb,var(--rw-cloud) 86%,transparent);transition:background .3s,color .3s}
.rwh-links a:hover{background:var(--rw-cloud);color:var(--rw-ink)}
.rwh-hint{position:absolute;z-index:4;right:clamp(20px,3.2vw,48px);top:96px;display:flex;align-items:center;gap:10px;margin:0;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:color-mix(in srgb,var(--rw-cloud) 70%,transparent)}
.rwh-hint-r{position:relative;width:14px;height:14px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--rw-brass)}
.rwh-hint-r::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 1.5px var(--rw-brass);animation:rwh-ping 1.8s cubic-bezier(.2,.6,.3,1) infinite}
@keyframes rwh-ping{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(2.8)}}

/* texte central */
.rwh-in{position:absolute;z-index:3;inset:0;display:grid;place-items:center;padding:110px clamp(20px,3.2vw,48px) 180px;pointer-events:none}
.rwh-copy{display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px;max-width:1100px;pointer-events:auto}
.rwh-ann{display:inline-flex;align-items:center;gap:10px;margin:0;padding:8px 14px 8px 12px;border-radius:999px;font-size:12px;letter-spacing:.04em;background:color-mix(in srgb,var(--rw-night) 45%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rw-cloud) 16%,transparent)}
.rwh-h1{margin:0;font-size:clamp(56px,7.4vw,124px);line-height:.92;letter-spacing:-.05em;font-weight:700;text-wrap:balance;text-shadow:0 2px 40px color-mix(in srgb,var(--rw-night) 45%,transparent)}
.rwh-line{display:block}
.rwh-w{display:inline-block;overflow:hidden;padding:0 .02em .1em;margin-bottom:-.1em;vertical-align:top}
.rwh-wi{display:inline-block;transform:translateY(105%);transition:transform 1.1s cubic-bezier(.2,.8,.2,1)}
.rwh.is-in .rwh-wi{transform:none}
.rwh-wi.is-acc{position:relative;color:var(--rw-ink);padding:0 .08em;margin:0 -.04em;isolation:isolate;text-shadow:none}
.rwh-wi.is-acc::before{content:"";position:absolute;z-index:-1;left:0;right:0;top:.12em;bottom:.02em;border-radius:.16em;background:var(--rw-brass);transform:scaleX(0);transform-origin:left;transition:transform .9s cubic-bezier(.7,0,.2,1) .95s}
.rwh.is-in .rwh-wi.is-acc::before{transform:none}
.rwh-sub{margin:0;max-width:600px;font-size:18px;line-height:1.5;color:color-mix(in srgb,var(--rw-cloud) 86%,transparent);text-shadow:0 1px 18px color-mix(in srgb,var(--rw-night) 70%,transparent)}
.rwh-btns{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:6px}

/* bulles */
.rwh-chips{position:absolute;inset:0;z-index:2;pointer-events:none}
.rwh-chip{position:absolute;display:inline-flex;align-items:center;gap:9px;padding:7px 13px 7px 7px;border-radius:999px;background:var(--rw-cloud);color:var(--rw-ink);font:12px var(--font-m);white-space:nowrap;box-shadow:0 14px 34px -12px rgba(0,0,0,.6);translate:-50% calc(-100% - 18px);transform-origin:50% 100%;scale:.4;opacity:0;transition:scale .5s cubic-bezier(.34,1.56,.64,1),opacity .35s,translate .6s cubic-bezier(.2,.8,.2,1)}
.rwh-chip.is-up{scale:1;opacity:1}
.rwh-chip.is-out{translate:-50% calc(-100% - 40px)}
.rwh-chip::after{content:"";position:absolute;left:50%;bottom:-16px;width:1.5px;height:14px;background:var(--rw-cloud);translate:-50% 0;opacity:.8}
.rwh-chip-i{display:grid;place-items:center;min-width:26px;height:26px;padding:0 6px;border-radius:999px;background:var(--rw-brass);color:var(--rw-ink);font:700 12px var(--font-d)}
.rwh-chip-p{position:absolute;right:-3px;top:-3px;width:10px;height:10px;border-radius:50%;background:var(--rw-pink);box-shadow:0 0 0 2px var(--rw-cloud)}

/* bandeau du bas */
.rwh-strip{position:absolute;z-index:4;left:0;right:0;bottom:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:24px;max-width:var(--maxw);margin:0 auto;padding:0 clamp(20px,3.2vw,48px) 36px}
.rwh-count-l{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:color-mix(in srgb,var(--rw-cloud) 72%,transparent)}
.rwh-live{width:7px;height:7px;border-radius:50%;background:var(--rw-brass);animation:rwh-live 1.6s infinite}
@keyframes rwh-live{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--rw-brass) 70%,transparent)}100%{box-shadow:0 0 0 10px transparent}}
.rwh-count-n{margin:0;font-size:clamp(34px,3.2vw,52px);line-height:1;letter-spacing:-.04em;font-weight:700;font-variant-numeric:tabular-nums}
.rwh-roll{display:inline-flex}
.rwh-rd{display:inline-block;height:1em;overflow:hidden;line-height:1;vertical-align:top}
.rwh-rd>span{display:flex;flex-direction:column;transition:transform .7s cubic-bezier(.2,.8,.2,1)}
.rwh-rd i{display:block;height:1em;font-style:normal}
.rwh-tags{display:flex;gap:6px;list-style:none;margin:0;padding:0;font-size:12px}
.rwh-tags li{display:inline-flex;align-items:center;gap:8px;padding:8px 13px;border-radius:999px;background:color-mix(in srgb,var(--rw-night) 45%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rw-cloud) 16%,transparent)}
.rwh-tags li span{color:var(--rw-brass)}
.rwh-proof{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin:0;font-size:12px;letter-spacing:.02em;text-align:right}
.rwh-proof-t{color:var(--rw-brass);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.rwh-dim{color:color-mix(in srgb,var(--rw-cloud) 66%,transparent)}

/* curseur */
.rwh-cur{position:fixed;left:0;top:0;z-index:2147483647;pointer-events:none;will-change:transform;display:none}
.rwh.has-cur .rwh-cur{display:block}
.rwh-cur-d,.rwh-cur-r{position:absolute;left:0;top:0;translate:-50% -50%;border-radius:50%}
.rwh-cur-d{width:8px;height:8px;background:var(--rw-brass);transition:opacity .3s}
.rwh-cur-r{display:grid;place-items:center;width:74px;height:74px;box-shadow:inset 0 0 0 1.5px var(--rw-brass);transition:width .45s cubic-bezier(.34,1.56,.64,1),height .45s cubic-bezier(.34,1.56,.64,1),background .3s,box-shadow .3s}
.rwh-cur-r b{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--rw-brass);font-weight:500;translate:0 22px;transition:opacity .25s}
.rwh-cur[data-m="out"]{opacity:0}
.rwh-cur[data-m="dot"] .rwh-cur-r{width:28px;height:28px;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--rw-cloud) 60%,transparent)}
.rwh-cur[data-m="dot"] .rwh-cur-r b,.rwh-cur[data-m="btn"] .rwh-cur-r b{opacity:0}
.rwh-cur[data-m="btn"] .rwh-cur-r{width:10px;height:10px;background:var(--rw-brass);box-shadow:none}
.rwh-cur[data-m="btn"] .rwh-cur-d{opacity:0}
.rwh-cur.is-ping .rwh-cur-r::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 2px var(--rw-brass);animation:rwh-ping .9s cubic-bezier(.2,.6,.3,1)}

/* tablette */
@media (max-width:1099px){
    .rwh-links,.rwh-tags{display:none}
    .rwh-nav .rw-btn{margin-left:auto}
    .rwh-h1{font-size:clamp(52px,8vw,84px)}
    .rwh-strip{grid-template-columns:1fr 1fr}
}
/* mobile */
@media (max-width:809px){
    .rwh{height:auto;min-height:100svh;display:flex;flex-direction:column}
    .rwh-nav{position:relative;padding:14px 16px 0;gap:12px}
    .rwh-logo{font-size:19px}
    .rwh-hint{display:none}
    .rwh-in{position:relative;inset:auto;padding:56px 16px 36px;flex:1}
    .rwh-copy{gap:18px}
    .rwh-h1{font-size:clamp(40px,11.4vw,54px)}
    .rwh-sub{font-size:16px}
    .rwh-btns{flex-direction:column;align-items:stretch;width:100%}
    .rwh-btns .rw-btn{width:100%}
    .rwh-strip{position:relative;grid-template-columns:1fr;gap:16px;padding:0 16px 28px}
    .rwh-tags{display:flex;flex-wrap:wrap}
    .rwh-proof{align-items:flex-start;text-align:left}
    .rwh-chip{font-size:11px}
}
@media (max-width:600px),(hover:none){
    .rw-btn{white-space:normal;text-align:left;line-height:1.25;max-width:100%}
    .rw-roll{height:auto}
    .rw-l2,.rw-ping{display:none}
}
@media (max-width:1240px){.rwh-links a{padding:9px 11px}}
@media (prefers-reduced-motion:reduce){
    .rwh *{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
