/* La Tournée de Bollène — espace jeu, version 3 */
body.game-page{background:#100720;background-image:radial-gradient(ellipse at 12% 8%,#552d9d60,transparent 45%),radial-gradient(ellipse at 95% 40%,#722b7c30,transparent 40%),radial-gradient(circle,#c6a4ff3b 1px,transparent 1.2px);background-size:auto,auto,91px 103px;background-attachment:fixed}
.game-portal{max-width:1120px;padding:36px 24px 60px}.portal-topline{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px;font-size:11px;letter-spacing:.12em;font-weight:750;text-transform:uppercase;color:#bfa6df}.portal-topline a{color:#d4c3e9;text-decoration:none}.portal-status{display:flex;align-items:center;gap:8px}.portal-dot{width:7px;height:7px;border-radius:50%;background:#b7ff00;box-shadow:0 0 12px #b7ff0080}
.portal-hero{position:relative;display:grid;grid-template-columns:1.05fr 1fr;gap:25px;border:1px solid #9e77df50;border-radius:24px;background:linear-gradient(120deg,#362269f5,#21113ee8);padding:32px;overflow:hidden;box-shadow:0 20px 70px #08031240}.portal-hero::after{content:'';position:absolute;right:-30px;bottom:-80px;width:350px;height:180px;background:#bcff0015;filter:blur(70px);pointer-events:none}.portal-hero-copy{position:relative;z-index:1;align-self:center}.portal-chip{display:inline-block;padding:7px 12px;border-radius:99px;background:#b7ff00;color:#221037;font-weight:850;font-size:10px;letter-spacing:.07em;box-shadow:0 0 18px #b7ff0030}.game-portal .portal-hero h1{font-size:clamp(36px,4.8vw,58px);font-weight:900;text-transform:uppercase;line-height:1.02;letter-spacing:-.035em;margin:22px 0 18px;max-width:none;text-shadow:2px 3px 0 #8f54d4,4px 5px 0 #100a23}.game-portal .portal-hero h1 em{color:#c6ff32;text-shadow:2px 3px 0 #58652b,4px 5px 0 #100a23}.portal-hero-copy>p{font-size:14px;line-height:1.8;color:#d9cde9;max-width:470px;margin:0 0 20px}.portal-ctas{display:flex;gap:10px;flex-wrap:wrap}.game-portal .portal-cta{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:13px 19px;border-radius:99px;font-size:11px;letter-spacing:.035em;font-weight:850;text-decoration:none;text-transform:uppercase;background:#8d46ff;color:#fff;border:1px solid #aa71ff;box-shadow:0 4px 0 #562997;transition:transform .2s,box-shadow .2s}.game-portal .portal-cta:hover{transform:translateY(-2px);box-shadow:0 6px 0 #562997}.game-portal .portal-cta.light{background:#f3edff;color:#5932ad;border-color:#fff;box-shadow:0 4px 0 #a697c2}.portal-fine{display:flex;gap:12px;flex-wrap:wrap;color:#b9a4d0;font-size:10px;margin-top:19px}.portal-hero-art{position:relative;min-height:320px;align-self:stretch;border-radius:17px;overflow:hidden;border:1px solid #c18bfe55;box-shadow:0 12px 40px #06011255;background:#1b102e}.portal-hero-art img{width:100%;height:100%;object-fit:cover;object-position:62% 50%;display:block;position:absolute;inset:0}.portal-art-label{position:absolute;bottom:16px;left:16px;right:16px;padding:10px 13px;border:1px solid #f0daff50;border-radius:12px;backdrop-filter:blur(12px);background:#201034aa;font-size:11px;font-weight:700;color:#fff;display:flex;align-items:center;gap:8px}.portal-art-label span{color:#c6ff32}
.portal-panel{border:1px solid #9e77df45;border-radius:21px;background:linear-gradient(135deg,#2d1b58e8,#21123ee8);padding:24px;margin-top:24px;box-shadow:0 10px 35px #08031230}.portal-section-heading{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:18px}.game-portal .portal-section-heading h2{margin:0;font-size:15px;font-weight:850;letter-spacing:.025em;text-transform:uppercase;display:flex;align-items:center;gap:9px;color:#f7f2ff}.portal-section-heading h2::before{content:'';width:8px;height:8px;border-radius:50%;background:#b7ff00;box-shadow:0 0 0 3px #b7ff0015,0 0 12px #b7ff0060;flex-shrink:0}.portal-section-heading>a{font-size:11px;color:#c6ff32;text-decoration:none}.portal-step-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.portal-step{border:1px solid #b19ad12b;background:#ffffff04;border-radius:14px;padding:19px;position:relative}.portal-step-number{position:absolute;right:16px;top:15px;color:#a88bd54f;font-size:28px;font-weight:900}.portal-step svg{width:25px;height:25px;color:#d1b1ff;margin-bottom:8px}.game-portal .portal-step h3{font-size:14px;color:#b7ff00;margin:4px 0 9px}.portal-step p{font-size:12px;color:#d3c7e3;line-height:1.8;margin:0}.portal-mini-note{margin:15px 0 0;font-size:11px;color:#bca9cf;line-height:1.7}
.game-portal .velo-layout{grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:18px}.game-portal .velo-stage:not(.is-playing) canvas{height:470px;max-height:none}.game-portal .velo-stage:not(.is-playing){border-radius:17px;border-color:#a87cda65;background:radial-gradient(ellipse at center,#4d3470,#1b0f30)}.game-portal .velo-side{gap:12px}.game-portal .velo-card{padding:18px;border-radius:15px;border-color:#b19ad12b;background:#ffffff04}.game-portal .velo-card h2{font-size:16px;margin-top:4px}.game-portal .velo-card p{font-size:11px;line-height:1.7}.game-portal .velo-kicker{font-size:10px;letter-spacing:.12em}.game-portal .velo-tier{gap:10px;padding:11px 0}.game-portal .velo-tier strong{font-size:12px}.game-portal .velo-tier small{font-size:11px}.game-portal .velo-notice{font-size:12px}.game-portal .velo-dialog h2{font-size:27px}.game-portal .velo-dialog p{font-size:12px}.game-portal .velo-dialog{padding:20px;max-width:340px}.game-portal .velo-actions button{font-size:12px;padding:12px 15px}.game-portal .velo-consent{font-size:11px}.game-portal .velo-stage.is-playing canvas{height:auto;max-height:none}.game-portal .velo-stage.is-playing{border-radius:22px}.game-portal .velo-foot button{font-size:11px}
.portal-protection{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;margin-top:12px;border:1px solid #b7ff0028;background:#b7ff0007;border-radius:12px;font-size:11px;color:#d3c8df;line-height:1.7}.portal-protection svg{width:24px;height:24px;flex-shrink:0;color:#b7ff00}.portal-protection strong{color:#ddffad}.portal-milestone{position:absolute;top:76px;left:50%;transform:translate(-50%,-10px);pointer-events:none;background:linear-gradient(110deg,#a2db0d,#d3ff72);color:#25143d;border:1px solid #efffc9;border-radius:99px;padding:9px 17px;font-size:13px;font-weight:850;white-space:nowrap;opacity:0;transition:opacity .25s,transform .25s;box-shadow:0 6px 28px #08031050}.portal-milestone.visible{opacity:1;transform:translate(-50%,0)}
.portal-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid #b19ad12b;border-radius:14px;overflow:hidden;margin-bottom:20px;background:#130a282b}.portal-stat{padding:18px;border-right:1px solid #b19ad12b}.portal-stat:last-child{border:0}.portal-stat strong{display:block;color:#d2ff61;font-size:25px;font-weight:850;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.portal-stat span{display:block;color:#c8b8da;font-size:10px;margin-top:7px}.portal-personal-note{font-size:11px;line-height:1.7;color:#cdbbdc;margin:0 0 18px}.portal-badges{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.portal-badge-card{background:#ffffff04;border:1px solid #b19ad12b;border-radius:14px;padding:16px 8px 12px;text-align:center;position:relative;overflow:hidden}.portal-medal{--metal:#9b7caa;width:78px;height:78px;border-radius:50%;display:grid;place-items:center;margin:0 auto 12px;border:4px solid var(--metal);background:radial-gradient(circle at 30% 20%,#624282,#1b0d32 70%);color:#d0f983;box-shadow:0 0 0 3px #140a23,0 0 0 4px #c4a2ed35,inset 0 0 0 3px #c4a2ed25,0 6px 15px #0004;position:relative}.portal-medal::before{content:'✦';position:absolute;top:-9px;left:4px;color:#fff7b7;font-size:18px;text-shadow:0 1px 4px #0009}.portal-medal svg{width:44px;height:44px;filter:drop-shadow(0 2px 4px #0008)}.portal-badge-card:nth-child(2) .portal-medal{--metal:#cd9878}.portal-badge-card:nth-child(3) .portal-medal{--metal:#c3c7d7}.portal-badge-card:nth-child(4) .portal-medal{--metal:#d1b064}.portal-badge-card:nth-child(5) .portal-medal{--metal:#b1e650}.portal-badge-card:nth-child(6) .portal-medal{--metal:#d9a5ff;color:#d9ff7f;background:radial-gradient(circle at 30% 20%,#952da1,#261039 70%)}.portal-badge-card.locked .portal-medal{filter:grayscale(.85);opacity:.5}.portal-badge-card.unlocked{border-color:#b7ff0065;background:linear-gradient(140deg,#b7ff000a,#8d46ff13)}.portal-badge-card.unlocked::after{content:'✓';position:absolute;top:8px;right:9px;color:#b7ff00;font-size:13px;font-weight:bold}.portal-badge-card strong{display:block;font-size:11px;color:#f1e8ff;line-height:1.3;min-height:28px}.portal-badge-card small{display:block;font-size:9px;color:#bdabce;line-height:1.6;margin-top:5px}.portal-progress-track{height:6px;border-radius:99px;background:#130b27;overflow:hidden;margin:19px 0 10px}.portal-progress-track span{display:block;width:0;height:100%;background:linear-gradient(90deg,#9d60ee,#b7ff00);border-radius:99px;transition:width .6s}.portal-progress-caption{font-size:11px;color:#cfbedf;line-height:1.7}.portal-gifts details summary{cursor:pointer;font-size:13px;font-weight:750;color:#e8dcf4}.portal-gifts details[open] summary{margin-bottom:15px}.portal-bottom{display:flex;justify-content:center;flex-wrap:wrap;gap:10px 22px;margin-top:25px;font-size:11px}.portal-bottom a{color:#cdbade}.portal-bottom span{color:#927fa8}.game-portal .velo-code{display:block;margin:7px 0}
@media(max-width:900px){.game-portal{padding:24px 16px 45px}.portal-hero{padding:24px;gap:18px}.portal-hero-art{min-height:300px}.portal-badges{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.portal-badge-card{padding:18px 10px}.portal-badge-card strong{min-height:0}.portal-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-stat:nth-child(2){border-right:0}.portal-stat:nth-child(-n+2){border-bottom:1px solid #b19ad12b}.game-portal .velo-layout{grid-template-columns:minmax(0,1fr) 260px}}
@media(max-width:680px){.portal-topline{font-size:9px;letter-spacing:.06em}.portal-hero{grid-template-columns:1fr;padding:22px;border-radius:19px}.portal-hero-copy{order:1}.portal-hero-art{min-height:210px;order:0}.portal-hero-art img{object-position:center 48%}.portal-art-label{font-size:10px;bottom:11px;left:11px;right:11px}.game-portal .portal-hero h1{font-size:39px;margin-top:17px}.portal-hero-copy>p{font-size:13px}.portal-ctas{gap:10px}.game-portal .portal-cta{font-size:10px;padding:12px 15px}.portal-fine{font-size:9px;gap:10px}.portal-panel{padding:18px;margin-top:18px;border-radius:18px}.portal-step-grid{grid-template-columns:1fr}.portal-step{padding:16px 18px}.portal-step svg{width:22px;height:22px;float:left;margin-right:12px;margin-top:3px}.game-portal .portal-step h3{margin-top:0;margin-left:34px}.portal-step p{margin-left:34px;font-size:11px}.portal-step-number{font-size:23px;top:12px}.portal-section-heading{margin-bottom:15px}.game-portal .portal-section-heading h2{font-size:13px}.game-portal .velo-layout{grid-template-columns:1fr}.game-portal .velo-stage:not(.is-playing) canvas{height:auto;max-height:none}.game-portal .velo-stage:not(.is-playing) .velo-overlay{padding:14px}.game-portal .velo-dialog{padding:17px}.game-portal .velo-dialog h2{font-size:24px}.game-portal .velo-symbol{width:58px;height:62px}.game-portal .velo-side{grid-template-columns:1fr}.portal-badges{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.portal-medal{width:82px;height:82px}.portal-stat{padding:15px}.portal-stat strong{font-size:23px}.portal-personal-note{font-size:11px}.portal-mini-note{font-size:10px}.portal-milestone{font-size:11px;top:65px}}
@media(prefers-reduced-motion:reduce){.portal-cta,.portal-progress-track span,.portal-milestone{transition:none!important}}

.portal-portrait{position:absolute;inset:4px;border-radius:50%;background:url("images/jeu/livreur-anime-v2.png") 20% 0/372% 372% no-repeat}.portal-medal svg{position:absolute;right:-2px;bottom:-2px;z-index:1;width:25px;height:25px;background:#211039dd;border:1px solid var(--metal);border-radius:50%;padding:3px}.portal-status.paused .portal-dot{background:#ffbd66;box-shadow:0 0 12px #ffbd6655}#depart,#progression{scroll-margin-top:100px}

.portal-run-meter{position:absolute;bottom:70px;left:18px;right:18px;padding:10px 12px;border:1px solid #bc8eed55;border-radius:11px;background:#201133c9;backdrop-filter:blur(8px);pointer-events:none}.portal-run-meter>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:12px}.portal-run-meter span{font-size:8px;letter-spacing:.11em;color:#dbcce9;font-weight:700}.portal-run-meter strong{font-size:12px;color:#d5ff74}.portal-run-track{height:4px;margin-top:6px;background:#0d051d90;border-radius:99px;overflow:hidden}.portal-run-track span{display:block;height:100%;width:0;background:linear-gradient(90deg,#a56cff,#c6ff32);border-radius:99px}.velo-stage:not(.is-playing) .portal-run-meter{display:none}

/* Identité propre : plan de ville et carnet de tournée, sans fond spatial. */
body.game-page{background-image:radial-gradient(ellipse at 10% 5%,#552d9d55,transparent 45%),radial-gradient(ellipse at 95% 40%,#722b7c28,transparent 40%),linear-gradient(90deg,#b19ad108 1px,transparent 1px),linear-gradient(0deg,#b19ad108 1px,transparent 1px);background-size:auto,auto,82px 82px,82px 82px}.portal-badges{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.portal-badge-card{display:grid;grid-template-columns:74px 1fr;grid-template-rows:1fr 1fr;column-gap:14px;text-align:left;padding:18px;align-items:center}.portal-medal{width:64px;height:64px;grid-column:1;grid-row:1/3;margin:0}.portal-badge-card strong{align-self:end;min-height:0;font-size:12px}.portal-badge-card small{align-self:start;margin-top:5px}.portal-badge-card.unlocked::after{top:9px;right:10px}@media(max-width:900px){.portal-badges{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-badge-card{padding:16px;column-gap:10px}}@media(max-width:560px){.portal-badges{grid-template-columns:1fr}.portal-badge-card{grid-template-columns:64px 1fr;padding:14px 17px;column-gap:17px}.portal-medal{width:56px;height:56px}.portal-badge-card strong{font-size:13px}.portal-badge-card small{font-size:10px}}
