/* fanrank v2 (17/10/2026) : une page par entité, pensée mobile d'abord. Polices système : zéro requête tierce.
   Dégradé rose→violet réservé à 3 usages : bouton Suivre, rang n°1, filtre actif (audit UX). */
:root{
  --bg:#f6f5fb; --surface:#fff; --surface-2:#f0eef7; --ink:#14121c; --muted:#5f5b70; --line:#e4e1ee;
  --accent:#cc0f50; --accent-ink:#fff; --accent-soft:#fde8f0; --violet:#7a4dff;
  --grad:linear-gradient(120deg,#ff2d7a 0%,#b23cff 55%,#6a5cff 100%);
  --tile-video:#24202f; --tile-short:#33203a; --tile-ink:#f5f3fb;
  --alert-bg:#fff4f4; --alert-line:#e7b4b4; --ok:#14804a;
  --shadow:0 1px 2px rgba(20,18,28,.05),0 6px 20px rgba(20,18,28,.06);
  --shadow-up:0 2px 4px rgba(20,18,28,.06),0 14px 34px rgba(20,18,28,.12);
  --r:16px; --r-sm:10px; --head-h:58px;
  --f-display:"Segoe UI Variable Display","SF Pro Display","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --f-body:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --f-mono:ui-monospace,"Cascadia Mono",Consolas,"SF Mono",monospace;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0d0b13; --surface:#17141f; --surface-2:#1f1b2b; --ink:#f2f0f8; --muted:#a6a1ba; --line:#2b2639;
  --accent:#ff4f8b; --accent-ink:#1a0b10; --accent-soft:#3b1529;
  --tile-video:#221e2d; --tile-short:#33203a; --tile-ink:#f5f3fb;
  --alert-bg:#2a1414; --alert-line:#5a2a2a; --ok:#4fd18b;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.25);
  --shadow-up:0 2px 4px rgba(0,0,0,.4),0 14px 34px rgba(0,0,0,.45);
  color-scheme:dark}}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--head-h) + 56px)}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--f-body);overflow-x:clip}
a{color:inherit;text-underline-offset:2px}
a:hover{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
img{max-width:100%;height:auto}
.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.sub{color:var(--muted);font-size:13px;margin:0}
.wrap{max-width:1160px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h1,h2{font-family:var(--f-display);text-wrap:balance}
h2{font-size:21px;font-weight:750;margin:0 0 6px;letter-spacing:-.01em}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* --- En-tête du site : collant, translucide --- */
header.site{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}
.site-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:var(--head-h)}
.brand{font-family:var(--f-display);font-weight:850;font-size:21px;text-decoration:none;letter-spacing:-.02em}
.brand::after{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--grad);margin-left:3px}
.site-bar nav{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:600}
.site-bar nav a{text-decoration:none;padding:8px 12px;border-radius:999px}
.site-bar nav a:hover{background:var(--surface-2);color:var(--ink)}
.site-bar .search-link{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--surface-2)}
.site-bar .search-link svg{width:18px;height:18px}
main.wrap{padding-block:18px 48px;display:flex;flex-direction:column;gap:22px}
main.wrap>*{min-width:0;max-width:100%}
footer.site{border-top:1px solid var(--line);color:var(--muted);font-size:13px}
.foot{padding-block:18px 28px}
.foot p{margin:4px 0}
.langs{display:flex;flex-wrap:wrap;gap:6px 14px}
.langs a{display:inline-block;padding:4px 8px;min-height:24px}

