/* Fenua Renov · nettoyage de tôle à la lance (common/js/lance.js, attribut data-lance). Autonome : variables --fr-*
   par défaut ci-dessous, redéfinies par le site. */
:where(:root) { --fr-night: #0B2545; --fr-lagoon: #1FA2C9; --fr-sky: #6EC6F2; --fr-turq: #2EC4B6; --fr-rose: #E0633F; --fr-rose-soft: #F9D3C4; --fr-red: #E0633F; --fr-pearl: #FBFAF6; --fr-sand: #F3E9D7; }
.fr-lance {
  --l-display: var(--f-display, 'Fraunces', Georgia, serif);
  --l-text: var(--f-text, 'Sora', system-ui, sans-serif);
  --l-mono: var(--f-mono, 'JetBrains Mono', ui-monospace, monospace);
  --l-kw: var(--f-kw, 'Instrument Serif', Georgia, serif);
  position: relative; isolation: isolate; background: var(--fr-night); color: var(--fr-pearl); font-family: var(--l-text);
  padding: clamp(5rem, 9vw, 8.5rem) 0; overflow: clip; overflow-clip-margin: 140px;
  background-image: radial-gradient(90% 70% at 20% 0%, rgba(31, 162, 201, .25), transparent 60%), radial-gradient(70% 60% at 100% 100%, rgba(46, 196, 182, .14), transparent 60%);
}
.fr-lance *, .fr-lance *::before, .fr-lance *::after { box-sizing: border-box; }
.fr-lance > .swell { --bg: var(--fr-night); }
.fr-lance__ref { position: absolute; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; opacity: .06; contain: strict; }
.fr-lance__ref i { position: absolute; left: -760px; top: -760px; width: calc(100% + 760px); height: calc(100% + 760px); background: url(../tex/caustique.webp) 0 0 / 760px 760px; animation: fr-lance-caust 60s linear infinite; }
.fr-lance__ref i + i { display: none; }
@keyframes fr-lance-caust { to { transform: translate3d(760px, 760px, 0); } }
.fr-lance__wrap { width: min(92rem, 100%); margin-inline: auto; padding-inline: var(--gutter, clamp(16px, 4.4vw, 72px)); }

/* en-tête */
.fr-lance__head { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 1.4rem clamp(20px, 4vw, 72px); align-items: end; margin-bottom: clamp(2rem, 3.6vw, 3.2rem); }
.fr-lance__kicker { display: inline-flex; align-items: center; gap: .8rem; margin: 0; font: 500 .7rem/1 var(--l-mono); letter-spacing: .2em; text-transform: uppercase; color: var(--fr-sky); }
.fr-lance__kicker b { color: var(--fr-turq); font-weight: 500; }
.fr-lance__title { margin: 1.2rem 0 0; font: 380 clamp(2.3rem, 1.3rem + 3.2vw, 4.4rem)/.98 var(--l-display); letter-spacing: -.022em; font-variation-settings: "opsz" 144, "SOFT" 40, "WONK" 1; text-wrap: balance; }
.fr-lance__title em { font-style: italic; font-weight: 330; color: var(--fr-turq); font-variation-settings: "opsz" 144, "SOFT" 100, "WONK" 1; }
.fr-lance__lede { margin: 0; font-size: clamp(1rem, .95rem + .3vw, 1.18rem); line-height: 1.65; color: rgba(251, 250, 246, .78); max-width: 46ch; }

.fr-lance__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(16rem, 21rem); gap: 1.6rem; align-items: start; }
/* scène */
.fr-lance__app { position: relative; min-width: 0; }
.fr-lance__stage {
  position: relative; aspect-ratio: var(--l-ratio, 16 / 9); overflow: hidden; background: #0d2a40; outline: none; border-radius: 28px;
  box-shadow: 0 0 0 1px rgba(110, 198, 242, .2), 0 50px 90px -40px rgba(0, 0, 0, .75);
  touch-action: pan-y; user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent;
}
.fr-lance__app[data-ready]:not(.is-touch) .fr-lance__stage { cursor: none; }
.fr-lance__app.is-grab .fr-lance__stage { touch-action: none; box-shadow: 0 0 0 3px var(--fr-turq), 0 50px 90px -40px rgba(0, 0, 0, .75); }
.fr-lance__stage:focus-visible { box-shadow: 0 0 0 3px var(--fr-turq); }
.fr-lance__poster, .fr-lance__gl, .fr-lance__fx { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.fr-lance__poster { object-fit: cover; filter: blur(22px) brightness(.45) saturate(.8); transform: scale(1.12); }
.fr-lance__stage::after { content: ''; position: absolute; z-index: 1; left: 50%; top: 50%; width: var(--l-img-w, 94%); height: var(--l-img-h, 94%); translate: -50% -50%; box-shadow: 0 0 0 1px rgba(251, 250, 246, .22), 0 30px 60px -20px rgba(0, 0, 0, .7); pointer-events: none; }
.fr-lance__gl { opacity: 0; transition: opacity .5s ease; }
.fr-lance__app[data-ready] .fr-lance__gl { opacity: 1; }
.fr-lance__fx { pointer-events: none; }
.fr-lance__tag { position: absolute; top: 18px; right: 18px; z-index: 3; padding: .5rem .75rem; border-radius: 999px; background: rgba(7, 26, 51, .6); color: var(--fr-pearl); font: 500 .6rem/1 var(--l-mono); letter-spacing: .16em; text-transform: uppercase; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); pointer-events: none; }
/* pression */
.fr-lance__press { position: absolute; top: 14px; left: 14px; z-index: 4; display: flex; align-items: center; gap: .3rem; padding: .3rem; border-radius: 999px; background: rgba(7, 26, 51, .66); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: inset 0 0 0 1px rgba(110, 198, 242, .25); cursor: auto; }
.fr-lance__press span { display: inline-flex; align-items: center; gap: .35rem; padding: 0 .55rem 0 .45rem; font: 500 .58rem/1 var(--l-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--fr-sky); }
.fr-lance__press span svg { width: .95rem; height: .95rem; color: var(--fr-turq); }
.fr-lance__press button { border: 0; border-radius: 999px; padding: .55rem .85rem; background: transparent; color: rgba(251, 250, 246, .78); font: 600 .66rem/1 var(--l-text); letter-spacing: .1em; text-transform: uppercase; cursor: pointer; transition: background .3s, color .3s; }
.fr-lance__press button[aria-checked="true"] { background: var(--fr-turq); color: var(--fr-night); }
/* la lance */
.fr-lance__buse { position: absolute; left: 0; top: 0; z-index: 2; width: 660px; height: 50px; margin-top: -25px; transform-origin: 0 50%; pointer-events: none; opacity: 0; will-change: transform; filter: drop-shadow(0 12px 9px rgba(0, 0, 0, .4)); }
.fr-lance__buse svg { display: block; width: 100%; height: 100%; overflow: visible; }
/* consigne */
.fr-lance__hint { position: absolute; left: 50%; bottom: 18px; z-index: 3; transform: translateX(-50%); margin: 0; display: flex; align-items: center; gap: .6rem; white-space: nowrap; padding: .75rem 1.05rem; border-radius: 999px; background: rgba(7, 26, 51, .72); color: var(--fr-pearl); font: 500 .86rem/1.2 var(--l-text); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); transition: opacity .5s ease, transform .5s ease; pointer-events: none; }
.fr-lance__hint i { width: 8px; height: 8px; border-radius: 50%; background: var(--fr-turq); animation: fr-lance-pulse 1.8s ease-out infinite; }
.fr-lance__hint .t { display: none; }
.fr-lance__app.is-touch .fr-lance__hint .t { display: inline; } .fr-lance__app.is-touch .fr-lance__hint .d { display: none; }
.fr-lance__hint.is-off { opacity: 0; transform: translate(-50%, 8px); }
.fr-lance__app[data-mode="demo"] .fr-lance__hint { opacity: 0; }
@keyframes fr-lance-pulse { 0% { box-shadow: 0 0 0 0 rgba(46, 196, 182, .6); } 100% { box-shadow: 0 0 0 10px rgba(46, 196, 182, 0); } }
/* prendre la lance (écrans tactiles) */
.fr-lance__grab { display: none; }
.fr-lance__app.is-touch .fr-lance__grab { position: absolute; right: 12px; bottom: 12px; z-index: 4; display: inline-flex; align-items: center; gap: .45rem; min-height: 40px; padding: 0 .85rem 0 .7rem; border: 0; border-radius: 999px; background: var(--fr-rose); font-size: .62rem !important; color: #fff; font: 600 .7rem/1 var(--l-text); letter-spacing: .1em; text-transform: uppercase; box-shadow: 0 10px 24px -10px rgba(0, 0, 0, .6); }
.fr-lance__app.is-touch .fr-lance__grab svg { width: 22px; height: 22px; }
.fr-lance__app.is-grab .fr-lance__grab { background: var(--fr-pearl); color: var(--fr-night); }
.fr-lance__app.is-touch .fr-lance__hint { bottom: auto; top: 62px; left: 12px; right: auto; transform: none; white-space: normal; max-width: 70%; font-size: .78rem; border-radius: 14px; }
.fr-lance__app.is-touch .fr-lance__hint.is-off { transform: translateY(-6px); }
.fr-lance__app.is-grab .fr-lance__hint { opacity: 0; }

/* commandes */
.fr-lance__ctl { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 1.4rem; margin-top: 1.2rem; }
.fr-lance__meter { display: grid; grid-template-columns: auto auto minmax(8rem, 16rem); align-items: center; gap: .3rem 1rem; }
.fr-lance__num { font: 360 clamp(2.6rem, 2rem + 2vw, 3.6rem)/.9 var(--l-display); font-variation-settings: "opsz" 144, "SOFT" 100, "WONK" 1; font-variant-numeric: tabular-nums; min-width: 2.2ch; color: var(--fr-pearl); }
.fr-lance__num small { font-size: .45em; color: var(--fr-turq); margin-left: .1em; }
.fr-lance__ml { font: 500 .6rem/1.4 var(--l-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--fr-sky); }
.fr-lance__bar { height: 6px; border-radius: 999px; background: rgba(110, 198, 242, .16); overflow: hidden; }
.fr-lance__bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--fr-lagoon), var(--fr-turq)); transform-origin: 0 50%; transform: scaleX(0); transition: transform .3s ease; }
.fr-lance__acts { display: flex; flex-wrap: wrap; gap: .6rem; }
.fr-lance__btn { display: inline-flex; align-items: center; gap: .6rem; height: 3rem; padding: 0 1.2rem; border: 0; border-radius: 999px; cursor: pointer; font: 600 .7rem/1 var(--l-text); letter-spacing: .12em; text-transform: uppercase; color: var(--fr-pearl); background: transparent; box-shadow: inset 0 0 0 1px rgba(251, 250, 246, .32); transition: background .3s, color .3s, opacity .3s; }
.fr-lance__btn svg { width: 1.1rem; height: 1.1rem; }
.fr-lance__btn--main { background: var(--fr-pearl); color: var(--fr-night); box-shadow: none; }
.fr-lance__btn:hover { background: var(--fr-turq); color: var(--fr-night); }
.fr-lance__btn:disabled { opacity: .45; cursor: default; }
.fr-lance__app[data-done] .fr-lance__num { color: var(--fr-turq); }
.fr-lance__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.fr-lance__note { margin: 1.6rem 0 0; font-size: .8rem; color: rgba(251, 250, 246, .55); max-width: 70ch; }

