/* ============================================================
   GOLIMAR — site officiel
   DA: noir & blanc + bleu électrique / brutaliste / VHS glitch
   ============================================================ */

:root{
  --bg:        #060608;
  --bg-soft:   #0c0c10;
  --panel:     #101016;
  --fg:        #f3f2ee;
  --fg-dim:    #8c8c94;
  --fg-faint:  #4a4a52;
  --line:      rgba(243,242,238,.14);
  --line-soft: rgba(243,242,238,.07);

  --blue:      #2336ff;
  --blue-bri:  #5c74ff;
  --blue-glow: #6f86ff;

  --maxw: 1440px;
  --pad:  clamp(20px, 5vw, 96px);

  --f-disp: "Archivo", "Arial Narrow", sans-serif;
  --f-ui:   "Space Grotesk", system-ui, sans-serif;
  --f-mono: "Space Mono", ui-monospace, monospace;

  --glitch: 0.7; /* 0..1, piloté par JS via --glitch */
}

*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; overflow-x:hidden; }

html, body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:var(--f-ui);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

body{ overflow-x:hidden; }
body.no-scroll{ overflow:hidden; height:100vh; }

a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
::selection{ background:var(--blue); color:#fff; }

/* hide native cursor when custom cursor active */
body.cursor-on, body.cursor-on *{ cursor:none; }

/* ---------- type helpers ---------- */
.disp{
  font-family:var(--f-disp);
  font-weight:900;
  font-stretch:125%;
  line-height:.86;
  letter-spacing:-.01em;
  text-transform:uppercase;
}
.mono{ font-family:var(--f-mono); }
.tag{
  font-family:var(--f-mono);
  font-size:11px;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--fg-dim);
}

/* ============================================================
   GLOBAL OVERLAYS — scanlines, grain, vignette
   ============================================================ */
