/* Démo « quebec » : le relais entre Montréal et l'équipe d'Antananarivo sur 24 h (landing Équipe TI Québec).
   Préfixe lp-quebec-. Toutes les places sont réservées : l'animation ne change que l'opacité, les couleurs et la position du curseur. */
.lp-quebec-app{position:relative;z-index:2;container:lpquebec/inline-size;background:#fff;border:1px solid #e4def2;border-radius:18px;box-shadow:0 30px 70px -20px rgba(42,20,110,.28),0 10px 24px -12px rgba(42,20,110,.18);overflow:hidden;font-family:Inter,system-ui,sans-serif;color:#20201f;min-width:0}
.lp-quebec-app *{box-sizing:border-box}

/* En-tête : client, journée, plage commune */
.lp-quebec-top{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid #f0edf6;background:#fcfbfe}
.lp-quebec-logo{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#7b4bff,#6024f5);color:#fff;font:700 14px/1 'Inter Tight',Inter,sans-serif}
.lp-quebec-id{flex:1;min-width:0}
.lp-quebec-id strong{display:block;font:600 14px/1.25 'Inter Tight',Inter,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lp-quebec-id strong span{font-weight:500;color:#62616b}
.lp-quebec-id small{display:block;margin-top:2px;font-size:11.5px;color:#8a8496;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Horloges des villes */
.lp-quebec-clocks{display:grid;gap:6px;padding:10px 10px 0}
.lp-quebec-clock{position:relative;min-width:0;padding:8px 10px 8px 12px;border-radius:12px;background:#f8f7fb;border:1px solid #f0ecf7;transition:background .3s,border-color .3s}
.lp-quebec-clock::before{content:"";position:absolute;left:-1px;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--zc)}
.lp-quebec-city{display:flex;align-items:baseline;justify-content:space-between;gap:4px;font-size:11px;font-weight:600;color:#62616b;white-space:nowrap}
.lp-quebec-city span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.lp-quebec-city em{flex:none;font-style:normal;font-size:9.5px;font-weight:600;color:#a29db0;font-variant-numeric:tabular-nums}
.lp-quebec-time{display:block;margin-top:1px;font:600 19px/1.15 'Inter Tight',Inter,sans-serif;letter-spacing:-.01em;color:#20201f;font-variant-numeric:tabular-nums;white-space:nowrap}
.lp-quebec-state{display:flex;align-items:center;gap:5px;margin-top:3px;font-size:10.5px;font-weight:600;color:#8a8496;white-space:nowrap}
.lp-quebec-state i{flex:none;width:7px;height:7px;border-radius:50%;background:#c9c4d3;transition:background .3s,box-shadow .3s}
.lp-quebec-clock.is-on{background:#fff;border-color:#e4def2}
.lp-quebec-clock.is-on .lp-quebec-state{color:#15803d}
.lp-quebec-clock.is-on .lp-quebec-state i{background:#16a34a;box-shadow:0 0 0 3px rgba(22,163,74,.16)}
.lp-quebec-team{margin-top:4px;font-size:10px;line-height:1.3;color:#8a8496;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lp-quebec-team em{display:none;font-style:normal;font-weight:600}

/* Frise de 24 h */
.lp-quebec-tl{margin:8px 10px 0;padding:9px 11px 8px;border:1px solid #ebe7f2;border-radius:12px}
.lp-quebec-tl-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-size:10.5px;font-weight:600;color:#62616b;white-space:nowrap}
.lp-quebec-legend{display:inline-flex;align-items:center;gap:10px;font-weight:500;color:#8a8496;min-width:0;overflow:hidden}
.lp-quebec-legend > span{display:inline-flex;align-items:center;gap:5px}
.lp-quebec-legend i{flex:none;width:12px;height:7px;border-radius:3px}
.lp-quebec-lg-night{background:repeating-linear-gradient(135deg,#dcd6ea 0 2px,#f1eef7 2px 4px)}
.lp-quebec-lg-common{background:rgba(96,36,245,.22);outline:1px dashed #a78bfa}
.lp-quebec-grid{display:grid;grid-template-columns:92px minmax(0,1fr);column-gap:8px}
.lp-quebec-labels{display:grid;row-gap:7px}
.lp-quebec-labels span{position:relative;display:flex;flex-direction:column;justify-content:center;min-width:0;padding-left:12px;white-space:nowrap}
.lp-quebec-labels span::before{content:"";position:absolute;left:0;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:var(--zc)}
.lp-quebec-labels b{font-size:11px;font-weight:600;line-height:1.2;color:#20201f;overflow:hidden;text-overflow:ellipsis}
.lp-quebec-labels small{font-size:10px;line-height:1.2;color:#8a8496;overflow:hidden;text-overflow:ellipsis}
.lp-quebec-tracks{position:relative;display:grid;row-gap:7px;min-width:0}
.lp-quebec-night{position:absolute;top:-5px;bottom:-5px;z-index:1;background:repeating-linear-gradient(135deg,rgba(32,32,31,.07) 0 2px,transparent 2px 6px)}
.lp-quebec-band{position:absolute;top:-5px;bottom:-5px;z-index:2;border-radius:5px;background:rgba(96,36,245,.14);outline:1px dashed #a78bfa;transition:background .3s}
.lp-quebec-app.is-common .lp-quebec-band{background:rgba(96,36,245,.2)}
.lp-quebec-tick{position:absolute;top:-5px;bottom:-5px;width:1px;background:#ebe7f2;z-index:1}
.lp-quebec-track{position:relative;border-radius:6px;background:#f8f7fb}
.lp-quebec-work{position:absolute;top:3px;bottom:3px;border-radius:5px;background:var(--zc);opacity:.26}
.lp-quebec-dot{position:absolute;top:50%;z-index:4;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;background:#fff;border:2.5px solid var(--zc);box-shadow:0 1px 3px rgba(42,20,110,.25);transition:opacity .3s,transform .3s}
.lp-quebec-cursor{position:absolute;top:-5px;bottom:-6px;z-index:5;width:2px;margin-left:-1px;border-radius:2px;background:#20201f}
.lp-quebec-cursor::before{content:"";position:absolute;top:-3px;left:50%;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:#20201f;box-shadow:0 0 0 3px rgba(32,32,31,.14)}
.lp-quebec-axis{position:relative;height:15px;margin-top:5px}
.lp-quebec-axis.is-sub,.lp-quebec-axis-label.is-sub{margin-top:1px}
.lp-quebec-axis.is-sub span{color:#6024f5;opacity:.8}
.lp-quebec-axis-label{align-self:end;height:15px;margin-top:5px;padding-left:12px;font-size:10px;font-weight:600;color:#8a8496;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lp-quebec-axis span{position:absolute;top:2px;transform:translateX(-50%);font-size:10px;color:#8a8496;white-space:nowrap;font-variant-numeric:tabular-nums}
.lp-quebec-axis span.is-first{transform:none}
.lp-quebec-axis span.is-last{transform:translateX(-100%)}
.lp-quebec-note{margin:4px 0 0;font-size:10px;color:#8a8496;line-height:1.35}

/* Indicateurs : au réveil, plage commune */
.lp-quebec-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:6px 10px 0}
.lp-quebec-kpi{display:flex;align-items:center;gap:9px;min-width:0;padding:8px 10px;border-radius:12px;border:1px solid #ebe7f2;background:#fff;transition:border-color .3s,box-shadow .3s,background .3s}
.lp-quebec-kpi-ico{flex:none;display:grid;place-items:center;width:30px;height:30px;padding:7px;border-radius:9px;background:#f0ebff;color:#6024f5}
.lp-quebec-kpi-ico svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.lp-quebec-kpi-wake .lp-quebec-kpi-ico{background:#e8f7ee;color:#15803d}
.lp-quebec-kpi-txt{min-width:0}
.lp-quebec-kpi-txt small{display:block;font-size:10.5px;font-weight:600;color:#8a8496;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lp-quebec-kpi-txt strong{display:block;margin-top:1px;font-size:12px;font-weight:600;line-height:1.3;color:#20201f}
.lp-quebec-kpi-txt strong b{font:700 14px/1 'Inter Tight',Inter,sans-serif;color:#15803d;font-variant-numeric:tabular-nums}
.lp-quebec-app.is-ready .lp-quebec-kpi-wake{border-color:#cdebd8;background:#f6fcf8;box-shadow:0 6px 16px -10px rgba(22,163,74,.5)}
.lp-quebec-app.is-common .lp-quebec-kpi-common{border-color:#d9cdfb;background:#faf8ff;box-shadow:0 6px 16px -10px rgba(96,36,245,.5)}

/* Fil de la journée */
.lp-quebec-feed{list-style:none;margin:0;padding:8px 10px 0;display:grid;gap:4px}
.lp-quebec-ev{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:10px;padding:6px 10px 6px 9px;border-radius:10px;border:1px solid #f0ecf7;background:#fff;transition:opacity .4s,transform .4s,border-color .3s,box-shadow .3s,background .3s}
.lp-quebec-ev-time{display:flex;flex-direction:column;min-width:0}
.lp-quebec-ev-time b{font:600 13px/1.2 'Inter Tight',Inter,sans-serif;color:#20201f;white-space:nowrap;font-variant-numeric:tabular-nums}
.lp-quebec-ev-time small{font-size:9.5px;line-height:1.2;color:#8a8496}
.lp-quebec-ev-body{min-width:0;padding-left:9px;border-left:3px solid var(--zc)}
.lp-quebec-ev-body strong{display:block;font-size:12px;font-weight:600;line-height:1.3;color:#20201f}
.lp-quebec-ev-body small{display:block;margin-top:1px;font-size:10.5px;line-height:1.3;color:#62616b}
.lp-quebec-ev.is-all .lp-quebec-ev-body{border-left-color:#6024f5}
.lp-quebec-ev.is-all{background:#faf8ff;border-color:#e4dbfb}
.lp-quebec-ev-local{display:flex;flex-direction:column;gap:1px;min-width:0}
.lp-quebec-ev-local span{display:flex;align-items:center;gap:4px;font-size:10px;color:#a29db0;white-space:nowrap}
.lp-quebec-ev-local span i{flex:none;width:6px;height:6px;border-radius:50%;background:#d6d1df}
.lp-quebec-ev-local span b{font-weight:600;font-variant-numeric:tabular-nums}
.lp-quebec-ev-local span.is-on{color:#62616b}
.lp-quebec-ev-local span.is-on b{color:#20201f}
.lp-quebec-ev-local span.is-on i{background:#16a34a}
.lp-quebec-ev.is-current{border-color:#d9cdfb;box-shadow:0 6px 16px -10px rgba(96,36,245,.5)}

/* Équipe */
.lp-quebec-crew{margin:8px 10px 10px;padding:9px 10px 10px;border:1px solid #ebe7f2;border-radius:12px;background:#fcfbfe}
.lp-quebec-crew-title{display:block;margin-bottom:8px;font-size:10.5px;font-weight:600;color:#62616b}
.lp-quebec-members{display:grid;gap:6px}
.lp-quebec-member{display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0}
.lp-quebec-av{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--zc);color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.02em}
.lp-quebec-member.is-client .lp-quebec-av{box-shadow:0 0 0 2px #fff,0 0 0 3.5px #d6d1df}
.lp-quebec-member-role{margin-top:5px;max-width:100%;font-size:10.5px;font-weight:600;line-height:1.25;color:#20201f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lp-quebec-member-city{max-width:100%;font-size:10px;color:#8a8496;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lp-quebec-langs{display:flex;gap:3px;margin-top:4px}
.lp-quebec-langs em{padding:0 4px;border-radius:4px;background:#f0ebff;color:#4b16d0;font-size:9px;font-style:normal;font-weight:700;letter-spacing:.03em;line-height:15px}

/* États de l'animation (posés par le script) */
.lp-quebec-app .lp-quebec-dot.is-off{opacity:0;transform:scale(.4)}
.lp-quebec-app .lp-quebec-ev.is-off{opacity:0;transform:translateY(4px)}

/* Largeurs réduites (colonne étroite, mobile) */
@container lpquebec (max-width:470px){
  .lp-quebec-top{padding:10px 11px;gap:8px}
  .lp-quebec-clocks{gap:5px;padding:8px 8px 0}
  .lp-quebec-kpis{grid-template-columns:minmax(0,1fr);padding:6px 8px 0;gap:5px}
  .lp-quebec-kpi{padding:7px 9px}
  .lp-quebec-clock{padding:7px 7px 7px 9px}
  .lp-quebec-time{font-size:16px}
  .lp-quebec-tl{margin:7px 8px 0;padding:8px 9px 7px}
  .lp-quebec-lg-w{display:none!important}
  .lp-quebec-grid{grid-template-columns:74px minmax(0,1fr);column-gap:6px}
  .lp-quebec-labels span{padding-left:10px}
  .lp-quebec-labels b{font-size:10px}
  .lp-quebec-labels small{font-size:9.5px}
  .lp-quebec-axis-label{padding-left:10px;font-size:9.5px}
  .lp-quebec-feed{padding:7px 8px 0}
  .lp-quebec-ev{grid-template-columns:48px minmax(0,1fr);grid-template-areas:"time body" "time local";gap:3px 7px;padding:6px 8px 6px 7px}
  .lp-quebec-ev-time{grid-area:time;align-self:start;padding-top:1px}
  .lp-quebec-ev-body{grid-area:body}
  .lp-quebec-ev-local{grid-area:local;flex-direction:row;flex-wrap:wrap;gap:0 10px;padding-left:10px}
  .lp-quebec-ev-body{padding-left:7px}
  .lp-quebec-ev-body strong{font-size:11.5px}
  .lp-quebec-ev-time b{font-size:12px}
  .lp-quebec-ev-local span{font-size:9.5px}
  .lp-quebec-crew{margin:7px 8px 8px;padding:8px}
  .lp-quebec-members{gap:3px}
  .lp-quebec-member-role{font-size:9.5px}
  .lp-quebec-member-city{font-size:9px}
}
@media (prefers-reduced-motion:reduce){.lp-quebec-app *{transition:none!important}}