/* --- Barre du bas sur mobile (façon application) --- */
.dock{display:none}
@media (max-width:760px){
  .site-bar nav .nav-link{display:none}
  .dock{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;z-index:30;left:0;right:0;bottom:0;padding:6px max(8px,env(safe-area-inset-left,0px)) calc(6px + env(safe-area-inset-bottom,0px));background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-top:1px solid var(--line)}
  .dock a{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:48px;justify-content:center;font-size:12px;font-weight:600;text-decoration:none;color:var(--muted);border-radius:12px}
  .dock a[aria-current="page"]{color:var(--accent)}
  .dock svg{width:22px;height:22px}
  .dock .count{position:absolute;top:2px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:var(--accent-ink);font:700 12px/18px var(--f-body)}
  body{padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
  .lang-banner{bottom:calc(76px + env(safe-area-inset-bottom,0px))!important}
  .toast{bottom:calc(84px + env(safe-area-inset-bottom,0px))!important}
}

/* --- Boutons --- */
.btn,.filters button{font:inherit;font-size:14px;font-weight:600;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:8px 16px;cursor:pointer;min-height:40px;text-decoration:none;display:inline-flex;align-items:center;gap:6px;justify-content:center}
.btn{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn-plain{font:inherit;font-size:14px;background:none;border:1px solid var(--line);border-radius:999px;padding:7px 14px;color:var(--ink);cursor:pointer;min-height:36px;text-decoration:none}
.btn-plain:hover{border-color:var(--accent);color:var(--accent)}
.danger{color:#c0233b;border-color:#e3a3ae}
.btn-ghost{font:inherit;font-size:14px;font-weight:600;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:8px 14px;min-height:40px;cursor:pointer;color:var(--ink);display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.inline-form{display:inline}
.check{display:flex;gap:8px;align-items:flex-start;font-weight:500}
.tag{display:inline-block;font:600 11px var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);vertical-align:middle}
.plain{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.pager{display:flex;gap:16px;align-items:center;margin-top:14px}

/* --- En-tête d'une page d'entité : immersif, premier écran épuré --- */
.entity-head{position:relative;display:grid;gap:14px 32px;padding:22px 0 8px;isolation:isolate}
@media (min-width:900px){.entity-head{grid-template-columns:minmax(0,1fr) minmax(300px,400px);align-items:end}}
.head-main,.head-side{display:grid;gap:12px;min-width:0;align-content:end}
/* Fond : la vignette n°1 floutée, teintée du dégradé de la marque, fondue dans la page (aucune ligne de bord). */
.cover{position:absolute;z-index:-1;inset:-18px calc(50% - 50vw) -24px;overflow:hidden;background:var(--grad);opacity:.18}
.cover.has-img{opacity:1}
.cover-img{position:absolute;top:-40px;left:-40px;width:calc(100% + 80px);max-width:none;height:calc(100% + 80px);object-fit:cover;filter:blur(42px) saturate(1.6);opacity:.75;mix-blend-mode:luminosity}
.cover::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 55%,transparent) 0%,color-mix(in srgb,var(--bg) 72%,transparent) 50%,var(--bg) 92%)}
.kind{margin:0;font:600 12px var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.entity-head h1{font-size:clamp(40px,9vw,76px);font-weight:850;line-height:.92;letter-spacing:-.03em;margin:0}
.status{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin:0;font-size:14.5px;color:var(--muted)}
.status b{color:var(--ink)}
.live{display:inline-flex;align-items:center;gap:7px;font-weight:600;color:var(--ink)}
.live::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 color-mix(in srgb,var(--ok) 60%,transparent);animation:pulse 2.4s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--ok) 55%,transparent)}70%{box-shadow:0 0 0 8px transparent}100%{box-shadow:0 0 0 0 transparent}}
.since{color:var(--accent);font-weight:700}
.rank-chip{justify-self:start;display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;background:var(--grad);color:#fff;font-weight:800;font-size:14px;text-decoration:none;box-shadow:0 6px 18px color-mix(in srgb,#b23cff 25%,transparent)}
.rank-chip:hover{color:#fff}
.rank-chip.is-soft{background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow);font-weight:700}
.rank-chip.is-soft:hover{color:var(--accent)}
.rank-chip .up,.rank-chip .down{background:rgba(255,255,255,.22);padding:1px 8px;border-radius:999px;font-size:12.5px}
.fandom-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.fandom-list li{display:grid;grid-template-columns:52px 50px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow)}
.fandom-list li:first-child{border-color:transparent;background:linear-gradient(var(--surface),var(--surface)) padding-box,var(--grad) border-box;border:2px solid transparent}
.fandom-list .r{font:850 20px var(--f-display)}
.fandom-list .mv{font-size:12.5px;font-weight:700;color:var(--muted)}
.fandom-list .mv.up{color:var(--ok)}
.fandom-list .mv.down{color:var(--accent)}
.fandom-list .mv.new{color:var(--violet)}
.fandom-list a{text-decoration:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fandom-list .pts{font-weight:700}
.member-of{margin:0;font-size:14px;color:var(--muted)}
.member-of a{font-weight:700;color:var(--ink)}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.fav{font:inherit;font-weight:700;font-size:15px;border:0;border-radius:999px;padding:10px 20px;min-height:44px;cursor:pointer;background:var(--grad);color:#fff;box-shadow:0 6px 18px color-mix(in srgb,#b23cff 30%,transparent)}
.fav::before{content:"\2606  "}
.fav.is-on{background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:none}
.fav.is-on::before{content:"\2605  ";color:var(--accent)}
.follow{font:inherit;font-weight:600;font-size:14px;border:1px solid var(--line);border-radius:999px;padding:8px 14px;min-height:44px;cursor:pointer;background:var(--surface);color:var(--ink)}
.follow::before{content:"\1F514  "}
.follow.is-on{border-color:var(--accent);color:var(--accent)}
.follow.is-on::before{content:"\2713  "}
.follow:disabled{opacity:.55;cursor:default}
.follow-wrap{display:contents}
/* Note des alertes : visible, une seule ligne (hauteur constante), en fin de rangée d'actions. */
.follow-wrap .sub{flex-basis:100%;order:1;margin:0;font-size:12.5px;line-height:1.5;min-height:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Safari iOS : place réservée dès le premier affichage pour le libellé « Alerts on iPhone » posé par le script. */
@supports (-webkit-touch-callout:none){.follow{min-width:11.5em}}
/* Prochain rendez-vous : tuile calendrier + compte à rebours */
.next-up{display:flex;align-items:center;gap:14px;padding:10px 14px 10px 10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);text-decoration:none;max-width:520px}
.cal{display:grid;place-items:center;width:58px;height:62px;border-radius:12px;background:var(--surface-2);overflow:hidden;flex:none;text-align:center;line-height:1}
.cal .m{display:block;width:100%;padding:5px 0;background:var(--accent);color:var(--accent-ink);font:800 11px var(--f-body);letter-spacing:.08em}
.cal .d{display:block;font:850 24px var(--f-display);padding:5px 0 6px}
.next-up .what{display:grid;gap:1px;min-width:0}
.next-up .what b{font-size:15px}
.next-up .what span{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.next-up .in{color:var(--accent);font-weight:700}
.next-links{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:13px;margin:-4px 0 0}
.going{font:inherit;font-size:13px;font-weight:700;border:1px solid var(--accent);color:var(--accent);background:var(--surface);border-radius:999px;padding:5px 12px;min-height:34px;cursor:pointer;white-space:nowrap}
.going[aria-pressed="true"]{background:var(--grad);color:#fff;border-color:transparent}
.dates td.tk .going{margin:0 0 4px}
.ticket-dialog{border:0;padding:0;background:transparent;width:min(420px,94vw)}
.ticket-dialog::backdrop{background:rgba(8,6,12,.8);backdrop-filter:blur(6px)}
.ticket-dialog .sheet{background:var(--surface);color:var(--ink);border-radius:20px;padding:16px;display:grid;gap:12px}
.ticket-dialog canvas{width:100%;height:auto;border-radius:14px;display:block}
.ticket-dialog select{font:inherit;padding:8px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink)}
.ticket-dialog .row{display:flex;gap:8px;flex-wrap:wrap;justify-content:space-between}
/* Profil replié : faits, membres, liens officiels, chiffres de la semaine */
.about-box{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:0}
.about-box>summary{list-style:none;cursor:pointer;padding:12px 16px;font-weight:700;display:flex;justify-content:space-between;align-items:center;min-height:48px}
.about-box>summary::-webkit-details-marker{display:none}
.about-box>summary::after{content:"\25BE";color:var(--muted);transition:transform .2s}
.about-box[open]>summary::after{transform:rotate(180deg)}
.about-box .inner{display:grid;gap:12px;padding:0 16px 16px}
.facts{display:flex;flex-wrap:wrap;gap:4px 20px;margin:0;font-size:14px;color:var(--muted)}
.facts b{color:var(--ink);font-weight:600}
.members{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.members a{text-decoration:none}
.members li{border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:13.5px;background:var(--surface-2);font-weight:600}
.links{display:flex;flex-wrap:wrap;gap:6px}
.links a{text-decoration:none;font-size:13px;padding:5px 11px;border-radius:999px;border:1px solid var(--line)}
.links a:hover{border-color:var(--accent)}
.stats{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;font-size:13.5px;color:var(--muted)}
.stats li{background:var(--surface-2);border-radius:12px;padding:6px 12px}
.stats b{color:var(--ink);font-size:15px}
.intro{max-width:68ch;font-size:16px;margin-top:28px}
.intro h2{margin-bottom:8px}
.intro p{margin:0 0 12px}
.more-from{margin-top:28px}
.related{margin-top:28px;display:grid;gap:8px}
.related h3{margin:6px 0 0;font-size:14px;color:var(--muted);font-weight:700}
.top-fans ol{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.top-fans li{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:2px 8px;align-items:baseline}
.top-fans li .sub{grid-column:2 / -1}
.top-fans .r{font:850 15px var(--f-display);color:var(--accent)}
.top-fans li:first-child .r{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.top-fans b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.top-fans .pts{font-weight:700;font-size:13px}
.more-link{margin:12px 0 0;font-weight:600}
.more-link a{text-decoration:none;border-bottom:1px solid var(--line)}

/* Partage : un bouton (menu natif du téléphone), réseaux dans un menu déroulant */
.share{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.share-label{font-size:13px;color:var(--muted);margin-right:4px}
.share-btn{font:inherit;font-size:13.5px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:7px 14px;min-height:36px;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center}
.share-btn:hover{border-color:var(--accent);color:var(--accent)}
.share-btn.native{background:var(--surface);font-weight:600}
.share-menu{position:relative}
.share-menu>summary{list-style:none}
.share-menu>summary::-webkit-details-marker{display:none}
.share-menu .share{position:absolute;z-index:25;top:calc(100% + 8px);right:0;width:min(320px,86vw);padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-up)}
/* Petit écran : feuille fixée en bas, au-dessus de la barre du bas (jamais de débordement à droite). */
@media (max-width:559px){
  .share-menu .share{position:fixed;z-index:50;top:auto;left:0;right:0;bottom:0;width:auto;padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));border-radius:var(--r) var(--r) 0 0}
  /* L'en-tête isole son empilement : menu ouvert, il passe devant la barre du bas et la barre collante du fil. */
  .entity-head:has(.share-menu[open]),.hero:has(.share-menu[open]){z-index:60}
}
/* Partage d'une carte : pilule du même gabarit que les votes (36 px), calée à droite de la rangée d'actions. */
.card-share{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;min-width:44px;padding:0 12px;font:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:var(--surface-2);color:var(--muted);border-radius:999px;cursor:pointer;flex:none}
.card-share:hover{color:var(--accent);border-color:var(--accent)}
.card-share svg{flex:none}

/* --- Grille du fil --- */
.layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:28px;align-items:start}
@media (max-width:900px){.layout{grid-template-columns:minmax(0,1fr)}}
.feed-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.feed-wrap>.feed-head{position:sticky;top:var(--head-h);z-index:20;margin-inline:-8px;padding:10px 8px;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.feed-wrap>.feed-head .sub{display:none}
@media (min-width:901px){.feed-wrap>.feed-head .sub{display:block}}
.filters{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;max-width:100%}
.filters::-webkit-scrollbar{display:none}
.filters button{min-height:40px;padding:6px 14px;white-space:nowrap;flex:none}
.filters button[data-filter][aria-pressed="true"]{background:var(--grad);color:#fff;border-color:transparent}
.filters button[data-sort][aria-pressed="true"]{border-color:var(--accent);color:var(--accent)}
.filters .sep{width:1px;background:var(--line);margin:6px 2px;flex:none}
/* Suivre compact de la barre collante (arrivée par un partage) : même hauteur que les filtres. */
.filters .fav-mini{background:var(--grad);color:#fff;border-color:transparent;box-shadow:none;font-weight:700}
.filters .fav-mini.is-on{background:var(--surface);color:var(--ink);border-color:var(--line)}
.filters .fav-mini[hidden]{display:none}
.feed{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;counter-reset:rank}
.feed>.block:not(.slot){counter-increment:rank}
@media (min-width:720px){.feed:not(.more)>.block:first-child{grid-column:span 2}.feed:not(.more)>.block:first-child .body .t{font-size:19px;-webkit-line-clamp:2}}
@media (max-width:560px){
  .feed{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .feed:not(.more)>.block:first-child,.feed>.slot{grid-column:1/-1}
  .feed .body{padding:8px 10px 10px;gap:4px}
  .feed .body .t{font-size:13.5px}
  .feed .meta{font-size:12.5px}
  .feed:not(.more)>.block:first-child .body .t{font-size:17px}
}
.block{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;min-width:0;box-shadow:var(--shadow);transition:transform .18s ease,box-shadow .18s ease}
@media (hover:hover){.block:hover{transform:translateY(-2px);box-shadow:var(--shadow-up)}.block:hover .tile-video img{transform:scale(1.04)}}
.block[hidden]{display:none}
.block:target,.block.is-target{outline:3px solid var(--accent);outline-offset:2px}
.feed:not(.more)>.block:not(.slot):nth-child(-n+3)::before{content:"#" counter(rank);position:absolute;z-index:2;top:10px;left:10px;padding:3px 9px;border-radius:999px;background:rgba(10,8,16,.72);color:#fff;font:800 13px var(--f-display);backdrop-filter:blur(6px)}
.feed:not(.more)>.block:not(.slot):first-child::before{background:var(--grad);font-size:15px;padding:4px 11px}
.ms-badge{position:absolute;right:10px;bottom:10px;padding:3px 9px;border-radius:999px;background:var(--grad);color:#fff;font:800 12px var(--f-body)}
.ms-share{justify-self:start;max-width:100%;display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px 8px;font:inherit;font-size:13px;font-weight:600;text-align:left;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:14px;padding:6px 12px;min-height:36px;cursor:pointer}
.ms-share b{font-weight:800}
.ms-share span{color:var(--accent)}
.ms-share:hover{border-color:var(--accent)}
.block .is-new-badge{position:absolute;z-index:2;top:10px;right:10px;padding:3px 9px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font:800 11px var(--f-body);letter-spacing:.05em;text-transform:uppercase}
.tile{position:relative;display:flex;flex-direction:column;justify-content:space-between;aspect-ratio:16/9;width:100%;max-width:100%;padding:12px;border:0;font:12px/1.2 var(--f-mono);text-decoration:none;color:var(--tile-ink);background:var(--tile-video);overflow:hidden}
.tile b{font-family:var(--f-display);font-size:21px;font-weight:850}
.tile-video{padding:0;cursor:pointer}
.tile-video img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.tile-video.is-short{background:var(--tile-short)}
/* Shorts verticaux comme sur YouTube : cadre 9:16 sur deux rangées de la grille, jamais élargi en tête de fil. */
.feed>.block.is-vertical{grid-row:span 2}
.feed>.block.is-vertical .tile-video{aspect-ratio:9/16}
.feed:not(.more)>.block.is-vertical:first-child{grid-column:auto}
.tile-video img+.badge{position:absolute;left:10px;bottom:10px;background:rgba(10,8,16,.72);color:#fff;padding:3px 8px;border-radius:6px;font:600 11px var(--f-body)}
.tile-video::after{content:"";position:absolute;inset:50% auto auto 50%;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:50%;background:rgba(10,8,16,.55) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M9 7v10l8-5z'/%3E%3C/svg%3E") center/26px no-repeat;backdrop-filter:blur(4px);transition:transform .2s}
.block:hover .tile-video::after{transform:scale(1.1)}
.tile-news{background:linear-gradient(135deg,var(--accent-soft),color-mix(in srgb,var(--violet) 14%,var(--surface)));color:var(--ink)}
.tile-tour{background:var(--grad);color:#fff}
/* Image à la une d'un article (chez l'éditeur) : le nom de la source reste lisible par-dessus. */
.tile.has-img{color:#fff}
.tile .tile-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.tile.has-img::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(10,8,16,.45) 0%,transparent 40%,rgba(10,8,16,.7) 100%)}
.tile.has-img span,.tile.has-img b{position:relative;z-index:2;text-shadow:0 1px 6px rgba(0,0,0,.5)}
@media (hover:hover){.block:hover .tile-img{transform:scale(1.04)}}
.tile-link{background:var(--surface-2);color:var(--ink)}
.body{min-width:0;display:grid;gap:6px;padding:12px 14px 14px;flex:1;align-content:start}
.body .t{font-weight:650;text-decoration:none;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35}
.body .t:hover{color:var(--accent)}
.meta{margin:0;font-size:12.5px;color:var(--muted);display:flex;flex-wrap:wrap;gap:2px 10px}
.slot{border-style:dashed;justify-content:center;gap:8px;padding:16px;min-height:160px;box-shadow:none}
.slot .tag{font:11px var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.slot-copy{margin:0;font-size:14px}
.slot.sponsor{padding:16px;display:flex;flex-direction:column;gap:8px;border-style:solid}
.slot-title{font-weight:750;font-size:17px;text-decoration:none;line-height:1.3}
.slot-by{margin:0;font-size:12px;color:var(--muted)}
.slot-cta{align-self:flex-start;text-decoration:none}
.ad-unit{display:block;min-height:100px}
/* Emplacement libre : carte d'appel aux fans (alertes ou partage), l'offre aux annonceurs en petit en pied. */
.slot.fan-call{border-style:solid;align-items:flex-start;background:linear-gradient(135deg,var(--accent-soft),color-mix(in srgb,var(--violet) 12%,var(--surface)))}
.fan-call-title{margin:0;font:750 18px/1.25 var(--f-display)}
.slot-book{margin:4px 0 0;font-size:12.5px;color:var(--muted)}
.slot-book a{color:inherit}
.card-actions{display:flex;align-items:center;gap:6px;padding:0 12px 12px}
.vote{display:flex;align-items:center;gap:6px}
.vote button{width:44px;height:36px;border:1px solid var(--line);background:var(--surface-2);color:var(--muted);border-radius:999px;cursor:pointer;font-size:13px;line-height:1}
.vote button[aria-pressed="true"].up{color:var(--ok);border-color:var(--ok)}
.vote button[aria-pressed="true"].down{color:var(--accent);border-color:var(--accent)}
.vote .score{font-family:var(--f-mono);font-size:13px;min-width:4ch;text-align:center;font-weight:700}
/* Deux cartes par rangée sur téléphone : boutons resserrés, partage réduit à son icône (libellé lu par aria-label). */
@media (max-width:560px){
  .card-actions{padding:0 8px 10px;gap:4px}
  .vote{gap:2px}
  .vote button{width:36px}
  .vote .score{font-size:12.5px;min-width:4ch}
  .card-share{width:36px;min-width:36px;padding:0}
  .card-share .lbl{display:none}
}
.empty{color:var(--muted)}

/* Lecteur vidéo en grand */
.player-dialog{border:0;padding:0;background:transparent;max-width:min(1100px,96vw);width:96vw}
.player-dialog::backdrop{background:rgba(8,6,12,.86);backdrop-filter:blur(6px)}
.player-dialog .frame{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:14px;overflow:hidden}
.player-dialog.is-short{width:auto}
.player-dialog.is-short .frame{height:min(86vh,820px);width:auto;aspect-ratio:9/16;margin:0 auto}
.player-dialog iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.player-dialog .close{position:absolute;top:-46px;right:0;background:none;border:0;color:#fff;font-size:30px;line-height:1;cursor:pointer;padding:4px 10px}

/* --- Colonne : dates, écoute --- */
.rail{display:flex;flex-direction:column;gap:16px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow)}
.panel h2{font-size:18px}
.panel h2 a{color:var(--accent)}
.dates{width:100%;border-collapse:collapse;font-size:13.5px;position:relative}
.dates caption{text-align:left;padding-bottom:6px}
.dates td,.dates th{padding:9px 6px 9px 0;border-top:1px solid var(--line);vertical-align:top;text-align:left}
.dates th{font-size:12px;color:var(--muted);font-weight:600}
.dates td.d{white-space:nowrap;width:1%;font-weight:700}
.dates .yr{color:var(--muted);font-size:11px;font-weight:400}
.dates td.tk{text-align:right;white-space:nowrap}
.dates td.tk a{font-weight:700;color:var(--accent)}
.dates .sub-line{display:block;font-size:12px;color:var(--muted)}
.dates .vh-row th{padding:0;border:0;height:0;line-height:0}
.dates.wide{min-width:560px}
.dates tr.is-near td{background:var(--accent-soft)}
.table-scroll{overflow-x:auto;max-width:100%;min-width:0;position:relative}
.near{margin:0 0 10px;padding:9px 12px;border-radius:12px;background:var(--accent-soft);font-size:14px}
.near::before{content:"\1F4CD  "}
.near a{font-weight:700;margin-left:4px}
.player{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:13px}
.player iframe{width:100%;height:352px;border:0;border-radius:12px}

/* --- Accueil --- */
.hero{position:relative;padding-block:6px 0;isolation:isolate}
.hero h1{font-size:clamp(28px,5.5vw,46px);font-weight:850;line-height:1.02;margin:0 0 8px;letter-spacing:-.025em;max-width:22ch}
.hero h1 em{font-style:normal;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.ask-line{margin:10px 0 0;font-size:14px;color:var(--muted);overflow-wrap:anywhere}
.ask-line a{color:var(--accent);font-weight:650}
.lede{margin:0;color:var(--muted);font-size:16.5px;max-width:60ch}
.search{display:flex;gap:8px;max-width:560px;margin-top:14px}
.search input{flex:1;min-width:0;font:inherit;font-size:16px;padding:12px 18px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
.search .btn{padding:10px 20px}
/* Propositions de la recherche : nos pages, puis les entités à demander. */
.search{position:relative}
/* La section qui porte la recherche passe devant les suivantes pendant la saisie (elles créent leur propre empilement). */
.hero:focus-within,section:has(>.search:focus-within){position:relative;z-index:45}
.suggest{position:absolute;z-index:40;top:calc(100% + 6px);left:0;right:0;margin:0;padding:6px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-up);max-height:min(70vh,460px);overflow:auto}
.suggest a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:9px 12px;border-radius:var(--r-sm);color:var(--ink);text-decoration:none}
.suggest a .sub{grid-column:1;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.suggest a .tag{grid-row:1 / span 2;grid-column:2;align-self:center;font-size:11.5px;font-weight:700;color:var(--muted);white-space:nowrap}
.suggest a.is-ask .tag,.card.is-ask .tag{color:var(--accent)}
.suggest [aria-selected="true"] a,.suggest a:hover{background:var(--surface-2)}
.suggest b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card .tag{font-size:12px;font-weight:700}
.eyebrow{margin:0;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.request-box{display:grid;gap:10px;margin:18px 0}
.request-count{margin:0;font-size:15px}
.request-count b{font:850 28px var(--f-display);margin-right:6px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.row-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px}
.row-head h2{margin:0}
.row-head a{font-size:14px;font-weight:600;text-decoration:none;color:var(--accent);white-space:nowrap}
/* Rangées horizontales (mobile) qui deviennent des grilles (ordinateur) */
.rail-x{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,46%);gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 10px;margin:0 -2px;list-style:none;scrollbar-width:thin}
.rail-x>*{scroll-snap-align:start;min-width:0}
@media (min-width:760px){.rail-x{grid-auto-columns:minmax(180px,1fr)}}
/* Top 10 des pages, grands chiffres */
.top10 .t10{position:relative;display:flex;align-items:flex-end;gap:8px;min-height:116px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);text-decoration:none;overflow:hidden}
.t10 .n{font:900 76px/0.8 var(--f-display);letter-spacing:-.06em;color:transparent;-webkit-text-stroke:2px var(--line);flex:none}
.top10 li:first-child .t10 .n{-webkit-text-stroke:0;background:var(--grad);-webkit-background-clip:text;background-clip:text}
.t10 .who{display:grid;gap:2px;min-width:0;padding-bottom:4px}
.t10 .who b{font:800 17px/1.15 var(--f-display);overflow:hidden;text-overflow:ellipsis}
.t10 .who span{font-size:12px;color:var(--muted)}
/* Vos pages (rempli dans le navigateur ; hauteur réservée : aucun décalage) */
.yours{min-height:96px}
.yours .chips{display:flex;gap:8px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:thin;list-style:none;margin:0}
.yours .chip{position:relative;display:inline-flex;align-items:center;gap:8px;white-space:nowrap;padding:9px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--line);text-decoration:none;font-weight:700;box-shadow:var(--shadow)}
.yours .chip .count{min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--accent);color:var(--accent-ink);font:800 12px/22px var(--f-body);text-align:center}
.yours .chip.is-fav::before{content:"\2605";color:var(--accent)}
.yours .hint{margin:0;color:var(--muted);font-size:14px}
/* Concerts en tuiles calendrier */
.cal-card{display:flex;gap:12px;align-items:center;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);text-decoration:none;box-shadow:var(--shadow);min-height:82px}
.cal-card .what{display:grid;min-width:0}
.cal-card .what b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-card .what span{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grid-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.card{display:grid;gap:2px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);text-decoration:none;box-shadow:var(--shadow)}
.card b{font-family:var(--f-display);font-size:17px}
.month h2{margin-top:8px}
.cities{margin-block:8px 20px}
.city-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.city-list li{border:1px solid var(--line);border-radius:999px;padding:5px 13px;background:var(--surface);font-size:14px}
.city-list a{text-decoration:none;font-weight:700}
.city-list .num{color:var(--muted);font-size:12px;margin-left:4px}
/* Tendances : même liste que le classement des fandoms, chiffres à droite (rien hors écran sur téléphone). */
.trend-list li{grid-template-columns:44px minmax(0,1fr) auto}
.trend-list .stat{display:grid;justify-items:end;text-align:right;white-space:nowrap}
.trend-list .stat b{font-size:14px}

/* --- Formulaires, textes --- */
.narrow{max-width:68ch}
.prose p{margin:0 0 12px}
.form{display:grid;gap:8px;margin:16px 0}
.form label{font-weight:600;font-size:14px}
.form input,.form select,.form textarea{font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);width:100%}
.form .btn{justify-self:start}
/* Case à cocher : taille native, collée au texte (la règle width:100% ci-dessus l'étirait sur toute la ligne). */
.form input[type="checkbox"]{width:auto;margin:0;flex:none}
.check input[type="checkbox"]{margin-top:.2em}
.alert{background:var(--alert-bg);border:1px solid var(--alert-line);border-radius:12px;padding:10px 14px}
.select{user-select:all;font-family:var(--f-mono)}
.pre{white-space:pre-line}
.embed-builder textarea{font-family:var(--f-mono);font-size:12.5px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);width:max-content;max-width:min(520px,calc(100vw - 32px));background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:20px;font-size:14px;font-weight:600;z-index:40;box-shadow:var(--shadow-up);display:flex;align-items:center;gap:12px}
.toast button{flex:none;max-width:60%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:inherit;font-size:13.5px;font-weight:700;border:0;border-radius:999px;padding:7px 14px;min-height:36px;cursor:pointer;background:var(--grad);color:#fff}
.lang-banner{position:fixed;z-index:35;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));max-width:560px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:14px;padding:10px 14px;font-size:14px;box-shadow:var(--shadow-up)}
.lang-banner button{font:inherit;background:none;border:0;cursor:pointer;color:var(--muted);min-width:32px;min-height:32px}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Comptes : bouton Google, séparateur « ou », lien magique replié. */
.auth .btn-google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;max-width:420px;background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow)}
.auth .btn-google .g-icon{flex:none}
.auth .or{display:flex;align-items:center;gap:12px;max-width:420px;color:var(--muted);font-size:13px;margin:14px 0}
.auth .or::before,.auth .or::after{content:"";flex:1;height:1px;background:var(--line)}
.auth .magic{margin:18px 0;max-width:420px}
.auth .magic summary{cursor:pointer;color:var(--accent);font-weight:600}
.auth .check{display:flex;align-items:flex-start;gap:8px;font-weight:500}
.auth .check.terms{align-items:flex-start;font-weight:400;font-size:14px;line-height:1.45;max-width:420px}
.auth .check.terms input{flex:none;margin-top:3px}

/* Compte dans l'en-tête : emplacement de 40 px identique pour tous (aucun décalage), vignette et menu en JS. */
.acct{position:relative;flex:none;width:40px;height:40px}
.acct-link,.acct-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--surface-2);color:var(--ink);border:0;padding:0;cursor:pointer}
.acct-link svg{width:19px;height:19px}
.acct .avatar{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--grad);color:#fff;font:800 15px var(--f-display);position:relative}
.acct .avatar.is-pending::after{content:"";position:absolute;right:-1px;top:-1px;width:10px;height:10px;border-radius:50%;background:#f5a524;border:2px solid var(--surface)}
.acct-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;min-width:210px;padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-up);display:grid}
.acct-menu[hidden]{display:none}
.acct-who{margin:4px 10px 6px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-menu a,.acct-menu button{display:block;width:100%;text-align:left;padding:9px 10px;border-radius:var(--r-sm);color:var(--ink);text-decoration:none;font:inherit;background:none;border:0;cursor:pointer}
.acct-menu a:hover,.acct-menu button:hover,.acct-menu a:focus-visible,.acct-menu button:focus-visible{background:var(--surface-2)}
.acct-menu form{margin:0;border-top:1px solid var(--line);margin-top:4px;padding-top:4px}
.acct .avatar img{position:absolute;inset:0;width:100%;height:100%;border-radius:50%;object-fit:cover}
.acct .avatar.has-photo{color:transparent}
.avatar-edit{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.avatar-big{flex:none;display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;background:var(--grad);color:#fff;font:800 30px var(--f-display);overflow:hidden}
.avatar-big img{width:100%;height:100%;object-fit:cover}
.avatar-choices{display:flex;gap:14px;flex-wrap:wrap;margin:6px 0 18px}
.avatar-choices form{margin:0}
/* Sortie musicale : pochette en fond, dégradé du site si elle manque. */
.tile-release{background:var(--grad);color:#fff}
/* Photo libre de la page (Wikimedia Commons) : taille réservée, aucun décalage. */
.entity-photo{display:block;width:88px;height:88px;border-radius:50%;object-fit:cover;border:3px solid var(--surface);box-shadow:var(--shadow);margin-bottom:10px;background:var(--surface-2)}
.photo-credit{font-size:12px;color:var(--muted);margin:8px 0}

/* Lisibilité sur téléphone (audit UX) : aucun texte sous 12,5 px, la barre du bas reste à 12 px. En fin de fichier
   pour primer sur les règles de même poids déclarées plus haut. */
@media (max-width:760px){
  .tag,.slot .tag,.suggest a .tag,.card .tag,.dates .yr,.dates .sub-line,.dates th,.cal .m,.tile-video img+.badge,
  .block .is-new-badge,.ms-badge,.slot-by,.photo-credit,.kind,.meta,.follow-wrap .sub,.card-share{font-size:12.5px}
}