/* fiche d'expert */
.fr-lance__fiche { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.fr-lance__fiche li { position: relative; display: grid; grid-template-columns: auto 1fr; gap: .9rem; padding: 1.2rem 1.2rem 1.25rem; border-radius: 20px; background: rgba(251, 250, 246, .045); box-shadow: inset 0 0 0 1px rgba(110, 198, 242, .16); }
.fr-lance__no { min-width: 2.4rem; display: block; padding-bottom: .35rem; border-bottom: 1px solid var(--fr-rose); font: italic 300 1.6rem/1 var(--f-display, "Fraunces", serif); color: var(--fr-pearl); }
.fr-lance__fiche h3 { margin: .2rem 0 .45rem; font: 450 1.15rem/1.2 var(--l-display); font-variation-settings: "opsz" 48, "SOFT" 60, "WONK" 1; }
.fr-lance__fiche p { margin: .25rem 0 0; font-size: .84rem; line-height: 1.5; color: rgba(251, 250, 246, .74); }
.fr-lance__fiche p.err { color: #FFBBA6; }

@media (max-width: 1000px) {
  .fr-lance__grid { grid-template-columns: minmax(0, 1fr); }
  .fr-lance__fiche { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .fr-lance__head { grid-template-columns: minmax(0, 1fr); }
  .fr-lance__stage { border-radius: 14px; --l-ratio: 16 / 10.5; }
  .fr-lance__fiche { grid-template-columns: minmax(0, 1fr); }
  .fr-lance__meter { grid-template-columns: auto auto 1fr; width: 100%; }
  .fr-lance__acts { width: 100%; }
  .fr-lance__btn { flex: 1 1 0; justify-content: center; padding: 0 .8rem; }
  .fr-lance__press span { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .fr-lance__ref i, .fr-lance__hint i { animation: none; }
}