.fx{
  position:fixed; inset:0; pointer-events:none; z-index:60;
}
.fx-scan{
  background:repeating-linear-gradient(
    to bottom,
    rgba(0,0,0,0) 0px,
    rgba(0,0,0,0) 2px,
    rgba(0,0,0,calc(.30 * var(--glitch))) 3px,
    rgba(0,0,0,0) 4px);
  mix-blend-mode:multiply;
  opacity:.9;
}
.fx-grain{
  opacity:calc(.06 + .10 * var(--glitch));
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.fx-vig{
  background:radial-gradient(120% 90% at 50% 40%, transparent 55%, rgba(0,0,0,.55) 100%);
}

/* scroll progress bar */
.progress{
  position:fixed; top:0; left:0; height:2px; width:0%;
  background:var(--blue-bri); z-index:80;
  box-shadow:0 0 12px var(--blue-glow);
}

/* ============================================================
   CUSTOM CURSOR
   ============================================================ */
.cursor{
  position:fixed; top:0; left:0; z-index:90; pointer-events:none;
  transform:translate(-50%,-50%);
  mix-blend-mode:difference;
  will-change:transform;
}
.cursor .ring{
  width:34px; height:34px; border:1.5px solid #fff; border-radius:50%;
  transition:width .18s ease, height .18s ease, border-radius .18s ease, background .18s;
  display:grid; place-items:center;
}
.cursor .dot{ width:4px; height:4px; background:#fff; border-radius:50%; }
.cursor.hot .ring{ width:62px; height:62px; background:rgba(255,255,255,.12); }
.cursor.hot .dot{ width:0; height:0; }
.cursor .lbl{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  font-family:var(--f-mono); font-size:9px; letter-spacing:.12em; color:#fff;
  opacity:0; transition:opacity .15s; white-space:nowrap;
}
.cursor.hot .lbl{ opacity:1; }
@media (max-width:860px), (pointer:coarse){ .cursor{ display:none; } }

/* ============================================================
   BOOT INTRO
   ============================================================ */
#boot{
  position:fixed; inset:0; z-index:200; background:#020203;
  display:flex; flex-direction:column; justify-content:center;
  padding:var(--pad);
  font-family:var(--f-mono); color:var(--fg);
  transition:opacity .5s ease, transform .6s cubic-bezier(.7,0,.2,1);
}
#boot.done{ opacity:0; transform:translateY(-12px); pointer-events:none; }
.boot-wrap{ max-width:760px; }
.boot-line{ font-size:clamp(11px,1.5vw,14px); line-height:1.9; opacity:0; }
.boot-line .ok{ color:var(--blue-bri); }
.boot-line .warn{ color:#fff; }
.boot-bar{
  margin-top:18px; height:10px; border:1px solid var(--line);
  position:relative; overflow:hidden; max-width:420px;
}
.boot-bar i{ position:absolute; inset:0; width:0%; background:var(--blue); }
.boot-brand{
  font-family:var(--f-disp); font-weight:900; font-stretch:125%;
  text-transform:uppercase; font-size:clamp(40px,9vw,120px);
  line-height:.9; margin:0 0 24px; letter-spacing:-.02em;
}
.boot-brand b{ color:var(--blue-bri); }
.boot-skip{
  position:absolute; bottom:var(--pad); right:var(--pad);
  font-size:11px; letter-spacing:.2em; color:var(--fg-dim); text-transform:uppercase;
}
.blink{ animation:blink 1s steps(2) infinite; }
@keyframes blink{ 50%{ opacity:0; } }

/* ============================================================
   NAV
   ============================================================ */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:70;
  display:flex; align-items:center; justify-content:space-between;
  padding:16px var(--pad);
  mix-blend-mode:difference;
}
.nav .brand{
  font-family:var(--f-mono); font-weight:700; font-size:14px;
  letter-spacing:.18em; display:flex; align-items:center; gap:9px;
}
.nav .brand .blip{ width:7px; height:7px; background:var(--blue-bri); border-radius:50%;
  box-shadow:0 0 10px var(--blue-glow); animation:blip 1.6s ease-in-out infinite; }
@keyframes blip{ 50%{ opacity:.25; } }
.nav .links{ display:flex; gap:26px; }
.nav .links a{
  font-family:var(--f-mono); font-size:12px; letter-spacing:.16em; text-transform:uppercase;
  position:relative;
}
.nav .links a::after{
  content:""; position:absolute; left:0; bottom:-4px; height:1px; width:0; background:#fff;
  transition:width .25s ease;
}
.nav .links a:hover::after{ width:100%; }
@media (max-width:760px){ .nav .links{ display:none; } }

/* ============================================================
   LAYOUT PRIMITIVES
   ============================================================ */
section{ position:relative; }
.wrap{ max-width:var(--maxw); margin:0 auto; padding-left:var(--pad); padding-right:var(--pad); }
.eyebrow{
  display:flex; align-items:center; gap:14px; margin-bottom:28px;
}
.eyebrow .num{
  font-family:var(--f-mono); font-size:12px; color:var(--blue-bri); letter-spacing:.1em;
}
.eyebrow .ttl{ font-family:var(--f-mono); font-size:12px; letter-spacing:.3em; text-transform:uppercase; color:var(--fg-dim); }
.eyebrow .rule{ flex:1; height:1px; background:var(--line); }

/* reveal on scroll */
.reveal{ opacity:0; transform:translateY(34px); transition:opacity .8s cubic-bezier(.16,1,.3,1), transform .8s cubic-bezier(.16,1,.3,1); }
.reveal.in{ opacity:1; transform:none; }
.reveal.d1{ transition-delay:.08s; } .reveal.d2{ transition-delay:.16s; }
.reveal.d3{ transition-delay:.24s; } .reveal.d4{ transition-delay:.32s; }
@media (prefers-reduced-motion:reduce){
  .reveal{ opacity:1 !important; transform:none !important; }
}

/* ============================================================
   HERO
   ============================================================ */
#hero{ min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  padding-top:84px; overflow:hidden; }
.hero-globe{
  position:absolute; inset:0; display:grid; place-items:center; z-index:0;
  pointer-events:none;
}
.hero-globe canvas{ width:min(78vw,720px); height:min(78vw,720px); opacity:.85;
  filter:drop-shadow(0 0 40px rgba(60,90,255,.25)); }
.hero-inner{ position:relative; z-index:2; }
.hero-title{
  font-size:clamp(48px, 13vw, 200px);
  margin:0; mix-blend-mode:difference;
  white-space:nowrap;
}
.hero-title .g-line{ display:block; }
.hero-sub{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:10px 22px;
  margin-top:18px;
}
.hero-sub .slogan{
  font-family:var(--f-mono); font-size:clamp(13px,2vw,17px);
  letter-spacing:.04em; text-transform:uppercase;
}
.hero-sub .slogan b{ color:var(--blue-bri); }
.hero-corners{ position:absolute; inset:0; z-index:2; pointer-events:none; }
.corner{ position:absolute; font-family:var(--f-mono); font-size:11px; letter-spacing:.18em;
  color:var(--fg-dim); text-transform:uppercase; }
.corner.tl{ top:96px;  left:var(--pad); }
.corner.tr{ top:96px;  right:var(--pad); text-align:right; }
.corner.bl{ bottom:88px; left:var(--pad); }
.corner.br{ bottom:88px; right:var(--pad); text-align:right; }
.barcode{ display:flex; gap:2px; height:34px; align-items:flex-end; }
.barcode i{ width:2px; background:var(--fg); display:block; }

.scrollcue{
  position:absolute; left:50%; bottom:26px; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:8px; z-index:3;
  font-family:var(--f-mono); font-size:10px; letter-spacing:.3em; color:var(--fg-dim);
}
.scrollcue .bar{ width:1px; height:42px; background:linear-gradient(var(--fg-dim),transparent); position:relative; overflow:hidden; }
.scrollcue .bar::after{ content:""; position:absolute; top:-50%; left:0; width:1px; height:50%; background:var(--blue-bri); animation:cue 1.8s ease-in-out infinite; }
@keyframes cue{ 0%{ top:-50%; } 60%,100%{ top:100%; } }

/* ============================================================
   MARQUEE
   ============================================================ */
.marquee{ border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  overflow:hidden; padding:18px 0; background:var(--bg-soft); }
.marquee.blue{ background:var(--blue); border-color:transparent; }
.marquee-track{ display:flex; gap:48px; width:max-content; will-change:transform; }
.marquee-track span{
  font-family:var(--f-disp); font-weight:900; font-stretch:125%; text-transform:uppercase;
  font-size:clamp(28px,5vw,64px); line-height:1; white-space:nowrap;
  display:flex; align-items:center; gap:48px; color:var(--fg);
}
.marquee.blue .marquee-track span{ color:#fff; }
.marquee-track span em{ font-style:normal; color:var(--blue-bri); }
.marquee.blue .marquee-track span em{ color:#001; }
.star{ font-family:var(--f-ui); font-weight:400; }

/* ============================================================
   MANIFESTE
   ============================================================ */
#manifeste{ padding:clamp(90px,14vh,180px) 0; }
.manif-grid{ display:grid; grid-template-columns:1fr; gap:40px; }
.manif-lead{
  font-family:var(--f-disp); font-weight:900; font-stretch:110%; text-transform:uppercase;
  font-size:clamp(34px,6.4vw,104px); line-height:.96; letter-spacing:-.01em;
  max-width:18ch; text-wrap:balance;
}
.manif-lead .hl{ color:var(--blue-bri); }
.manif-lead .out{ -webkit-text-stroke:1.5px var(--fg); color:transparent; }
.manif-cols{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:28px;
  border-top:1px solid var(--line); padding-top:34px; }
.manif-cols p{ font-family:var(--f-mono); font-size:14px; line-height:1.75; color:var(--fg-dim); margin:0; }
.manif-cols p b{ color:var(--fg); }
.manif-cols .k{ display:block; font-size:11px; letter-spacing:.24em; color:var(--blue-bri); margin-bottom:12px; }

/* ============================================================
   GALERIE
   ============================================================ */
#galerie{ padding:clamp(70px,10vh,130px) 0; }
.gal-grid{ display:grid; grid-template-columns:repeat(12,1fr); gap:14px; }
.gal-item{ position:relative; overflow:hidden; background:var(--panel); border:1px solid var(--line-soft);
  min-height:160px; }
.gal-item img{ width:100%; height:100%; object-fit:cover; filter:grayscale(.15) contrast(1.05);
  transition:transform .7s cubic-bezier(.16,1,.3,1), filter .4s; }
.gal-item:hover img{ transform:scale(1.06); }
.gal-item .meta{ position:absolute; left:12px; bottom:12px; z-index:3;
  font-family:var(--f-mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  color:#fff; mix-blend-mode:difference; }
.gal-item .idx{ position:absolute; top:12px; right:12px; z-index:3;
  font-family:var(--f-mono); font-size:10px; color:#fff; mix-blend-mode:difference; }
/* glitch layers */
.gal-item .glx{ position:absolute; inset:0; background-size:cover; background-position:center;
  opacity:0; pointer-events:none; mix-blend-mode:screen; }
.gal-item:hover .glx.r{ animation:glitchR .42s steps(2) 1; }
.gal-item:hover .glx.b{ animation:glitchB .42s steps(2) 1; }
@keyframes glitchR{ 0%{opacity:0} 30%{opacity:.6; transform:translate(-6px,2px)} 60%{opacity:.3; transform:translate(4px,-2px)} 100%{opacity:0; transform:none} }
@keyframes glitchB{ 0%{opacity:0} 30%{opacity:.5; transform:translate(6px,-2px)} 60%{opacity:.25; transform:translate(-4px,2px)} 100%{opacity:0; transform:none} }

/* spans */
.s-tall{ grid-column:span 5; grid-row:span 2; }
.s-wide{ grid-column:span 7; }
.s-half{ grid-column:span 4; }
.s-third{ grid-column:span 3; }
.s-full{ grid-column:span 12; }
.s-7{ grid-column:span 7; } .s-6{ grid-column:span 6; } .s-5{ grid-column:span 5; }
.s-4{ grid-column:span 4; } .s-3{ grid-column:span 3; }

/* video placeholder */
.vid-slot{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px;
  border:1px dashed var(--line); background:
    repeating-linear-gradient(135deg, rgba(255,255,255,.018) 0 10px, transparent 10px 20px);
  color:var(--fg-dim); text-align:center; padding:24px; min-height:220px; }
.vid-slot .play{ width:62px; height:62px; border:1.5px solid var(--fg-dim); border-radius:50%;
  display:grid; place-items:center; transition:.25s; }
.vid-slot .play::after{ content:""; border-left:14px solid currentColor; border-top:9px solid transparent;
  border-bottom:9px solid transparent; margin-left:4px; }
.vid-slot:hover .play{ border-color:var(--blue-bri); color:var(--blue-bri); box-shadow:0 0 26px rgba(70,100,255,.25); }
.vid-slot .lbl{ font-family:var(--f-mono); font-size:11px; letter-spacing:.18em; text-transform:uppercase; }

@media (max-width:820px){
  .gal-grid{ grid-template-columns:repeat(6,1fr); }
  .s-tall{ grid-column:span 6; grid-row:span 1; }
  .s-tall,.s-wide,.s-half,.s-full,.s-7,.s-5,.s-4{ grid-column:span 6; grid-row:auto; }
  .s-6,.s-third,.s-3{ grid-column:span 3; }
}

/* ============================================================
   TOUR
   ============================================================ */
#tour{ padding:clamp(70px,10vh,130px) 0; }
.tour-head{ display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:20px; margin-bottom:18px; }
.tour-head h2{ font-size:clamp(48px,11vw,150px); margin:0; }
.tour-head .note{ font-family:var(--f-mono); font-size:12px; color:var(--fg-dim); max-width:32ch; line-height:1.7; }
.tour-list{ border-top:1px solid var(--line); }
.tour-row{ display:grid; grid-template-columns:130px 1fr 1fr auto; gap:24px; align-items:center;
  padding:26px 8px; border-bottom:1px solid var(--line); position:relative; transition:padding .3s, background .3s; }
.tour-row .date{ font-family:var(--f-disp); font-weight:900; font-stretch:110%; font-size:30px; line-height:.9; }
.tour-row .date small{ display:block; font-family:var(--f-mono); font-size:11px; font-weight:400; color:var(--fg-dim); letter-spacing:.1em; margin-top:6px; }
.tour-row .city{ font-family:var(--f-ui); font-weight:600; font-size:clamp(22px,3vw,38px); text-transform:uppercase; letter-spacing:-.01em; }
.tour-row .venue{ font-family:var(--f-mono); font-size:13px; color:var(--fg-dim); letter-spacing:.04em; }
.tour-row .cta{ font-family:var(--f-mono); font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  border:1px solid var(--line); padding:12px 20px; white-space:nowrap; transition:.25s; }
.tour-row:hover{ background:var(--bg-soft); padding-left:22px; }
.tour-row:hover .cta{ background:var(--blue); border-color:var(--blue); color:#fff; box-shadow:0 0 26px rgba(50,70,255,.4); }
.tour-row.soldout{ opacity:.5; }
.tour-row.soldout .cta{ border-style:dashed; }
.tour-row .big{ position:absolute; right:8px; top:50%; transform:translateY(-50%); font-family:var(--f-disp);
  font-weight:900; font-stretch:125%; font-size:90px; color:transparent; -webkit-text-stroke:1px var(--line);
  pointer-events:none; opacity:0; transition:opacity .3s; z-index:0; }
@media (max-width:760px){
  .tour-row{ grid-template-columns:90px 1fr; grid-auto-flow:row; gap:6px 16px; }
  .tour-row .venue{ grid-column:1/-1; }
  .tour-row .cta{ grid-column:1/-1; justify-self:start; margin-top:8px; }
  .tour-row .date{ font-size:22px; }
}

/* ============================================================
   MUSIQUE
   ============================================================ */
#musique{ padding:clamp(70px,10vh,130px) 0; }
.player{ display:grid; grid-template-columns:clamp(420px, 44%, 580px) 1fr; gap:0; border:1px solid var(--line);
  background:linear-gradient(180deg,var(--panel),var(--bg-soft)); }
.player-left{ padding:clamp(18px,2.4vw,28px); border-right:1px solid var(--line); display:flex; flex-direction:column; }
/* la pochette remplit l'espace dispo de la colonne (→ aucun vide) ; carrée en fallback mobile */
.player-cover{ aspect-ratio:1; background:#000; border:1px solid var(--line);
  position:relative; overflow:hidden; display:grid; place-items:center; }
.player-cover .disc{ width:64%; aspect-ratio:1; }
.player-now{ margin-top:22px; }
.player-now .t{ font-family:var(--f-disp); font-weight:900; font-stretch:110%; text-transform:uppercase; font-size:34px; line-height:.92; }
.player-now .a{ font-family:var(--f-mono); font-size:12px; color:var(--fg-dim); letter-spacing:.16em; margin-top:8px; }
.wave{ display:flex; align-items:flex-end; gap:3px; height:56px; margin:24px 0 18px; }
.wave i{ flex:1; background:var(--fg-faint); height:20%; border-radius:1px; transition:background .2s; }
.player.playing .wave i{ background:var(--blue-bri); animation:wv 1s ease-in-out infinite; }
@keyframes wv{ 0%,100%{ transform:scaleY(.4); } 50%{ transform:scaleY(1); } }
.wave i{ transform-origin:bottom; }
.controls{ display:flex; align-items:center; gap:18px; margin-top:auto; }
.controls .pp{ width:60px; height:60px; border-radius:50%; border:1.5px solid var(--fg); display:grid; place-items:center; transition:.2s; flex:none; }
.controls .pp:hover{ background:var(--blue); border-color:var(--blue); box-shadow:0 0 30px rgba(50,70,255,.4); }
.controls .pp .ico{ width:0; height:0; border-left:16px solid var(--fg); border-top:10px solid transparent; border-bottom:10px solid transparent; margin-left:4px; }
.player.playing .controls .pp .ico{ border:none; width:14px; height:16px; margin:0;
  border-left:5px solid var(--fg); border-right:5px solid var(--fg); }
.controls .pp:hover .ico{ border-left-color:#fff; border-right-color:#fff; }
.controls .time{ font-family:var(--f-mono); font-size:12px; color:var(--fg-dim); letter-spacing:.1em; }

.player-right{ display:flex; flex-direction:column; }
.tracklist{ flex:1; }
.track{ display:grid; grid-template-columns:34px 1fr auto; gap:14px; align-items:center;
  padding:11px clamp(20px,3vw,32px); border-bottom:1px solid var(--line); cursor:pointer; transition:background .2s; }
.track:hover{ background:rgba(255,255,255,.03); }
.track.active{ background:rgba(35,54,255,.10); }
.track .n{ font-family:var(--f-mono); font-size:12px; color:var(--fg-dim); }
.track.active .n{ color:var(--blue-bri); }
.track .nm{ font-family:var(--f-ui); font-weight:600; font-size:16px; text-transform:uppercase; letter-spacing:.01em; }
.track .dur{ font-family:var(--f-mono); font-size:12px; color:var(--fg-dim); }
.track.active .nm{ color:#fff; }
.embed-live{ border-top:1px solid var(--line); background:var(--bg); flex:1; display:flex; flex-direction:column; min-height:0; }
.embed-live .embed-bar{ flex:none; }
.embed-bar{ display:flex; align-items:center; gap:10px; padding:14px clamp(20px,3vw,32px) 12px;
  font-size:11px; letter-spacing:.22em; color:var(--fg-dim); }
.dotlive{ width:8px; height:8px; border-radius:50%; background:#1db954; box-shadow:0 0 10px #1db954; animation:blip 1.4s ease-in-out infinite; }
.embed-live iframe{ display:block; width:100%; border:0; flex:1 1 0; min-height:0; }
.embed-note{ padding:18px clamp(20px,3vw,32px); border-top:1px solid var(--line); background:var(--bg);
  font-family:var(--f-mono); font-size:11px; color:var(--fg-faint); letter-spacing:.08em; line-height:1.7; }
.embed-note b{ color:var(--blue-bri); }
@media (max-width:820px){ .player{ grid-template-columns:1fr; } .player-left{ border-right:none; border-bottom:1px solid var(--line); } .player-cover{ aspect-ratio:1; } }

/* ============================================================
   LIENS
   ============================================================ */
#liens{ padding:clamp(70px,10vh,130px) 0 0; }
.link-list{ border-top:1px solid var(--line); }
.link-row{ display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:clamp(22px,3.4vw,40px) 8px; border-bottom:1px solid var(--line); position:relative; overflow:hidden; }
.link-row .lr-l{ display:flex; align-items:baseline; gap:20px; position:relative; z-index:2; }
.link-row .lr-num{ font-family:var(--f-mono); font-size:13px; color:var(--blue-bri); }
.link-row .lr-name{ font-family:var(--f-disp); font-weight:900; font-stretch:110%; text-transform:uppercase;
  font-size:clamp(30px,6vw,76px); line-height:.9; letter-spacing:-.01em; transition:transform .35s cubic-bezier(.16,1,.3,1); }
.link-row .lr-handle{ font-family:var(--f-mono); font-size:12px; color:var(--fg-dim); letter-spacing:.08em; }
.link-row .lr-r{ display:flex; align-items:center; gap:16px; position:relative; z-index:2; }
.link-row .lr-go{ font-family:var(--f-mono); font-size:12px; letter-spacing:.18em; text-transform:uppercase; color:var(--fg-dim);
  display:flex; align-items:center; gap:10px; transition:.3s; }
.link-row .lr-go .arr{ display:inline-block; transition:transform .3s; }
.link-row::before{ content:""; position:absolute; inset:0; background:var(--blue); transform:translateY(101%); transition:transform .4s cubic-bezier(.7,0,.2,1); z-index:0; }
.link-row:hover::before{ transform:translateY(0); }
.link-row:hover .lr-name{ transform:translateX(14px); color:#fff; }
.link-row:hover .lr-num{ color:#cdd6ff; }
.link-row:hover .lr-handle{ color:#dfe4ff; }
.link-row:hover .lr-go{ color:#fff; }
.link-row:hover .lr-go .arr{ transform:translateX(8px); }

/* ============================================================
   FOOTER
   ============================================================ */
footer{ padding:clamp(80px,12vh,160px) 0 40px; border-top:1px solid var(--line); margin-top:40px; }
.foot-brand{ font-family:var(--f-disp); font-weight:900; font-stretch:125%; text-transform:uppercase;
  font-size:clamp(64px,22vw,300px); line-height:.8; letter-spacing:-.02em; margin:0 0 30px; }
.foot-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:24px; border-top:1px solid var(--line); padding-top:30px; }
.foot-col h4{ font-family:var(--f-mono); font-size:11px; letter-spacing:.24em; text-transform:uppercase; color:var(--fg-dim); margin:0 0 14px; }
.foot-col a, .foot-col p{ display:block; font-family:var(--f-mono); font-size:13px; color:var(--fg); margin:0 0 8px; transition:color .2s; }
.foot-col a:hover{ color:var(--blue-bri); }
.foot-bottom{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:14px; margin-top:46px;
  font-family:var(--f-mono); font-size:11px; letter-spacing:.1em; color:var(--fg-faint); text-transform:uppercase; }
.foot-bottom a:hover{ color:var(--blue-bri); }
.totop{ cursor:pointer; }

/* big disc / globe icon shared */
.disc-ico{ display:inline-block; }

/* ---------- lecteur YouTube (clips) ---------- */
.yt-mount{ position:absolute; inset:0; background:#000; opacity:0; visibility:hidden;
  transition:opacity .35s ease; z-index:2; }
.yt-mount.on{ opacity:1; visibility:visible; }
.yt-mount iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
/* titres non sortis : "données chiffrées" — barres de censure animées (DA) */
.track.locked{ position:relative; overflow:hidden; cursor:not-allowed; }
.track.locked .n{ color:var(--fg-faint); }
.track.locked .dur{ color:var(--fg-faint); letter-spacing:.12em; }
.track.locked .dur::after{ content:"▮"; margin-left:6px; color:var(--blue-bri);
  animation:blink 1.05s steps(1) infinite; }
/* barres de redaction (titre masqué) */
.rd{ display:inline-flex; align-items:center; gap:6px; height:1em; vertical-align:middle;
  animation:rd-glitch 6s steps(1) infinite; }
.rd i{ display:block; height:10px; border-radius:1px; background:var(--fg-faint);
  animation:rd-pulse 2.6s ease-in-out infinite; }
.rd i:nth-child(1){ width:52px; }
.rd i:nth-child(2){ width:30px; animation-delay:.25s; }
.rd i:nth-child(3){ width:64px; animation-delay:.5s; }
.rd i:nth-child(4){ width:24px; animation-delay:.75s; }
.rd i:nth-child(5){ width:44px; animation-delay:1s; }
.track.locked:nth-child(odd) .rd{ animation-delay:-2.4s; }
.track.locked:nth-child(3n) .rd{ animation-delay:-3.8s; }
.track.locked:hover .rd i{ background:var(--blue-bri); }
.track.locked:hover .rd{ animation-duration:.6s; }
/* ligne de scan bleue qui balaye la rangée (déchiffrage) */
.track.locked::after{ content:""; position:absolute; top:0; bottom:0; left:-40%; width:36%;
  background:linear-gradient(90deg, transparent, rgba(35,54,255,.22), transparent);
  animation:rd-scan 3.4s linear infinite; pointer-events:none; }
.track.locked:nth-child(even)::after{ animation-delay:-1.7s; }
@keyframes rd-pulse{ 0%,100%{ opacity:.5; } 50%{ opacity:.92; } }
@keyframes rd-scan{ 0%{ left:-40%; } 100%{ left:120%; } }
@keyframes rd-glitch{
  0%,88%,100%{ transform:translateX(0); filter:none; }
  90%{ transform:translateX(-2px); filter:drop-shadow(2px 0 rgba(35,54,255,.85)) drop-shadow(-2px 0 rgba(255,45,85,.6)); }
  92%{ transform:translateX(3px); }
  94%{ transform:translateX(-1px); filter:drop-shadow(-2px 0 rgba(35,54,255,.7)); }
  96%{ transform:translateX(0); filter:none; }
}
@media (prefers-reduced-motion:reduce){
  .rd, .rd i, .track.locked .dur::after{ animation:none !important; }
  .track.locked::after{ display:none; }
  .rd i{ opacity:.55; }
  .album-body{ transition:none; }
}

/* ---------- discographie dépliante (albums / accordéon) ---------- */
.albums{ flex:none; display:flex; flex-direction:column; }
.album{ border-bottom:1px solid var(--line); }
.album:first-child{ border-top:1px solid var(--line); }
.album-head{ width:100%; display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:15px clamp(16px,2.4vw,28px); background:transparent; border:0; cursor:pointer; text-align:left;
  color:var(--fg); transition:background .2s; }
.album-head:hover{ background:rgba(255,255,255,.03); }
.ah-l{ display:flex; align-items:baseline; gap:12px; min-width:0; }
.ah-name{ font-family:var(--f-disp); font-weight:900; font-stretch:110%; text-transform:uppercase;
  font-size:clamp(18px,2vw,24px); line-height:1; letter-spacing:.01em; transition:color .2s; }
.album.open .ah-name{ color:var(--blue-bri); }
.ah-yr{ font-size:11px; letter-spacing:.18em; color:var(--fg-dim); }
.ah-r{ display:flex; align-items:center; gap:12px; font-size:11px; letter-spacing:.14em;
  color:var(--fg-dim); white-space:nowrap; }
.chev{ display:inline-block; color:var(--blue-bri); transition:transform .3s ease; }
.album.open .chev{ transform:rotate(90deg); }
/* corps dépliant : transition fluide via grid-template-rows (pas de hauteur magique) */
/* corps : hauteur FIGÉE (= album le plus haut) → la mise en page ne bouge jamais */
.album-body{ height:0; overflow:hidden; display:flex; flex-direction:column;
  transition:height .42s cubic-bezier(.7,0,.2,1); }
.album.open .album-body{ height:440px; }
.album-body > .tracklist{ flex:0 0 auto; }
/* pied d'album : ancre le bas du panneau (référence cassette « fin de face ») */
.album-foot{ margin-top:auto; display:flex; align-items:center; gap:14px;
  padding:13px clamp(16px,2.4vw,28px); border-top:1px solid var(--line);
  font-family:var(--f-mono); font-size:11px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--fg-faint); }
.album-foot .bc{ flex:1; height:12px; opacity:.5;
  background:repeating-linear-gradient(90deg, var(--fg-faint) 0 1px, transparent 1px 5px); }

/* lecteur Spotify déplacé SOUS le player, pleine largeur (allège la hauteur) */
@media (max-width:820px){ .album.open .album-body{ height:440px; } }
