/* Feuille de style des pages générées (fiches, hubs, genres, gratuits du mois,
   blog). Sortie de build-pages.mjs le 2026-09-16 : elle pesait 13 Ko répétés
   dans chacune des 5 000 pages, soit deux tiers de leur poids. Servie une fois,
   mise en cache (vercel.json /src/). Mêmes tokens que styles.css. */
:root{color-scheme:dark;--ink:#0A0E17;--panel:#121826;--panel-2:#1A2231;--line:#293349;--glow:#14203c;--text:#EBEFF8;--dim:#8593B0;--soft:#C3CCE0;--blue:#4C82FF;--green:#4CBB6C;--pink:#E56AA8;--red:#E4485C;--grey:#5F6E8C;--gold-line:#5b4a2a;--gold-text:#d6b168;--s90:#3FC162;--s80:#9CC93F;--s70:#E7B23B;--s60:#E5674B;--sna:#5F6E8C;--display:"Bricolage Grotesque",system-ui,-apple-system,"Segoe UI",sans-serif;--sans:"Hanken Grotesk",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace}
@media(prefers-color-scheme:light){:root{color-scheme:light;--ink:#F1F4FA;--panel:#FFFFFF;--panel-2:#E9EEF8;--line:#D3DBEC;--glow:#DCE5F7;--text:#111828;--dim:#5A667F;--soft:#39445B;--blue:#2B55D0;--green:#1E7C43;--pink:#B93B7E;--red:#BF2637;--grey:#6C7791;--gold-line:#C9A45C;--gold-text:#7A5A1A;--s90:#1E8A46;--s80:#5E8B1E;--s70:#B57912;--s60:#C13B2E;--sna:#6C7791}}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(1200px 600px at 50% -200px,var(--glow) 0,transparent 70%),var(--ink);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;line-height:1.55}
img{max-width:100%}
.wrap{max-width:820px;margin:0 auto;padding:24px 16px 80px}
.sitenav{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.sitenav .brand{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--text);text-decoration:none;letter-spacing:.02em}
.sitenav .brand span{color:var(--dim);font-weight:400}
.sitenav .navlinks{display:flex;gap:6px;flex-wrap:wrap}
.sitenav .navlinks a{font-size:13.5px;color:var(--dim);text-decoration:none;padding:5px 11px;border-radius:999px;border:1px solid transparent}
.sitenav .navlinks a:hover{color:var(--text);border-color:var(--line)}
.sitenav .navlinks a[aria-current]{color:var(--text);border-color:var(--line);background:var(--panel-2)}
.genrenav.big a{font-size:15px;padding:10px 16px}
.back{display:inline-block;color:var(--blue);text-decoration:none;font-family:var(--mono);font-size:13px;margin-bottom:22px}
.back:hover{text-decoration:underline}
.crumb{font-family:var(--mono);font-size:12px;color:var(--dim);margin-bottom:22px;line-height:1.7}
.crumb a{color:var(--blue);text-decoration:none}
.crumb a:hover{text-decoration:underline}
.crumb .sep{color:var(--line);margin:0 4px}
.crumb [aria-current]{color:var(--soft)}
.lead{color:var(--soft);font-size:15px;line-height:1.6;margin:0 0 20px;max-width:60ch}
.related{margin-top:40px;padding-top:20px;border-top:1px solid var(--line)}
.related h2{font-family:var(--display);font-size:17px;font-weight:700;letter-spacing:-.01em;margin:0 0 14px}
.related ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:2px 20px}
.related a{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;padding:7px 8px;border-radius:8px}
.related a:hover{background:var(--panel-2)}
.related .plate{width:34px;min-height:28px;border-radius:7px;flex:none;font-family:var(--mono);font-size:13px;font-weight:700}
.related .gt{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card{display:grid;grid-template-columns:220px 1fr;gap:26px;align-items:start}
.card .cover{border-radius:12px;overflow:hidden;border:1px solid var(--line);background:var(--panel-2);box-shadow:0 6px 22px rgba(0,0,0,.28);aspect-ratio:330/440}
.card .cover img{width:100%;height:100%;object-fit:cover;display:block}
h1{margin:0 0 12px;font-family:var(--display);font-size:clamp(24px,5vw,38px);line-height:1.05;font-weight:800;letter-spacing:-.02em}
.sub{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-family:var(--mono);font-size:12px;color:var(--dim);margin-bottom:18px}
.tag{border:1px solid var(--line);border-radius:4px;padding:2px 8px;letter-spacing:.03em}
.glink{color:var(--blue);text-decoration:none}
.glink:hover{text-decoration:underline}
.tag.classic{border-color:var(--gold-line);color:var(--gold-text)}
.tag.leaving{border-color:var(--red);color:var(--red)}
.tag.free{border-color:var(--pink);color:var(--pink)}
.scores{display:flex;gap:10px;margin-bottom:20px}
.plate{width:78px;min-height:62px;border:1px solid var(--line);border-radius:12px;background:var(--panel);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
.plate .n{font-family:var(--mono);font-size:26px;font-weight:700;line-height:1}
.plate .k{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
a.plate{text-decoration:none;transition:filter .12s ease}
a.plate:hover{filter:brightness(1.12)}
.b90{color:var(--s90);border-color:var(--s90)}.b80{color:var(--s80);border-color:var(--s80)}
.b70{color:var(--s70);border-color:var(--s70)}.b60{color:var(--s60);border-color:var(--s60)}
.bna{color:var(--sna)}
.plate.critic{border-width:1.5px}
.plate.critic.b90{background:color-mix(in srgb,var(--s90) 15%,var(--panel))}
.plate.critic.b80{background:color-mix(in srgb,var(--s80) 15%,var(--panel))}
.plate.critic.b70{background:color-mix(in srgb,var(--s70) 15%,var(--panel))}
.plate.critic.b60{background:color-mix(in srgb,var(--s60) 15%,var(--panel))}
.plate.critic.bna{border-color:var(--line)}
.plate.user .n{color:var(--text)}
.plate.user.u90{color:var(--s90);border-color:var(--s90)}
.plate.user.u80{color:var(--s80);border-color:var(--s80)}
.plate.user.u70{color:var(--s70);border-color:var(--s70)}
.plate.user.u60{color:var(--s60);border-color:var(--s60)}
.plate.user.u90 .n,.plate.user.u80 .n,.plate.user.u70 .n,.plate.user.u60 .n{color:inherit}
.lifelabel{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin-bottom:8px}
.times{display:flex;gap:22px;margin-bottom:20px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.times span{display:flex;flex-direction:column;gap:3px}
.times b{font-size:17px;letter-spacing:0;text-transform:none;color:var(--text);font-weight:700}
.avail{font-family:var(--mono);font-size:15px;margin-bottom:22px}
.avail .al{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin-right:6px}
.store{display:inline-block;background:var(--blue);color:#fff;text-decoration:none;font-weight:600;font-size:14px;padding:11px 18px;border-radius:10px}
.store:hover{filter:brightness(1.08)}
footer{margin-top:40px;padding-top:20px;border-top:1px solid var(--line)}
.kofi{color:var(--gold-text);text-decoration:none;font-weight:600;font-family:var(--mono);font-size:13px}
.kofi:hover{text-decoration:underline}
.feeds{font-family:var(--mono);font-size:13px;color:var(--dim)}
.rss{color:var(--blue);text-decoration:none}
.rss:hover{text-decoration:underline}
.hubh{font-family:var(--display);font-size:clamp(22px,5vw,34px);letter-spacing:-.02em}
.hubintro{color:var(--dim);max-width:60ch;margin:0 0 22px}
ol.hub{list-style:none;margin:0;padding:0;columns:2;column-gap:26px}
ol.hub li{break-inside:avoid;margin-bottom:2px}
ol.hub a{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;padding:6px 8px;border-radius:8px}
ol.hub a:hover{background:var(--panel-2)}
ol.hub .plate{width:34px;min-height:28px;border-radius:7px}
ol.hub .plate{font-family:var(--mono);font-size:13px;font-weight:700}
ol.hub .gt{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
ol.hub .lv{color:var(--red)}
.notice{font-family:var(--mono);font-size:13px;border:1px solid var(--line);border-left-width:3px;border-radius:8px;padding:10px 14px;margin:0 0 22px}
.notice.cur{border-left-color:var(--s90);color:var(--s90)}
.notice.past{border-left-color:var(--grey);color:var(--dim)}
ol.mgames{list-style:none;margin:0 0 26px;padding:0;display:flex;flex-direction:column;gap:2px}
.mg{display:grid;grid-template-columns:52px 1fr auto;gap:14px;align-items:center;color:var(--text);text-decoration:none;padding:10px 8px;border-radius:10px}
.mg:hover{background:var(--panel-2)}
.mgcover{width:52px;height:68px;border-radius:7px;overflow:hidden;background:var(--panel-2);display:block}
.mgcover img{width:100%;height:100%;object-fit:cover;display:block}
.mgbody{min-width:0;display:flex;flex-direction:column;gap:4px}
.mgtitle{font-family:var(--display);font-weight:700;font-size:16px;letter-spacing:-.01em}
.mgmeta{font-family:var(--mono);font-size:11px;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mgscores{display:flex;gap:7px;flex:none}
.mgscores .plate{width:42px;min-height:38px;border-radius:9px;font-family:var(--mono);font-size:15px;font-weight:700}
.mgscores .plate.user{color:var(--soft);border-color:var(--line)}
.monthnav{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin:26px 0 0;padding-top:18px;border-top:1px solid var(--line);font-family:var(--mono);font-size:12.5px}
.monthnav a{color:var(--blue);text-decoration:none}
.monthnav .mid{display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center}
.monthnav a:hover{text-decoration:underline}
.fsec{font-family:var(--display);font-size:19px;font-weight:700;letter-spacing:-.01em;margin:30px 0 14px}
.fmore{margin:0 0 10px;font-family:var(--mono);font-size:13px}
.fmore a{color:var(--blue);text-decoration:none}
.fmore a:hover{text-decoration:underline}
.farch{columns:4 160px;column-gap:22px}
.fyear{break-inside:avoid;margin-bottom:18px}
.fyear h3{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--dim);margin:0 0 8px;font-weight:500}
.fyear ul{list-style:none;margin:0;padding:0}
.fyear li{margin-bottom:1px}
.fyear a{display:flex;justify-content:space-between;gap:8px;color:var(--text);text-decoration:none;font-size:14px;padding:5px 8px;border-radius:7px}
.fyear a:hover{background:var(--panel-2)}
.fyear .fn{font-family:var(--mono);font-size:11px;color:var(--dim)}
.genrenav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.genrenav a,.genrenav .on{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:999px;padding:7px 13px;font-size:13.5px;text-decoration:none}
.genrenav a{color:var(--text)}
.genrenav a:hover{border-color:var(--blue);color:var(--blue)}
.genrenav .on{background:var(--panel-2);color:var(--dim);border-style:dashed}
.genrenav .fn{font-family:var(--mono);font-size:11px;color:var(--dim)}
/* ---- blog ---- */
.post{max-width:68ch}
.pangle{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--blue-2,var(--blue));margin:0 0 10px}
.post h1{font-size:clamp(26px,4.4vw,40px);line-height:1.05;margin:0 0 10px}
.pdate{font-family:var(--mono);font-size:12px;color:var(--dim);margin:0 0 22px}
.pcard{display:flex;gap:20px;align-items:flex-start;margin:0 0 24px;padding:18px;background:var(--panel);border:1px solid var(--line);border-radius:14px}
.pcover{flex:none;width:120px;border-radius:10px;overflow:hidden;display:block;border:1px solid var(--line)}
.pcover img{width:100%;height:auto;display:block}
.pfacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:14px 18px;margin:0;flex:1}
.pfacts dt{font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--dim);margin-bottom:4px}
.pfacts dd{margin:0;font-size:15px;color:var(--text)}
.pfacts .pv{font-family:var(--mono);font-size:22px;font-weight:700;line-height:1}
.pfacts .pv i{font-style:normal;font-size:11px;color:var(--dim)}
.pfacts .pv.b90,.pfacts .pv.u90{color:var(--s90)}.pfacts .pv.b80,.pfacts .pv.u80{color:var(--s80)}
.pfacts .pv.b70,.pfacts .pv.u70{color:var(--s70)}.pfacts .pv.b60,.pfacts .pv.u60{color:var(--s60)}
.pfacts .pv.bna{color:var(--sna)}
.post .lead{font-size:17px;color:var(--text);line-height:1.6;margin:0 0 18px;max-width:none}
.post p{font-size:16px;line-height:1.72;color:var(--soft);margin:0 0 16px}
.pmore{font-family:var(--mono);font-size:13px}
.pmore a{color:var(--blue);text-decoration:none}
.pmore a:hover{text-decoration:underline}
ol.posts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
ol.posts a{display:flex;gap:16px;align-items:flex-start;color:var(--text);text-decoration:none;padding:14px 10px;border-radius:12px;border-bottom:1px solid var(--line)}
ol.posts a:hover{background:var(--panel-2)}
.pl-cover{flex:none;width:58px;border-radius:8px;overflow:hidden;background:var(--panel-2);display:block}
.pl-cover img{width:100%;height:auto;display:block}
.pl-body{display:flex;flex-direction:column;gap:5px;min-width:0}
.pl-angle{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.pl-title{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:-.01em;line-height:1.2}
.pl-lead{font-size:14px;color:var(--dim);line-height:1.5}
@media(max-width:640px){.pcard{flex-direction:column}.pcover{width:96px}}
@media(max-width:640px){.card{grid-template-columns:130px 1fr;gap:16px}ol.hub{columns:1}.monthnav{font-size:11.5px}}
/* articles d'annonce (arrivées, jeux du mois, départs) — liste de jeux */
.nlist{list-style:none;margin:8px 0 18px;padding:0;display:flex;flex-direction:column;gap:6px}
.nitem{display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.ncover{width:48px;aspect-ratio:3/4;border-radius:6px;overflow:hidden;background:var(--panel-2)}
.ncover img{width:100%;height:100%;object-fit:cover;display:block}
.nbody{display:flex;flex-direction:column;gap:2px;min-width:0}
.nt{font-weight:700}.nt a{color:var(--text);text-decoration:none}.nt a:hover{text-decoration:underline}
.nm{font-size:13px;color:var(--dim)}
.nscore{display:flex;align-items:center;gap:8px}
.nscore .plate{width:40px;min-height:32px;border-radius:8px;font-family:var(--mono);font-size:14px;font-weight:700}
.nscore .psn{font-family:var(--mono);font-size:13px;color:var(--dim)}
.nscore .psn.u90{color:var(--s90)}.nscore .psn.u80{color:var(--s80)}.nscore .psn.u70{color:var(--s70)}.nscore .psn.u60{color:var(--s60)}
.nsrc{font-size:13px;color:var(--dim)}.nsrc a{color:var(--blue)}
@media(max-width:520px){.nitem{grid-template-columns:40px 1fr;}.nscore{grid-column:2}}
