/* QPX-01C — mise en scène immersive du TODAY de qevyo-app. Jetons de l'APP uniquement (qpx/app/qevyo-app.css, copie de
   qevyo-app) : palette, polices, durées, rayons. QPX amplifie l'espace, la lumière, le vert et le mouvement ; jamais les
   données. Les règles marquées « copie » reprennent un composant de l'APP non embarqué (le shell, la barre démo).
   Étapes (<html data-qpx-stage>) : seuil → init (QPX_ENTRY : QEVYO prépare la journée) → today. Pendant l'initialisation,
   chaque étape atteinte pose un drapeau data-qpx-s-<étape> (identite, objectifs, objectifs-ok, agenda, agenda-ok,
   analyse, priorite-ok, systeme, pret, ready) ; l'étape en cours est data-qpx-step. Sans JavaScript, aucun
   drapeau : tout est visible dans son état final. */
body.qpx{margin:0;min-inline-size:0;overflow-x:clip}
/* Le seuil et l'initialisation se jouent sur la nuit : le fond réel de la page (lecteurs, contrastes) est la nuit, le ciel n'en est que la lumière. */
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil],[data-qpx-stage=init]) body.qpx{background:var(--q-night)}
[hidden]{display:none!important}
.qpx-skip{position:absolute;inset-block-start:var(--q-space-2);inset-inline-start:var(--q-space-2);z-index:var(--q-z-toast);padding:var(--q-space-2) var(--q-space-4);border-radius:var(--q-radius-small);background:var(--q-surface-raised);color:var(--q-text);font:var(--q-weight-strong) var(--q-body-small)/var(--q-line) var(--q-font-body);transform:translateY(-200%)}
.qpx-skip:focus{transform:none}

/* ===============================================================================================================
   L'environnement : le ciel (nuit → vert profond → clairière verte de TODAY), le relief officiel en trois plans, la
   brume, l'aube et le QEVYO Signal. */
.qpx-sky{position:fixed;inset:0;z-index:0;pointer-events:none}
.qpx-sky::before,.qpx-sky::after{content:"";position:absolute;inset:0;transition:opacity 1.3s var(--q-ease-inout)}
.qpx-sky::before{background:radial-gradient(70% 55% at 74% 82%,color-mix(in oklab,var(--q-gold) 14%,transparent) 0%,transparent 70%),linear-gradient(180deg,var(--q-night) 0%,var(--q-night) 34%,var(--q-brand-deep-end) 72%,var(--q-brand-deep) 100%);opacity:0}
.qpx-sky::after{background:linear-gradient(180deg,color-mix(in oklab,var(--q-brand) 22%,var(--q-surface-lichen)) 0%,var(--q-surface-lichen) 30%,color-mix(in oklab,var(--q-surface-lichen) 55%,var(--q-bg-primary)) 62%,var(--q-bg-primary) 100%);opacity:0}
.qpx-sky__light{position:absolute;inset:0;background:radial-gradient(42% 38% at 72% 70%,color-mix(in oklab,var(--q-gold) 22%,transparent) 0%,transparent 70%);opacity:0;transition:opacity 1.2s var(--q-ease-inout)}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil],[data-qpx-stage=init]) .qpx-sky::before{opacity:1}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-sky::after,html:not([data-qpx-js]) .qpx-sky::after{opacity:1}
html[data-qpx-stage=init] .qpx-sky__light{opacity:.55}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-sky__light{opacity:.45}

.qpx-env{position:fixed;inset-inline:0;inset-block-end:0;z-index:1;block-size:min(62vh,48vw);min-block-size:300px;pointer-events:none;view-transition-name:qpx-env;transition:opacity .9s var(--q-ease-inout),translate .9s var(--q-ease-inout)}
.qpx-env svg{position:absolute;inset:0;inline-size:100%;block-size:100%;overflow:visible}
.qpx-env__land{filter:sepia(0) hue-rotate(0deg) saturate(1) brightness(1);transition:filter 1.4s var(--q-ease-inout)}
.qpx-layer{transition:transform 1.5s var(--q-ease)}
/* Le Signal naît dans la brume, comme le relief (même fondu que le masque de relief.svg). */
.qpx-env__signal{-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 42%);mask-image:linear-gradient(90deg,transparent 0%,#000 42%)}
.qpx-env__mist{position:absolute;inset-inline:-10%;inset-block-end:8%;block-size:34%;background:linear-gradient(180deg,transparent 0%,color-mix(in oklab,var(--q-surface-lichen) 55%,transparent) 50%,transparent 100%);opacity:0;transition:opacity 1.2s var(--q-ease-inout)}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-env__mist{opacity:.8}
html[data-qpx-stage=init] .qpx-env__mist{opacity:.18}
@media (max-width:767px){.qpx-env{block-size:clamp(150px,26svh,240px);min-block-size:0}}

/* La nuit du seuil, puis le vert profond de l'initialisation : le relief officiel teinté vers le vert de QEVYO. */
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil]) .qpx-env__land{filter:sepia(1) hue-rotate(118deg) saturate(1.5) brightness(.36)}
html[data-qpx-stage=init] .qpx-env__land{filter:sepia(1) hue-rotate(118deg) saturate(1.7) brightness(.52)}
/* TODAY : la clairière — le relief retrouve ses couleurs, plus vert, et recule derrière le cockpit. */
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-env__land{filter:sepia(.25) hue-rotate(78deg) saturate(1.45) brightness(.98)}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-env{opacity:.9;translate:0 8%}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil]) .qpx-layer--ciel{transform:translateY(14px)}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil]) .qpx-layer--montagne{transform:translateY(8px)}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil]) .qpx-layer--lisiere{transform:translateY(22px)}

.qpx-signal{transition:opacity .4s var(--q-ease)}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil]) .qpx-signal{opacity:0}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-signal{opacity:.55}
/* Le tracé est en unités du dessin (pathLength=1 pour le dessiner) : son épaisseur suit l'échelle du relief. */
.qpx-signal__line,.qpx-signal__glow{fill:none;stroke:var(--q-gold);stroke-width:.75;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 1s var(--q-ease-inout)}
.qpx-signal__glow{stroke-width:3;opacity:.22}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) :is(.qpx-signal__line,.qpx-signal__glow){stroke:var(--q-gold-ink)}
html[data-qpx-js]:not([data-qpx-s-agenda]) :is(.qpx-signal__line,.qpx-signal__glow){stroke-dashoffset:1}
@media (max-width:767px){.qpx-signal__line{stroke-width:1.9}.qpx-signal__glow{stroke-width:6}}
.qpx-mark circle,.qpx-dawn circle{transform-box:fill-box;transform-origin:center}
.qpx-mark circle{transition:opacity .35s var(--q-ease),scale .45s var(--q-ease)}
.qpx-mark--ready .qpx-mark__dot{fill:var(--q-brand-vivid-on-dark)}
.qpx-mark--prepare .qpx-mark__dot{fill:var(--q-gold)}
.qpx-mark--none .qpx-mark__dot{fill:var(--q-on-dark-secondary)}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-mark--ready .qpx-mark__dot{fill:var(--q-state-reached-mark)}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-mark--prepare .qpx-mark__dot{fill:var(--q-gold-ink)}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-mark--none .qpx-mark__dot{fill:var(--q-border-strong)}
.qpx-mark__ring{fill:none;stroke:var(--q-gold);stroke-width:1.2;vector-effect:non-scaling-stroke}
.qpx-mark__halo{fill:color-mix(in oklab,var(--q-gold) 30%,transparent);opacity:.6}
html[data-qpx-js]:not([data-qpx-s-agenda-ok]) .qpx-mark circle{opacity:0;scale:.2}
.qpx-mark:nth-of-type(2) circle{transition-delay:.12s}.qpx-mark:nth-of-type(3) circle{transition-delay:.24s}
html[data-qpx-js]:not([data-qpx-s-priorite-ok]) :is(.qpx-mark__ring,.qpx-mark__halo){opacity:0;scale:.3}
.qpx-pulse{fill:var(--q-gold);opacity:0}
.qpx-dawn__glow{opacity:0;transition:opacity 1.1s var(--q-ease-inout),scale 1.2s var(--q-ease)}
.qpx-dawn__point{fill:var(--q-gold);opacity:0;transition:opacity 1.1s var(--q-ease-inout)}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil]) .qpx-dawn__point{opacity:1}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil]) .qpx-dawn__glow{opacity:1}
html[data-qpx-stage=init] .qpx-dawn__glow{opacity:.85;scale:2}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-dawn__glow{opacity:0;scale:4}

/* ===============================================================================================================
   Le seuil : QEVYO · DÉMO, et le pack de session (prénom, pays, rôle, avatar QEVYO). Local, sans formulaire. */
.qpx-seuil{display:none}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil]) .qpx-seuil{position:fixed;inset:0;z-index:5;box-sizing:border-box;display:grid;align-content:center;justify-items:start;gap:var(--q-space-5);overflow-y:auto;padding:var(--q-space-6) max(var(--q-gutter),calc((100vw - var(--q-content-max)) / 2 + var(--q-gutter))) var(--q-space-8);color:var(--q-on-dark)}
.qpx-seuil__brand{display:flex;align-items:center;gap:var(--q-space-3);margin:0}
.qpx-seuil__brand .qevyo-logo{width:150px;height:auto;-webkit-mask-image:radial-gradient(ellipse 58% 62% at 50% 50%,#000 55%,transparent 100%);mask-image:radial-gradient(ellipse 58% 62% at 50% 50%,#000 55%,transparent 100%)}
.qpx-seuil__question{max-inline-size:18ch;margin:0;font:var(--q-weight-medium) clamp(2rem,1.3rem + 2.6vw,3.5rem)/1.04 var(--q-font-display);letter-spacing:-.022em;color:var(--q-on-dark);text-wrap:balance}
.qpx-pack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--q-space-4) var(--q-space-6);inline-size:min(100%,46rem)}
.qpx-pack__name,.qpx-pack__group{display:grid;gap:var(--q-space-2);align-content:start;min-inline-size:0;margin:0;padding:0;border:0}
.qpx-pack__label{padding:0;color:var(--q-on-dark-secondary);font:var(--q-weight-medium) var(--q-body-small)/1.4 var(--q-font-body);letter-spacing:.01em}
.qpx-pack__options{display:flex;flex-wrap:wrap;gap:var(--q-space-2)}
.qpx-seuil__input{inline-size:100%;box-sizing:border-box;min-block-size:48px;padding:0 var(--q-space-4);border:1px solid var(--q-on-dark-line);border-radius:var(--q-radius-small);background:rgb(244 240 230 / 6%);color:var(--q-on-dark);font:var(--q-weight-medium) 1.0625rem/1 var(--q-font-body);caret-color:var(--q-gold)}
.qpx-seuil__input:focus-visible{outline:3px solid var(--q-focus-on-dark);outline-offset:2px;border-color:var(--q-gold)}
.qpx-chip{position:relative;display:inline-flex;align-items:center;gap:var(--q-space-2);min-block-size:44px;box-sizing:border-box;padding:0 var(--q-space-4);border:1px solid var(--q-on-dark-line);border-radius:var(--q-radius-pill);background:rgb(244 240 230 / 4%);color:var(--q-on-dark-secondary);font:var(--q-weight-medium) var(--q-body-small)/1 var(--q-font-body);cursor:pointer;transition:background-color var(--q-duration) var(--q-ease),border-color var(--q-duration) var(--q-ease),color var(--q-duration) var(--q-ease)}
.qpx-chip input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer}
.qpx-chip img{inline-size:28px;block-size:28px;border-radius:50%;object-fit:cover;object-position:top;background:var(--q-night);box-shadow:0 0 0 1px var(--q-on-dark-line)}
.qpx-chip--avatar{padding-inline-start:var(--q-space-2)}
.qpx-chip:has(input:checked){border-color:var(--q-gold);background:color-mix(in oklab,var(--q-gold) 16%,transparent);color:var(--q-on-dark)}
.qpx-chip:has(input:checked) img{box-shadow:0 0 0 2px var(--q-gold)}
.qpx-chip:has(input:focus-visible){outline:3px solid var(--q-focus-on-dark);outline-offset:2px}
.qpx-seuil__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--q-space-3) var(--q-space-5);margin:var(--q-space-2) 0 0}
.qpx-seuil .q-button--primary{min-block-size:52px;background:var(--q-ivory);color:var(--q-night)}
.qpx-seuil .q-button--primary:hover{background:var(--q-gold)}
.qpx-seuil .q-button:focus-visible,.qpx-seuil__spectator:focus-visible,.qpx-sound--seuil:focus-visible{outline:3px solid var(--q-focus-on-dark);outline-offset:3px}
.qpx-seuil__spectator{min-block-size:var(--q-tap);padding:0;border:0;background:none;color:var(--q-on-dark);font:var(--q-weight-medium) var(--q-body)/1 var(--q-font-body);text-decoration:underline;text-underline-offset:5px;text-decoration-color:color-mix(in oklab,var(--q-gold) 70%,transparent);cursor:pointer}
@media (max-width:767px){
 html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil]) .qpx-seuil{align-content:start;gap:var(--q-space-4);padding-block:var(--q-space-6) var(--q-space-7)}
 .qpx-seuil__brand .qevyo-logo{width:118px}
 .qpx-pack{grid-template-columns:minmax(0,1fr);gap:var(--q-space-3)}
 .qpx-chip{padding:0 var(--q-space-3);font-size:.8125rem}
 .qpx-pack__label{font-size:var(--q-caption)}
 .qpx-seuil .q-button--primary{inline-size:100%}
}

/* Son : un contrôle clair, au clavier, état lisible (ON / OFF). */
.qpx-sound{display:inline-flex;align-items:center;gap:var(--q-space-2);min-block-size:var(--q-tap);padding:0 var(--q-space-3);border:1px solid var(--q-border);border-radius:var(--q-radius-pill);background:transparent;color:var(--q-text-secondary);font:var(--q-weight-medium) var(--q-body-small)/1 var(--q-font-body);cursor:pointer}
.qpx-sound__dot{inline-size:8px;block-size:8px;border-radius:50%;background:var(--q-gold-ink)}
.qpx-sound[aria-pressed=false] .qpx-sound__dot{background:transparent;box-shadow:inset 0 0 0 1.5px currentColor}
.qpx-sound--seuil{border-color:var(--q-on-dark-line);color:var(--q-on-dark-secondary)}
.qpx-sound--seuil .qpx-sound__dot{background:var(--q-gold)}

/* ===============================================================================================================
   QPX_ENTRY — « QEVYO prépare ta journée » : identité, agenda, objectifs, activité, priorité, READY FOR NEW LIFE. */
.qpx-init{display:none}
html[data-qpx-stage=init] .qpx-init,html:not([data-qpx-js]) .qpx-init{position:fixed;inset:0;z-index:4;box-sizing:border-box;display:grid;grid-template-rows:auto auto 1fr auto;gap:var(--q-space-4);overflow-y:auto;max-inline-size:none;padding:clamp(var(--q-space-5),6vh,var(--q-space-7)) max(var(--q-gutter),calc((100vw - var(--q-content-max)) / 2 + var(--q-gutter))) var(--q-space-5);color:var(--q-on-dark)}
html:not([data-qpx-js]) .qpx-init{position:relative;min-block-size:100svh;background:var(--q-brand-deep)}
.qpx-init__head{display:grid;gap:var(--q-space-2);max-inline-size:40rem}
.qpx-init__title{margin:0;font:var(--q-weight-medium) clamp(2.4rem,1.6rem + 3vw,4.25rem)/1.02 var(--q-font-display);letter-spacing:-.022em;color:var(--q-on-dark)}
.qpx-init__lead{margin:0;font:var(--q-weight-regular) clamp(1rem,.94rem + .3vw,1.1875rem)/1.45 var(--q-font-body);color:var(--q-on-dark-secondary)}
.qpx-demo-note{margin:0;color:var(--q-text-secondary);font:var(--q-weight-medium) var(--q-caption)/1.4 var(--q-font-body);letter-spacing:.02em}
.qpx-init .qpx-demo-note{color:var(--q-on-dark-secondary)}
.qpx-init__caption{display:grid;margin:0;min-block-size:1.5em;font:var(--q-weight-strong) var(--q-body-small)/1.4 var(--q-font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--q-gold)}
.qpx-init__caption>span{grid-area:1/1;opacity:0;translate:0 6px;transition:opacity .3s var(--q-ease),translate .3s var(--q-ease)}
html:not([data-qpx-js]) [data-qpx-cap=ready],
html[data-qpx-step=identite] [data-qpx-cap=identite],html[data-qpx-step=objectifs] [data-qpx-cap=objectifs],html[data-qpx-step=objectifs-ok] [data-qpx-cap=objectifs-ok],
html[data-qpx-step=agenda] [data-qpx-cap=agenda],html[data-qpx-step=agenda-ok] [data-qpx-cap=agenda-ok],html[data-qpx-step=analyse] [data-qpx-cap=analyse],
html[data-qpx-step=priorite-ok] [data-qpx-cap=priorite-ok],html[data-qpx-step=systeme] [data-qpx-cap=systeme],html[data-qpx-step=pret] [data-qpx-cap=pret],html[data-qpx-step=release] [data-qpx-cap=pret],
html[data-qpx-step=ready] [data-qpx-cap=ready]{opacity:1;translate:0 0}
.qpx-init__stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);grid-template-areas:"id rings" "agenda rings" "agenda found";gap:var(--q-space-4) var(--q-space-6);align-content:start;min-inline-size:0}
.qpx-identity{grid-area:id;display:flex;flex-wrap:wrap;gap:var(--q-space-2);margin:0;padding:0;list-style:none;transition:opacity .4s var(--q-ease),translate .4s var(--q-ease)}
.qpx-identity li{display:inline-flex;align-items:center;gap:var(--q-space-2);min-block-size:32px;padding:0 var(--q-space-3);border:1px solid var(--q-on-dark-line);border-radius:var(--q-radius-pill);font:var(--q-weight-medium) var(--q-body-small)/1 var(--q-font-body);color:var(--q-on-dark)}
.qpx-identity__k{color:var(--q-on-dark-secondary);font-size:var(--q-caption);letter-spacing:.08em;text-transform:uppercase}
.qpx-identity img{inline-size:22px;block-size:22px;border-radius:50%;object-fit:cover;object-position:top}
[data-qpx-session-avatar]{display:inline-flex;align-items:center;gap:6px}
.qpx-agenda{grid-area:agenda;display:grid;gap:var(--q-space-2);align-content:start;margin:0;padding:0;list-style:none;view-transition-name:qpx-agenda}
.qpx-agenda__row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--q-space-3);padding:var(--q-space-3) var(--q-space-4);border:1px solid var(--q-on-dark-line);border-radius:var(--q-radius-medium);background:color-mix(in oklab,var(--q-brand-deep) 82%,transparent);transition:opacity .4s var(--q-ease),translate .4s var(--q-ease),border-color .4s var(--q-ease),box-shadow .4s var(--q-ease)}
.qpx-agenda__row:nth-child(2){transition-delay:.12s}.qpx-agenda__row:nth-child(3){transition-delay:.24s}
.qpx-agenda__time{font:var(--q-weight-strong) var(--q-h3)/1.1 var(--q-font-body);color:var(--q-gold);white-space:nowrap}
.qpx-agenda__what{display:grid;min-inline-size:0}
.qpx-agenda__kind{font-size:var(--q-caption);color:var(--q-on-dark-secondary)}
.qpx-agenda__place{font:var(--q-weight-strong) var(--q-body-small)/1.35 var(--q-font-body);color:var(--q-on-dark)}
html[data-qpx-s-priorite-ok] .qpx-agenda__row[data-qpx-focus],html:not([data-qpx-js]) .qpx-agenda__row[data-qpx-focus]{border-color:var(--q-gold);box-shadow:inset 3px 0 0 var(--q-gold)}
.qpx-rings{grid-area:rings;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--q-space-3);margin:0;padding:var(--q-space-4);border:1px solid var(--q-on-dark-line);border-radius:var(--q-radius-card);background:color-mix(in oklab,var(--q-brand-deep) 82%,transparent);list-style:none;transition:opacity .45s var(--q-ease),translate .45s var(--q-ease)}
.qpx-ring{display:grid;justify-items:center;gap:var(--q-space-1);text-align:center;transition:opacity .45s var(--q-ease),translate .45s var(--q-ease)}
/* Les objectifs arrivent un à un : la récupération se voit. */
.qpx-ring:nth-child(2){transition-delay:.22s}.qpx-ring:nth-child(3){transition-delay:.44s}.qpx-ring:nth-child(4){transition-delay:.66s}
.qpx-ring__visual{position:relative;display:grid;place-items:center;inline-size:72px;block-size:72px}
.qpx-ring__visual svg{position:absolute;inset:0;inline-size:100%;block-size:100%}
.qpx-init .q-pace__track{stroke:var(--q-on-dark-track);stroke-width:4}
.qpx-init .q-pace__fill{stroke:var(--q-brand-vivid-on-dark);stroke-width:4.5;transition:opacity .3s var(--q-ease)}
.qpx-init [data-pace-status=atteint] .q-pace__fill{stroke:var(--q-gold)}
.qpx-init .q-pace__lag{stroke:var(--q-state-late-lag);opacity:.9}
.qpx-init .q-pace__notch{stroke:var(--q-gold);stroke-width:2}
.qpx-ring__figures{position:relative;display:grid;justify-items:center;line-height:1}
.qpx-ring__value{font:var(--q-weight-strong) 1.25rem/1 var(--q-font-body);color:var(--q-on-dark);transition:opacity .3s var(--q-ease)}
.qpx-ring__of{font:var(--q-weight-medium) var(--q-caption)/1.2 var(--q-font-body);color:var(--q-on-dark-secondary)}
.qpx-ring__label{font:var(--q-weight-strong) var(--q-caption)/1.2 var(--q-font-body);color:var(--q-on-dark)}
.qpx-ring__goal{font:var(--q-weight-medium) var(--q-caption)/1.2 var(--q-font-body);color:var(--q-on-dark-secondary)}
.qpx-ring__check{display:inline-block;color:var(--q-gold);transition:opacity .3s var(--q-ease),scale .3s var(--q-ease)}
.qpx-ring:nth-child(2) .qpx-ring__check{transition-delay:.08s}.qpx-ring:nth-child(3) .qpx-ring__check{transition-delay:.16s}.qpx-ring:nth-child(4) .qpx-ring__check{transition-delay:.24s}
.qpx-ring__status{font:var(--q-weight-strong) var(--q-caption)/1.2 var(--q-font-body);color:var(--q-on-dark-secondary);transition:opacity .3s var(--q-ease)}
.qpx-ring__status--retard{color:var(--q-state-late-lag)}
.qpx-ring__status--atteint{color:var(--q-brand-vivid-on-dark)}
.qpx-found{grid-area:found;display:grid;gap:var(--q-space-1);padding:var(--q-space-4) var(--q-space-5);border:1px solid var(--q-gold);border-radius:var(--q-radius-card);background:color-mix(in oklab,var(--q-brand-deep) 90%,transparent);box-shadow:inset 3px 0 0 var(--q-gold),0 18px 40px -18px rgb(0 0 0 / 50%);view-transition-name:qpx-focus;transition:opacity .45s var(--q-ease),translate .45s var(--q-ease)}
.qpx-found p{margin:0}
.qpx-found__eyebrow{font:var(--q-weight-strong) var(--q-label)/1.4 var(--q-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--q-gold)}
.qpx-found__title{font:var(--q-weight-strong) var(--q-h3)/1.3 var(--q-font-body);color:var(--q-on-dark)}
.qpx-found__detail{font-size:var(--q-body-small);color:var(--q-on-dark-secondary)}
.qpx-found__say{display:flex;align-items:center;gap:var(--q-space-2);margin-block-start:var(--q-space-2)!important;font:var(--q-weight-medium) var(--q-lead)/1.2 var(--q-font-display);color:var(--q-on-dark)}
.qpx-found__say .qevyo-avatar{--avatar-size:30px}
/* La barre de progression : le Signal lui-même — un fil d'or, cinq repères, un pourcentage discret. */
.qpx-progress{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--q-space-2) var(--q-space-4)}
.qpx-progress__steps{grid-column:1/-1;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:0;list-style:none;font:var(--q-weight-strong) var(--q-label)/1.2 var(--q-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--q-on-dark-secondary)}
.qpx-progress__steps li{position:relative;padding-block-start:var(--q-space-3);transition:color .3s var(--q-ease)}
.qpx-progress__steps li::before{content:"";position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:8px;block-size:8px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--q-on-dark-secondary);transition:background-color .3s var(--q-ease),box-shadow .3s var(--q-ease)}
html[data-qpx-n-identite] [data-qpx-node=identite],html[data-qpx-n-objectifs] [data-qpx-node=objectifs],html[data-qpx-n-agenda] [data-qpx-node=agenda],html[data-qpx-n-analyse] [data-qpx-node=analyse],html[data-qpx-n-pret] [data-qpx-node=pret],html:not([data-qpx-js]) [data-qpx-node]{color:var(--q-on-dark)}
html[data-qpx-n-identite] [data-qpx-node=identite]::before,html[data-qpx-n-objectifs] [data-qpx-node=objectifs]::before,html[data-qpx-n-agenda] [data-qpx-node=agenda]::before,html[data-qpx-n-analyse] [data-qpx-node=analyse]::before,html[data-qpx-n-pret] [data-qpx-node=pret]::before,html:not([data-qpx-js]) [data-qpx-node]::before{background:var(--q-gold);box-shadow:0 0 0 4px color-mix(in oklab,var(--q-gold) 22%,transparent)}
.qpx-progress__track{position:relative;block-size:2px;border-radius:2px;background:var(--q-on-dark-track);overflow:hidden}
.qpx-progress__fill{position:absolute;inset:0;transform-origin:left;transform:scaleX(calc(var(--qpx-pct,100) / 100));background:linear-gradient(90deg,var(--q-gold-ink),var(--q-gold));transition:transform .5s var(--q-ease)}
.qpx-progress__pct{font:var(--q-weight-strong) var(--q-body-small)/1 var(--q-font-body);color:var(--q-gold)}
/* Le moment READY : un contrôle système qui se valide tout seul (NOT READY → READY), sans clic, juste avant la signature. */
.qpx-system{justify-self:center;display:inline-flex;align-items:center;gap:var(--q-space-4);margin:0;padding:6px var(--q-space-5) 6px 6px;border:1px solid var(--q-on-dark-line);border-radius:var(--q-radius-pill);background:color-mix(in oklab,var(--q-brand-deep) 88%,transparent);transition:opacity .45s var(--q-ease),translate .45s var(--q-ease),border-color .5s var(--q-ease),box-shadow .6s var(--q-ease)}
.qpx-system__switch{position:relative;display:block;inline-size:64px;block-size:34px;border-radius:var(--q-radius-pill);background:rgb(244 240 230 / 10%);transition:background-color .5s var(--q-ease)}
.qpx-system__knob{position:absolute;inset-block-start:5px;inset-inline-start:5px;inline-size:24px;block-size:24px;border-radius:50%;background:var(--q-on-dark-secondary);transition:translate .5s var(--q-ease),background-color .5s var(--q-ease)}
.qpx-system__label{display:grid;font:var(--q-weight-strong) var(--q-body)/1 var(--q-font-body);letter-spacing:.32em}
.qpx-system__label>span{grid-area:1/1;transition:opacity .35s var(--q-ease)}
.qpx-system__off{color:var(--q-on-dark-secondary)}
.qpx-system__on{color:var(--q-ivory);opacity:0;text-shadow:0 0 24px color-mix(in oklab,var(--q-gold) 70%,transparent)}
html[data-qpx-js]:not([data-qpx-s-systeme]) .qpx-system{opacity:0;translate:0 10px}
html[data-qpx-s-pret] .qpx-system,html:not([data-qpx-js]) .qpx-system{border-color:var(--q-gold);box-shadow:0 0 0 6px color-mix(in oklab,var(--q-gold) 12%,transparent),0 0 44px -6px color-mix(in oklab,var(--q-gold) 55%,transparent)}
html[data-qpx-s-pret] .qpx-system__switch,html:not([data-qpx-js]) .qpx-system__switch{background:var(--q-gold)}
html[data-qpx-s-pret] .qpx-system__knob,html:not([data-qpx-js]) .qpx-system__knob{translate:30px 0;background:var(--q-ivory)}
html[data-qpx-s-pret] .qpx-system__off,html:not([data-qpx-js]) .qpx-system__off{opacity:0}
html[data-qpx-s-pret] .qpx-system__on,html:not([data-qpx-js]) .qpx-system__on{opacity:1}
.qpx-ready{position:fixed;inset-inline:0;inset-block-start:40%;z-index:6;display:grid;justify-items:center;gap:var(--q-space-4);margin:0;text-align:center;pointer-events:none;font:var(--q-weight-regular) clamp(1.0625rem,.8rem + 1.5vw,2rem)/1.2 var(--q-font-body);font-feature-settings:"case","tnum";letter-spacing:.62em;padding-inline-start:.62em;color:var(--q-ivory);text-shadow:0 0 24px color-mix(in oklab,var(--q-gold) 35%,transparent);transition:opacity .7s var(--q-ease),letter-spacing 1.2s var(--q-ease),filter .7s var(--q-ease)}
/* READY FOR NEW LIFE : un traitement « système prêt » — capitales très espacées, deux filets d'or qui se déploient. */
.qpx-ready::before,.qpx-ready::after{content:"";inline-size:min(72vw,620px);block-size:1px;margin-inline-start:-.62em;background:linear-gradient(90deg,transparent,var(--q-gold) 20%,var(--q-gold) 80%,transparent);opacity:.85;transform-origin:center;transition:transform 1.1s var(--q-ease) .15s,opacity .7s var(--q-ease)}
html[data-qpx-js]:not([data-qpx-s-ready]) .qpx-ready::before,html[data-qpx-js]:not([data-qpx-s-ready]) .qpx-ready::after{transform:scaleX(0);opacity:0}
/* READY et READY FOR NEW LIFE ne sont jamais visibles ensemble : l'interrupteur s'efface (release) avant la signature. */
html[data-qpx-s-release] .qpx-system{opacity:0;translate:0 -8px}
/* Un voile de nuit très doux sous la signature : elle domine seule. */
.qpx-ready{padding-block:var(--q-space-7);background:radial-gradient(60% 50% at 50% 50%,rgb(10 36 29 / 82%) 0%,rgb(10 36 29 / 55%) 45%,transparent 75%)}
html:not([data-qpx-js]) .qpx-ready{position:static}
.qpx-init__go{justify-self:start;margin:0}
/* READY FOR NEW LIFE domine : la scène s'estompe un instant derrière la signature. */
.qpx-init__head,.qpx-init__stage,.qpx-init__caption{transition:opacity .5s var(--q-ease)}
@media (prefers-reduced-motion:no-preference){html[data-qpx-s-ready][data-qpx-stage=init] :is(.qpx-init__head,.qpx-init__stage,.qpx-init__caption){opacity:.12}html[data-qpx-s-ready][data-qpx-stage=init] :is(.qpx-progress,.qpx-init__go){opacity:.45}}
.qpx-progress,.qpx-init__go{transition:opacity .5s var(--q-ease)}
.qpx-init .q-button--primary{min-block-size:52px;background:var(--q-ivory);color:var(--q-night)}
.qpx-init .q-button--primary:hover{background:var(--q-gold)}
.qpx-init .q-button:focus-visible{outline:3px solid var(--q-focus-on-dark);outline-offset:3px}
/* Ce qui n'est pas encore atteint attend (le JS pose les drapeaux ; sans JS, tout est visible). */
html[data-qpx-js]:not([data-qpx-s-identite]) .qpx-identity,
html[data-qpx-js]:not([data-qpx-s-agenda-ok]) .qpx-agenda__row,
html[data-qpx-js]:not([data-qpx-s-objectifs]) .qpx-rings,
html[data-qpx-js]:not([data-qpx-s-objectifs]) .qpx-ring,
html[data-qpx-js]:not([data-qpx-s-priorite-ok]) .qpx-found{opacity:0;translate:0 12px}
html[data-qpx-js]:not([data-qpx-s-objectifs-ok]) .qpx-ring__check{opacity:0;scale:.3}
html[data-qpx-js]:not([data-qpx-s-analyse]) :is(.qpx-ring__value,.qpx-ring__status,.qpx-init .q-pace__fill,.qpx-init .q-pace__lag,.qpx-init .q-pace__notch){opacity:0}
html[data-qpx-js]:not([data-qpx-s-ready]) .qpx-ready{opacity:0;letter-spacing:.9em;filter:blur(8px)}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-ready{opacity:0}
@media (max-width:1023px){
 .qpx-init__stage{grid-template-columns:minmax(0,1fr);grid-template-areas:"id" "rings" "agenda" "found";gap:var(--q-space-3)}
}
@media (max-width:767px){
 html[data-qpx-stage=init] .qpx-init{gap:var(--q-space-3);padding-block:var(--q-space-5) var(--q-space-4)}
 .qpx-init__title{font-size:2.25rem}
 .qpx-identity li{min-block-size:28px;padding:0 var(--q-space-2);font-size:var(--q-caption)}
 .qpx-identity__k{display:none}
 .qpx-agenda__row{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"time kind state" "time place place";padding:var(--q-space-2) var(--q-space-3);gap:2px var(--q-space-2)}
 .qpx-agenda__what{display:contents}
 .qpx-agenda__time{grid-area:time;font-size:var(--q-body)}
 .qpx-agenda__kind{grid-area:kind;align-self:center}
 .qpx-agenda__place{grid-area:place;font-size:.8125rem}
 .qpx-agenda__state{grid-area:state}
 .qpx-agenda__state .q-badge{font-size:11px;padding:1px 6px}
 /* La concentration : à la détection, ne restent que le focus et ce qui l'explique. */
 .qpx-identity,.qpx-agenda__row{max-block-size:6rem;overflow:hidden}
 html[data-qpx-s-priorite-ok] :is(.qpx-identity,.qpx-agenda__row:not([data-qpx-focus])){max-block-size:0;opacity:0;padding-block:0;border-width:0;margin-block-start:calc(-1 * var(--q-space-2))}
 .qpx-identity,.qpx-agenda__row{transition:opacity .4s var(--q-ease),translate .4s var(--q-ease),max-block-size .5s var(--q-ease),padding .5s var(--q-ease),margin .5s var(--q-ease),border-color .4s var(--q-ease),box-shadow .4s var(--q-ease)}
 .qpx-ring__status{font-size:11px}
 .qpx-progress__steps{display:none}
 .qpx-init__lead{font-size:.9375rem}
 .qpx-init__caption{min-block-size:2.8em;font-size:12px;letter-spacing:.1em}
 .qpx-rings{padding:var(--q-space-3) var(--q-space-2);gap:var(--q-space-1)}
 .qpx-ring__visual{inline-size:58px;block-size:58px}
 .qpx-ring__value{font-size:1.0625rem}
 .qpx-ring__goal{display:none}
 .qpx-found{padding:var(--q-space-3) var(--q-space-4)}
 .qpx-found__say{font-size:1.125rem}
 .qpx-progress__steps{font-size:9px;letter-spacing:.08em}
 .qpx-init__go{justify-self:start;padding-inline-end:68px}
 .qpx-ready{font-size:1rem;letter-spacing:.36em;padding-inline-start:.36em}
 .qpx-ready::before,.qpx-ready::after{margin-inline-start:-.36em}
 html[data-qpx-js]:not([data-qpx-s-ready]) .qpx-ready{letter-spacing:.6em}
}

/* ===============================================================================================================
   La barre de session (le cadre du shell de l'APP, sans navigation) : DÉMO, la session, le son, l'heure, l'identité. */
.qpx-bar{position:sticky;inset-block-start:0;z-index:var(--q-z-sticky);display:flex;align-items:center;gap:var(--q-space-3);min-block-size:56px;box-sizing:border-box;padding:var(--q-space-1) var(--q-gutter);background:color-mix(in oklab,var(--q-surface) 90%,transparent);border-block-end:1px solid var(--q-hairline);transition:opacity .6s var(--q-ease) .3s,translate .6s var(--q-ease) .3s}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil],[data-qpx-stage=init]) .qpx-bar{opacity:0;translate:0 -100%;visibility:hidden}
.qpx-bar__brand{display:inline-flex;align-items:center;min-block-size:var(--q-tap)}
.qpx-bar__demo{display:flex;align-items:center;gap:var(--q-space-3);min-inline-size:0;margin:0}
/* Le badge « DÉMO » du compte de démonstration (copie de .demo-bar strong, app/demo/mode.css). */
.qpx-demo{background:#f0e2bb;border:1px solid #d9bf7e;border-radius:5px;padding:4px 8px;color:#173d32;font:var(--q-weight-strong) 12px/1.2 var(--q-font-body);letter-spacing:.05em;white-space:nowrap}
.qpx-bar__caption{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--q-text-secondary);font-size:var(--q-caption)}
.qpx-bar__session{display:flex;align-items:center;gap:var(--q-space-3);margin:0 0 0 auto}
.qpx-bar__profile{color:var(--q-text-secondary);font:var(--q-weight-medium) var(--q-caption)/1.2 var(--q-font-body);white-space:nowrap}
.qpx-bar__clock{color:var(--q-brand);font:var(--q-weight-strong) var(--q-body)/1 var(--q-font-body);font-variant-numeric:lining-nums tabular-nums}
/* Les initiales de la session (copie de .q-shell-profile__initials, app/components/shell/shell.css). */
.qpx-bar__agent{display:grid;place-items:center;flex:none;inline-size:38px;block-size:38px;border-radius:50%;background:var(--q-brand-deep);color:var(--q-gold);font:var(--q-weight-strong) var(--q-body-small)/1 var(--q-font-body);font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.01em;box-shadow:0 0 0 2px var(--q-surface),0 0 0 4px var(--q-gold-ink)}
@media (max-width:1100px){.qpx-bar__caption{display:none}}
@media (max-width:767px){.qpx-bar__profile{display:none}}
@media (max-width:440px){.qpx-bar{gap:var(--q-space-2)}.qpx-bar .qevyo-logo{width:96px;height:30px}.qpx-bar__session{gap:var(--q-space-2)}.qpx-sound--bar{padding:0 var(--q-space-2)}.qpx-sound--bar .qpx-sound__state{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}

.qpx-session{position:relative;z-index:2;display:block;outline:none}
.qpx-session [tabindex="-1"]:focus,.qpx-init [tabindex="-1"]:focus{outline:none}

/* ===============================================================================================================
   QPX_TODAY, premier fold : le TODAY de l'APP dans la clairière verte (en-tête + contexte, « Ma situation », le focus). */
.qpx-today{position:relative}
.qpx-today .q-space-head::after{display:none}
.qpx-today .q-c-page{padding-block-end:calc(var(--q-space-8) + 72px)}
@media (min-width:1024px){
 .qpx-today .q-t-cockpit{grid-template-areas:"head head" "kpi agenda" "kpi prio"}
 .qpx-today .q-t-kpis{grid-row:2/4}
}
.qpx-today .q-panel{box-shadow:0 1px 2px rgb(10 36 29 / 5%),0 24px 48px -24px rgb(0 64 59 / 30%)}
.qpx-today [data-priority-focus]{view-transition-name:qpx-focus}
/* L'agenda du jour : le contexte du focus. Les 3 RDV lus par QEVYO ; celui du focus est relié à la carte par un fil d'or. */
.qpx-today-agenda{position:relative;view-transition-name:qpx-agenda}
.qpx-today-agenda .q-t-slot__line{cursor:default;grid-template-columns:auto auto minmax(0,1fr);grid-template-areas:"time place place" "time kind state"}
.qpx-today-agenda .q-t-slot__place{white-space:normal;overflow:visible;text-overflow:clip}
.qpx-today-agenda .q-t-slot__state{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--q-space-1)}
.qpx-today-agenda .q-t-slot__line:hover .q-t-slot__place{text-decoration:none}
.qpx-slot:not([data-qpx-focus]) .q-t-slot__line{opacity:.72}
.qpx-slot[data-qpx-focus] .q-t-slot__line{background:color-mix(in oklab,var(--q-gold) 11%,var(--q-surface));box-shadow:inset 3px 0 0 var(--q-gold-ink)}
.qpx-slot[data-qpx-focus] .q-t-slot__place{color:var(--q-text);font-weight:var(--q-weight-strong)}
.qpx-slot__initial,.qpx-slot__prepared{display:contents}
.qpx-slot__focus{margin-inline-start:var(--q-space-1);font:var(--q-weight-strong) var(--q-label)/1.4 var(--q-font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--q-gold-ink);white-space:nowrap}
.qpx-today-agenda::after{content:"";position:absolute;inset-inline-start:46px;inset-block-start:100%;inline-size:2px;block-size:var(--q-space-4);background:linear-gradient(var(--q-gold-ink),color-mix(in oklab,var(--q-gold-ink) 30%,transparent))}
@media (max-width:1023px){.qpx-today-agenda::after{block-size:var(--q-space-3)}}
.qpx-today .q-t-rings{view-transition-name:qpx-rings}
html[data-qpx-stage=init] .qpx-rings{view-transition-name:qpx-rings}
.qpx-context{display:flex;flex-wrap:wrap;gap:var(--q-space-1) var(--q-space-3);margin:var(--q-space-1) 0 0;padding:0;font:var(--q-weight-strong) var(--q-label)/1.4 var(--q-font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--q-brand)}
.qpx-context>span{display:inline-flex;align-items:center;gap:var(--q-space-2)}
.qpx-context>span::before{content:"";inline-size:6px;block-size:6px;border-radius:50%;background:var(--q-gold-ink)}
.qpx-today .qpx-demo-note{margin-block-start:var(--q-space-1)}
@media (max-width:767px){.qpx-context{gap:2px var(--q-space-2);font-size:10px;letter-spacing:.06em}.qpx-context>span{gap:var(--q-space-1)}}
.qpx-next{display:grid;gap:2px;margin:0}
.qpx-next__label{font:var(--q-weight-strong) var(--q-label)/1.4 var(--q-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--q-gold-ink)}
.qpx-next__text{font:var(--q-weight-strong) var(--q-body-small)/1.3 var(--q-font-body);color:var(--q-brand)}

/* ===============================================================================================================
   QEVYO Guide : une seule entrée conversationnelle, partout (bouton au seuil et pendant l'initialisation, barre dans
   TODAY). Réponses bornées et déterministes ; micro seulement si le navigateur reconnaît la voix sur l'appareil. */
.qpx-guide{position:fixed;z-index:8;inset-inline-end:max(var(--q-gutter),env(safe-area-inset-right));inset-block-end:max(var(--q-space-4),env(safe-area-inset-bottom))}
.qpx-guide__launch{display:inline-flex;align-items:center;gap:var(--q-space-3);min-block-size:52px;padding:4px var(--q-space-5) 4px 6px;border:1px solid var(--q-card-line);border-radius:var(--q-radius-pill);background:var(--q-surface);color:var(--q-text);box-shadow:var(--q-shadow-float);font:var(--q-weight-medium) var(--q-body-small)/1.2 var(--q-font-body);cursor:pointer;text-align:start}
.qpx-guide__launch .qevyo-avatar{--avatar-size:40px}
.qpx-guide__launch:focus-visible{outline:3px solid var(--q-focus);outline-offset:3px}
.qpx-guide__prompt{color:var(--q-text)}
.qpx-guide__hint{display:none;color:var(--q-text-secondary);font-size:var(--q-caption)}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-guide{inset-inline:0;display:grid;justify-items:center;padding-inline:var(--q-gutter);pointer-events:none}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-guide>*{pointer-events:auto}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-guide__launch{inline-size:min(100%,40rem);display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;column-gap:var(--q-space-3);padding-inline-end:var(--q-space-5)}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-guide__launch .qevyo-presence{grid-row:1/3}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-guide__hint{display:block}
@media (max-width:767px){html:not([data-qpx-stage=today]):not([data-qpx-stage=prep]) .qpx-guide__prompt{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}html:not([data-qpx-stage=today]):not([data-qpx-stage=prep]) .qpx-guide__launch{padding:4px}}
.qpx-guide__panel{position:absolute;inset-inline-end:0;inset-block-end:calc(100% + var(--q-space-3));box-sizing:border-box;inline-size:min(26rem,calc(100vw - 2 * var(--q-gutter)));max-block-size:min(70svh,36rem);display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto auto;gap:var(--q-space-3);overflow:hidden;padding:var(--q-space-4);border:1px solid var(--q-card-line);border-radius:var(--q-radius-card);background:var(--q-surface);color:var(--q-text);box-shadow:var(--q-shadow-float)}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-guide__panel{inset-inline-end:auto}
.qpx-guide__head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--q-space-3)}
.qpx-guide__head .qevyo-avatar{--avatar-size:36px}
.qpx-guide__title{margin:0;font:var(--q-weight-strong) var(--q-body)/1.2 var(--q-font-body);letter-spacing:.04em}
.qpx-guide__where{margin:0;color:var(--q-text-secondary);font-size:var(--q-caption)}
.qpx-guide__close{display:grid;place-items:center;inline-size:var(--q-tap);block-size:var(--q-tap);border:0;border-radius:50%;background:transparent;color:var(--q-text-secondary);cursor:pointer}
.qpx-guide__log:focus-visible,.qpx-guide__close:focus-visible,.qpx-guide__chip:focus-visible,.qpx-guide__mic:focus-visible,.qpx-guide__send:focus-visible,.qpx-guide__faq summary:focus-visible{outline:3px solid var(--q-focus);outline-offset:2px}
.qpx-guide__log{display:grid;align-content:start;gap:var(--q-space-2);overflow-y:auto;min-block-size:4rem}
.qpx-guide__msg{margin:0;padding:var(--q-space-3);border-radius:var(--q-radius-medium);font:var(--q-weight-regular) var(--q-body-small)/1.5 var(--q-font-body)}
.qpx-guide__msg--qevyo{background:var(--q-surface-lichen);color:var(--q-text)}
.qpx-guide__msg--you{justify-self:end;max-inline-size:85%;background:var(--q-brand);color:var(--q-on-brand)}
.qpx-guide__chips{display:flex;flex-wrap:wrap;gap:var(--q-space-2)}
.qpx-guide__chip{min-block-size:var(--q-tap);padding:0 var(--q-space-3);border:1px solid var(--q-border);border-radius:var(--q-radius-pill);background:var(--q-surface);color:var(--q-brand);font:var(--q-weight-medium) var(--q-caption)/1.2 var(--q-font-body);cursor:pointer;text-align:start}
.qpx-guide__faq summary{display:flex;align-items:center;min-block-size:var(--q-tap);color:var(--q-text-secondary);font:var(--q-weight-strong) var(--q-caption)/1.2 var(--q-font-body);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
.qpx-guide__faq[open] .qpx-guide__chips{max-block-size:9rem;overflow-y:auto}
.qpx-guide__ask{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:var(--q-space-2)}
.qpx-guide__input{min-inline-size:0;min-block-size:var(--q-tap);box-sizing:border-box;padding:0 var(--q-space-3);border:1px solid var(--q-border-strong);border-radius:var(--q-radius-small);background:var(--q-surface);color:var(--q-text);font:var(--q-weight-regular) 1rem/1 var(--q-font-body)}
.qpx-guide__input:focus-visible{outline:3px solid var(--q-focus);outline-offset:1px}
.qpx-guide__mic,.qpx-guide__send{display:grid;place-items:center;inline-size:var(--q-tap);block-size:var(--q-tap);border:1px solid var(--q-border);border-radius:var(--q-radius-small);background:var(--q-surface);color:var(--q-brand);cursor:pointer}
.qpx-guide__send{border-color:var(--q-brand);background:var(--q-brand);color:var(--q-on-brand)}
.qpx-guide__mic[aria-pressed=true]{border-color:var(--q-gold-ink);background:var(--q-medal-sand);color:var(--q-gold-ink)}
.qpx-guide__note{margin:0;color:var(--q-text-secondary);font-size:var(--q-caption)}
@media (max-width:767px){
 .qpx-guide__panel{position:fixed;inset-inline:var(--q-space-2);inset-block-end:calc(env(safe-area-inset-bottom) + 76px);inline-size:auto;max-block-size:min(72svh,34rem)}
}

.qpx-foot{position:relative;z-index:2;max-inline-size:var(--q-content-max);margin:0 auto;padding:var(--q-space-5) var(--q-gutter) calc(var(--q-space-8) + 40px);font-size:var(--q-caption)}
.qpx-foot a{display:inline-flex;align-items:center;min-block-size:var(--q-tap);color:var(--q-text-secondary);text-underline-offset:3px}
html[data-qpx-js]:is(:not([data-qpx-stage]),[data-qpx-stage=seuil],[data-qpx-stage=init]) .qpx-foot{visibility:hidden}

/* View Transition initialisation → TODAY : les anneaux deviennent « Ma situation », la priorité détectée devient « Ton
   focus maintenant », l'agenda devient le contexte de la journée, le relief devient l'arrière-plan de TODAY. */
::view-transition-group(qpx-focus),::view-transition-group(qpx-rings),::view-transition-group(qpx-agenda){animation-duration:.9s;animation-timing-function:var(--q-ease)}
::view-transition-group(qpx-env){animation-duration:1.1s;animation-timing-function:var(--q-ease-inout)}
::view-transition-old(root),::view-transition-new(root){animation-duration:.6s}

/* ===============================================================================================================
   Motion = narration. Sous no-preference uniquement ; reduced-motion : états finaux, sans transition. */
@media (prefers-reduced-motion:no-preference){
 html[data-qpx-stage=seuil] .qpx-dawn__point{animation:qpx-breathe 3.6s var(--q-ease-inout) infinite}
 html[data-qpx-stage=init] .qpx-init__head{animation:qpx-rise .7s var(--q-ease) backwards}
 html[data-qpx-s-analyse] .qpx-init .q-pace__fill{animation:q-m-ring .8s var(--q-ease) backwards}
 html[data-qpx-s-agenda] .qpx-pulse{animation:qpx-pulse-life 1s linear}
 html[data-qpx-s-analyse] .qpx-pulse{animation:qpx-pulse-life 1.1s linear}
 html[data-qpx-s-priorite-ok] .qpx-mark[data-qpx-focus] .qpx-mark__halo{animation:qpx-halo-breathe 2.4s var(--q-ease-inout) .5s infinite}
 /* TODAY : l'environnement vit, presque imperceptiblement (brume, lumière). */
 html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-env__mist{animation:qpx-mist 46s var(--q-ease-inout) infinite alternate}
 html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-sky__light{animation:qpx-light 18s var(--q-ease-inout) infinite alternate}
 html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-layer--ciel{animation:qpx-drift 60s var(--q-ease-inout) infinite alternate}
 .qpx-today .q-t-head{animation:qpx-rise .6s var(--q-ease) .1s backwards}
 .qpx-today .q-t-kpis{animation:qpx-rise .6s var(--q-ease) .2s backwards}
 .qpx-today .q-t-priorities{animation:qpx-rise .6s var(--q-ease) .3s backwards}
 .qpx-today .qpx-today-agenda{animation:qpx-rise .6s var(--q-ease) .25s backwards}
 .qpx-today .qpx-slot[data-qpx-focus] .q-t-slot__line{animation:qpx-row-signal 1.2s var(--q-ease) .6s}
 .qpx-today [data-priority-focus]{animation:qpx-signal-once 1.4s var(--q-ease) 1.05s}
 .qpx-guide__panel:not([hidden]){animation:qpx-rise .3s var(--q-ease)}
}
@media (prefers-reduced-motion:reduce){
 .qpx-sky::before,.qpx-sky::after,.qpx-sky__light,.qpx-env,.qpx-env__land,.qpx-env__mist,.qpx-layer,.qpx-signal,.qpx-signal__line,.qpx-signal__glow,.qpx-mark circle,.qpx-dawn circle,.qpx-bar,.qpx-init__caption>span,.qpx-identity,.qpx-agenda__row,.qpx-rings,.qpx-ring__check,.qpx-ring__value,.qpx-ring__status,.qpx-found,.qpx-ready,.qpx-progress__fill,.qpx-progress__steps li,.qpx-ready::before,.qpx-ready::after,.qpx-progress__steps li::before,.qpx-init .q-pace__fill,.qpx-ring,.qpx-system,.qpx-system__switch,.qpx-system__knob,.qpx-system__label>span{transition:none!important}
 ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}
@keyframes qpx-rise{from{opacity:0;translate:0 14px}}
@keyframes qpx-pulse-life{0%{opacity:0}10%,86%{opacity:1}100%{opacity:0}}
@keyframes qpx-breathe{50%{opacity:.5;scale:1.45}}
@keyframes qpx-halo-breathe{50%{opacity:.25;scale:1.5}}
@keyframes qpx-signal-once{from{box-shadow:0 0 0 0 color-mix(in oklab,var(--q-gold) 55%,transparent)}to{box-shadow:0 0 0 18px transparent}}
@keyframes qpx-row-signal{from{box-shadow:inset 3px 0 0 var(--q-gold-ink),0 0 0 0 color-mix(in oklab,var(--q-gold) 55%,transparent)}to{box-shadow:inset 3px 0 0 var(--q-gold-ink),0 0 0 12px transparent}}
@keyframes qpx-mist{from{translate:-4% 0}to{translate:4% 0}}
@keyframes qpx-light{from{opacity:.3}to{opacity:.6}}
@keyframes qpx-drift{from{transform:translateX(-6px)}to{transform:translateX(6px)}}

/* ===============================================================================================================
   QPX_RDV_PREP (QPX-02) — la carte du focus devient la préparation. Même clairière que TODAY : la lumière se concentre,
   TODAY recule, le Signal converge sur le dossier du focus. Étapes : data-qpx-p-<context|dossier|clarify|strategy|ready>
   sur <html> (posées par qpx.js) ; sans drapeau, tout est visible dans l'état final. */
html[data-qpx-stage=prep] .qpx-env{opacity:.62;translate:0 14%}
html[data-qpx-stage=prep] .qpx-sky__light{opacity:.75}
html[data-qpx-stage=prep] .qpx-signal{opacity:1}
html[data-qpx-stage=prep] .qpx-mark:not([data-qpx-focus]) circle{opacity:.35}
.qpx-prep{position:relative}
.qpx-prep__page{box-sizing:border-box;display:grid;gap:var(--q-space-5);max-inline-size:var(--q-content-max);margin:0 auto;padding:var(--q-space-4) var(--q-gutter) calc(var(--q-space-8) + 72px);min-inline-size:0;overflow-wrap:anywhere}
.qpx-prep__back{margin:0}
.qpx-prep__return{display:inline-flex;align-items:center;gap:var(--q-space-2);min-block-size:var(--q-tap);padding:0 var(--q-space-2);border:0;border-radius:var(--q-radius-small);background:transparent;color:var(--q-brand);font:var(--q-weight-strong) var(--q-body-small)/1 var(--q-font-body);cursor:pointer}
.qpx-prep__return:focus-visible,.qpx-strategy-toggle:focus-visible{outline:3px solid var(--q-focus);outline-offset:2px}
/* L'en-tête : la carte du focus, continuée (même nom de View Transition). */
.qpx-prep-head{display:grid;gap:var(--q-space-2);padding:var(--q-space-5) var(--q-space-6);border:1px solid var(--q-card-line);border-radius:var(--q-radius-card);background:var(--q-surface);box-shadow:inset 3px 0 0 var(--q-gold-ink),0 24px 48px -24px rgb(0 64 59 / 30%);view-transition-name:qpx-focus}
.qpx-prep-head p{margin:0}
.qpx-prep-head__eyebrow{font:var(--q-weight-strong) var(--q-label)/1.4 var(--q-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--q-brand)}
.qpx-prep-head__title{margin:0;font:var(--q-weight-medium) clamp(2rem,1.4rem + 2.2vw,3.25rem)/1.05 var(--q-font-display);letter-spacing:-.02em;color:var(--q-title-ink)}
.qpx-prep-head__meta{display:flex;flex-wrap:wrap;gap:var(--q-space-1) var(--q-space-3);color:var(--q-text-secondary);font:var(--q-weight-medium) var(--q-body-small)/1.4 var(--q-font-body)}
.qpx-prep-head__meta>span+span::before{content:"·";margin-inline-end:var(--q-space-3);color:var(--q-border-strong)}
.qpx-prep-head__state{display:flex;align-items:center;gap:var(--q-space-2)}
.qpx-prep-state--ready{display:none}
html[data-qpx-p-ready] .qpx-prep-state--todo{display:none}
html[data-qpx-p-ready] .qpx-prep-state--ready{display:inline-flex}
.qpx-prep-head__caption{display:grid;min-block-size:1.4em;font:var(--q-weight-strong) var(--q-body-small)/1.4 var(--q-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--q-gold-ink)}
.qpx-prep-head__caption>span{grid-area:1/1;opacity:0;translate:0 6px;transition:opacity .3s var(--q-ease),translate .3s var(--q-ease)}
html:not([data-qpx-js]) [data-qpx-prep-cap=ready],html[data-qpx-prep-step=context] [data-qpx-prep-cap=context],html[data-qpx-prep-step=dossier] [data-qpx-prep-cap=dossier],html[data-qpx-prep-step=clarify] [data-qpx-prep-cap=clarify],html[data-qpx-prep-step=strategy] [data-qpx-prep-cap=strategy],html[data-qpx-prep-step=ready] [data-qpx-prep-cap=ready]{opacity:1;translate:0 0}
.qpx-prep-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--q-space-2);margin:var(--q-space-1) 0 0;padding:0;list-style:none;font:var(--q-weight-strong) var(--q-label)/1.2 var(--q-font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--q-text-secondary)}
.qpx-prep-steps li{position:relative;padding-block-start:var(--q-space-3);transition:color .3s var(--q-ease)}
.qpx-prep-steps li::before{content:"";position:absolute;inset-block-start:0;inset-inline:0;block-size:2px;border-radius:2px;background:var(--q-hairline);transition:background-color .4s var(--q-ease)}
html[data-qpx-p-context] [data-qpx-prep-node=context],html[data-qpx-p-dossier] [data-qpx-prep-node=dossier],html[data-qpx-p-clarify] [data-qpx-prep-node=clarify],html[data-qpx-p-strategy] [data-qpx-prep-node=strategy],html[data-qpx-p-ready] [data-qpx-prep-node=ready],html:not([data-qpx-js]) [data-qpx-prep-node]{color:var(--q-brand)}
html[data-qpx-p-context] [data-qpx-prep-node=context]::before,html[data-qpx-p-dossier] [data-qpx-prep-node=dossier]::before,html[data-qpx-p-clarify] [data-qpx-prep-node=clarify]::before,html[data-qpx-p-strategy] [data-qpx-prep-node=strategy]::before,html[data-qpx-p-ready] [data-qpx-prep-node=ready]::before,html:not([data-qpx-js]) [data-qpx-prep-node]::before{background:var(--q-gold-ink)}
html[data-qpx-p-ready] .qpx-prep-head__caption,html[data-qpx-p-ready] .qpx-prep-steps{display:none}

/* Le plateau de travail : ce que QEVYO sait (à gauche), le cœur du RDV, ce qu'il faut clarifier (à droite) ; le Signal
   les relie au cœur pendant la stratégie (tracés calculés par qpx.js). */
.qpx-prep-board{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 220px minmax(0,1fr);grid-template-areas:"known core attention";align-items:center;gap:var(--q-space-6)}
.qpx-prep-links{position:absolute;inset:0;inline-size:100%;block-size:100%;overflow:visible;pointer-events:none}
.qpx-link{fill:none;stroke:var(--q-gold-ink);stroke-width:1.6;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:.85;transition:stroke-dashoffset .9s var(--q-ease-inout),opacity .5s var(--q-ease)}
html[data-qpx-p-strategy] .qpx-link{stroke-dashoffset:0}
html[data-qpx-p-ready] .qpx-link{opacity:0}
.qpx-prep-known{grid-area:known}.qpx-prep-attention{grid-area:attention}
.qpx-prep-known,.qpx-prep-attention{display:grid;gap:var(--q-space-3);align-content:start}
.qpx-prep-label{margin:0;font:var(--q-weight-strong) var(--q-label)/1.4 var(--q-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--q-brand)}
.qpx-prep-list{display:grid;gap:var(--q-space-2);margin:0;padding:0;list-style:none}
.qpx-fact,.qpx-vigil{position:relative;display:grid;gap:2px;padding:var(--q-space-3) var(--q-space-4);border:1px solid var(--q-card-line);border-radius:var(--q-radius-medium);background:var(--q-surface);box-shadow:var(--q-shadow-card);transition:opacity .45s var(--q-ease),translate .45s var(--q-ease),border-color .4s var(--q-ease)}
.qpx-fact small{color:var(--q-text-secondary);font:var(--q-weight-medium) var(--q-caption)/1.3 var(--q-font-body)}
.qpx-fact strong{font:var(--q-weight-strong) var(--q-body)/1.35 var(--q-font-body);color:var(--q-text)}
.qpx-vigil{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--q-space-3);border-color:color-mix(in oklab,var(--q-gold-ink) 40%,var(--q-card-line));font:var(--q-weight-medium) var(--q-body-small)/1.4 var(--q-font-body)}
.qpx-vigil__mark{display:grid;place-items:center;inline-size:26px;block-size:26px;border-radius:50%;background:var(--q-medal-sand);color:var(--q-gold-ink);font:var(--q-weight-strong) var(--q-body-small)/1 var(--q-font-body)}
.qpx-prep-source{margin:0;color:var(--q-text-secondary);font-size:var(--q-caption);line-height:1.45}
.qpx-fact:nth-child(2){transition-delay:.25s}.qpx-fact:nth-child(3){transition-delay:.5s}.qpx-fact:nth-child(4){transition-delay:.75s}
.qpx-vigil:nth-child(2){transition-delay:.35s}
/* Le cœur : le RDV du focus, en vert profond ; ses anneaux d'or s'allument quand QEVYO relie, puis se stabilisent. */
.qpx-prep-core{grid-area:core;position:relative;display:grid;place-items:center;align-content:center;aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,var(--q-brand-deep) 0%,var(--q-brand-deep) 62%,color-mix(in oklab,var(--q-brand-deep) 0%,transparent) 100%);color:var(--q-ivory);view-transition-name:qpx-core}
.qpx-prep-core svg{position:absolute;inset:0;inline-size:100%;block-size:100%;overflow:visible}
.qpx-core__ring{fill:none;stroke:var(--q-gold);stroke-width:1;opacity:.35;transform-box:fill-box;transform-origin:center;transition:opacity .5s var(--q-ease),stroke-width .5s var(--q-ease)}
.qpx-core__dot{fill:var(--q-gold)}
html[data-qpx-p-strategy] .qpx-core__ring{opacity:.9;stroke-width:1.4}
.qpx-core__time{position:relative;font:var(--q-weight-strong) 1.375rem/1 var(--q-font-body);color:var(--q-ivory)}
.qpx-core__label{position:relative;font:var(--q-weight-medium) var(--q-caption)/1.3 var(--q-font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--q-on-dark-secondary)}
/* RDV PRÊT : le deuxième payoff. La préparation devient une carte de décision, en vert profond, ivoire et or. */
.qpx-prep-ready{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);grid-template-areas:"stamp stamp" "angle goal" "angle next" "style style" "actions actions";gap:var(--q-space-4) var(--q-space-6);padding:var(--q-space-6);border:1px solid color-mix(in oklab,var(--q-gold) 55%,transparent);border-radius:var(--q-radius-card);background:var(--q-deep-wash);color:var(--q-ivory);box-shadow:0 0 0 6px color-mix(in oklab,var(--q-gold) 10%,transparent),0 30px 60px -28px rgb(0 40 34 / 55%);view-transition-name:qpx-core}
.qpx-prep-ready p{margin:0}
.qpx-prep-ready__stamp{grid-area:stamp;font:var(--q-weight-strong) clamp(1rem,.9rem + .5vw,1.25rem)/1 var(--q-font-body);letter-spacing:.42em;color:var(--q-gold);text-shadow:0 0 28px color-mix(in oklab,var(--q-gold) 55%,transparent)}
.qpx-prep-ready__angle{grid-area:angle;display:grid;gap:var(--q-space-2);align-content:start}
.qpx-prep-ready__goal{grid-area:goal;display:grid;gap:var(--q-space-1)}
.qpx-prep-ready__next{grid-area:next;display:grid;gap:var(--q-space-1)}
.qpx-prep-ready__k{font:var(--q-weight-strong) var(--q-label)/1.4 var(--q-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--q-gold)}
.qpx-prep-ready__headline{font:var(--q-weight-medium) clamp(1.5rem,1.2rem + 1.2vw,2.125rem)/1.15 var(--q-font-display);color:var(--q-ivory);letter-spacing:-.01em}
.qpx-prep-ready__why,.qpx-prep-ready__fallback{color:var(--q-on-dark-secondary);font:var(--q-weight-regular) var(--q-body-small)/1.5 var(--q-font-body)}
.qpx-prep-ready__goal p:last-child,.qpx-prep-ready__next>p:nth-child(2){font:var(--q-weight-strong) var(--q-body)/1.45 var(--q-font-body);color:var(--q-ivory)}
.qpx-prep-ready__fallback span{color:var(--q-gold);font-weight:var(--q-weight-strong)}
.qpx-prep-ready__style{grid-area:style;padding-inline-start:var(--q-space-3);border-inline-start:2px solid var(--q-gold);color:var(--q-on-dark-secondary);font:var(--q-weight-regular) var(--q-body-small)/1.5 var(--q-font-body)}
.qpx-prep-ready__actions{grid-area:actions;display:flex;flex-wrap:wrap;align-items:center;gap:var(--q-space-3) var(--q-space-5)}
.qpx-strategy-toggle{min-block-size:48px;padding:0 var(--q-space-5);background:var(--q-ivory);color:var(--q-night);border-color:var(--q-ivory)}
.qpx-strategy-toggle:hover{background:var(--q-gold);border-color:var(--q-gold)}
.qpx-strategy-toggle:focus-visible{outline-color:var(--q-focus-on-dark)}
.qpx-strategy-toggle[aria-expanded=true] svg{rotate:90deg}
.qpx-prep-ready__later{color:var(--q-on-dark-secondary);font:var(--q-weight-medium) var(--q-caption)/1.4 var(--q-font-body)}
/* Ce qui n'est pas encore atteint attend ; sans JS, tout est visible. */
html[data-qpx-js]:not([data-qpx-p-dossier]) .qpx-fact,html[data-qpx-js]:not([data-qpx-p-dossier]) .qpx-prep-known .qpx-prep-label,
html[data-qpx-js]:not([data-qpx-p-clarify]) :is(.qpx-vigil,.qpx-prep-attention .qpx-prep-label,.qpx-prep-source){opacity:0;translate:0 10px}
html[data-qpx-js]:not([data-qpx-p-ready]) .qpx-prep-ready{display:none}
html[data-qpx-p-ready] .qpx-prep-core{display:none}
/* Après READY : la préparation passe au-dessus, le plateau se replie en contexte (mêmes éléments, View Transition). */
html[data-qpx-p-ready] .qpx-prep-ready{order:1}
html[data-qpx-p-ready] .qpx-prep-head{order:0}
html[data-qpx-p-ready] .qpx-prep__back{order:-1}
html[data-qpx-p-ready] .qpx-prep-board{order:2;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"known attention";align-items:start;gap:var(--q-space-5)}
html[data-qpx-p-ready] .qpx-prep-list{display:flex;flex-wrap:wrap;gap:var(--q-space-2)}
html[data-qpx-p-ready] :is(.qpx-fact,.qpx-vigil){display:inline-flex;align-items:baseline;gap:var(--q-space-2);padding:var(--q-space-2) var(--q-space-3);border-radius:var(--q-radius-pill);box-shadow:none;background:color-mix(in oklab,var(--q-surface) 88%,transparent)}
html[data-qpx-p-ready] .qpx-vigil__mark{inline-size:20px;block-size:20px;font-size:var(--q-caption)}
html[data-qpx-p-ready] .qpx-strategy{order:3}
.qpx-fact:nth-child(1){view-transition-name:qpx-k-1}.qpx-fact:nth-child(2){view-transition-name:qpx-k-2}.qpx-fact:nth-child(3){view-transition-name:qpx-k-3}.qpx-fact:nth-child(4){view-transition-name:qpx-k-4}
.qpx-vigil:nth-child(1){view-transition-name:qpx-v-1}.qpx-vigil:nth-child(2){view-transition-name:qpx-v-2}
::view-transition-group(qpx-core),::view-transition-group(qpx-k-1),::view-transition-group(qpx-k-2),::view-transition-group(qpx-k-3),::view-transition-group(qpx-k-4),::view-transition-group(qpx-v-1),::view-transition-group(qpx-v-2){animation-duration:.8s;animation-timing-function:var(--q-ease)}
/* La stratégie complète : sous le fold, dépliée par « Voir ma stratégie ». */
.qpx-strategy{scroll-margin-top:72px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--q-space-4) var(--q-space-5)}
.qpx-strategy__title{grid-column:1/-1;margin:0;font:var(--q-weight-medium) var(--q-title-card)/1.2 var(--q-font-display);color:var(--q-title-ink)}
.qpx-strategy__title:focus{outline:none}
.qpx-strategy__block{display:grid;gap:var(--q-space-3);align-content:start;padding:var(--q-space-5);border:1px solid var(--q-card-line);border-radius:var(--q-radius-card);background:var(--q-surface);box-shadow:var(--q-shadow-card)}
.qpx-strategy__block h3{margin:0;font:var(--q-weight-strong) var(--q-label)/1.4 var(--q-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--q-brand)}
.qpx-strategy__block h3 small{margin-inline-start:var(--q-space-2);letter-spacing:0;text-transform:none;color:var(--q-text-secondary);font-weight:var(--q-weight-medium)}
.qpx-strategy__block p{margin:0;font-size:var(--q-body-small);line-height:1.5;color:var(--q-text)}
.qpx-strategy__block ol,.qpx-strategy__block ul{display:grid;gap:var(--q-space-3);margin:0;padding:0;list-style:none}
.qpx-strategy__flow{grid-row:span 2}
.qpx-strategy__flow li{position:relative;display:grid;grid-template-columns:4.25rem minmax(0,1fr);column-gap:var(--q-space-3);padding-inline-start:var(--q-space-4);border-inline-start:2px solid var(--q-gold-ink)}
.qpx-strategy__flow li strong{grid-column:2;font:var(--q-weight-strong) var(--q-body-small)/1.35 var(--q-font-body)}
.qpx-strategy__flow li p{grid-column:2;color:var(--q-text-secondary)}
.qpx-flow__min{grid-row:1/3;font:var(--q-weight-strong) var(--q-body-small)/1.35 var(--q-font-body);color:var(--q-gold-ink)}
.qpx-strategy__questions li{display:grid;gap:2px}
.qpx-strategy__questions strong{font:var(--q-weight-medium) var(--q-lead)/1.25 var(--q-font-display);color:var(--q-text)}
.qpx-strategy__why{font-weight:var(--q-weight-strong);color:var(--q-gold-ink)}
.qpx-strategy__objection{font:var(--q-weight-medium) var(--q-lead)/1.3 var(--q-font-display)!important}
.qpx-strategy__posture li{padding-inline-start:var(--q-space-3);border-inline-start:2px solid var(--q-brand-soft);font-size:var(--q-body-small);line-height:1.5}
.qpx-strategy__chips{display:flex!important;flex-wrap:wrap;gap:var(--q-space-2)!important}
.qpx-strategy__chips li{padding:var(--q-space-1) var(--q-space-3);border-radius:var(--q-radius-pill);background:var(--q-medal-sand);color:var(--q-gold-ink);font:var(--q-weight-strong) var(--q-caption)/1.4 var(--q-font-body)}
/* TODAY après : la priorité traitée (état de session, jamais le dataset). */
.qpx-treated{view-transition-name:qpx-focus}
html[data-qpx-prepared] .qpx-today [data-priority-focus]{display:none}
.qpx-treated .q-t-priority__rank{background:var(--q-state-reached);color:var(--q-on-dark)}
.qpx-treated .q-t-priority__eyebrow{color:var(--q-state-reached)}
html[data-qpx-prepared] .qpx-slot[data-qpx-focus] .q-t-slot__line{background:color-mix(in oklab,var(--q-state-reached) 9%,var(--q-surface));box-shadow:inset 3px 0 0 var(--q-state-reached)}
html[data-qpx-prepared] .qpx-slot[data-qpx-focus] .qpx-slot__focus{color:var(--q-state-reached)}
@media (max-width:1023px){
 .qpx-prep-board{grid-template-columns:minmax(0,1fr);grid-template-areas:"core" "known" "attention";gap:var(--q-space-4)}
 .qpx-prep-core{inline-size:min(220px,62vw);justify-self:center}
 .qpx-prep-links{display:none}
 /* Mobile : le Signal descend le long du travail (fil vertical), au lieu de relier sur un plateau. */
 .qpx-prep-known,.qpx-prep-attention{padding-inline-start:var(--q-space-4);border-inline-start:2px solid var(--q-hairline);transition:border-color .6s var(--q-ease)}
 html[data-qpx-p-strategy] :is(.qpx-prep-known,.qpx-prep-attention){border-inline-start-color:var(--q-gold-ink)}
 .qpx-prep-ready{grid-template-columns:minmax(0,1fr);grid-template-areas:"stamp" "angle" "goal" "next" "style" "actions";padding:var(--q-space-5)}
 html[data-qpx-p-ready] .qpx-prep-board{grid-template-columns:minmax(0,1fr);grid-template-areas:"known" "attention"}
 .qpx-strategy{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:767px){
 .qpx-prep__page{gap:var(--q-space-4);padding-block-start:var(--q-space-2)}
 .qpx-prep-head{padding:var(--q-space-4)}
 .qpx-prep-head__title{font-size:1.875rem}
 .qpx-prep-head__meta{font-size:var(--q-caption)}
 .qpx-prep-steps{font-size:9px;letter-spacing:.06em}
 .qpx-prep-ready{gap:var(--q-space-3)}
 .qpx-prep-ready__headline{font-size:1.375rem}
 .qpx-prep-ready__why{display:none}
 html[data-qpx-strategy-open] .qpx-prep-ready__why{display:block}
 .qpx-strategy__block{padding:var(--q-space-4)}
 .qpx-today-agenda .qpx-slot__focus{flex-basis:100%;margin-inline-start:0;font-size:10px;letter-spacing:.06em}
}
@media (prefers-reduced-motion:no-preference){
 html[data-qpx-p-strategy]:not([data-qpx-p-ready]) .qpx-core__ring--1{animation:qpx-core-pulse 1.6s var(--q-ease-inout) infinite}
 html[data-qpx-p-strategy]:not([data-qpx-p-ready]) .qpx-core__ring--2{animation:qpx-core-pulse 1.6s var(--q-ease-inout) .2s infinite}
 html[data-qpx-p-strategy]:not([data-qpx-p-ready]) .qpx-core__ring--3{animation:qpx-core-pulse 1.6s var(--q-ease-inout) .4s infinite}
 html[data-qpx-p-ready] .qpx-prep-ready{animation:qpx-ready-glow 1.6s var(--q-ease) .2s backwards}
 html[data-qpx-p-ready] .qpx-prep-ready__stamp{animation:qpx-stamp .9s var(--q-ease) .1s backwards}
 .qpx-strategy:not([hidden]) .qpx-strategy__block{animation:qpx-rise .5s var(--q-ease) backwards}
 .qpx-strategy:not([hidden]) .qpx-strategy__block:nth-of-type(2){animation-delay:.08s}
 .qpx-strategy:not([hidden]) .qpx-strategy__block:nth-of-type(3){animation-delay:.16s}
 .qpx-strategy:not([hidden]) .qpx-strategy__block:nth-of-type(4){animation-delay:.24s}
}
@media (prefers-reduced-motion:reduce){
 .qpx-prep-head__caption>span,.qpx-prep-steps li,.qpx-prep-steps li::before,.qpx-link,.qpx-fact,.qpx-vigil,.qpx-core__ring,.qpx-prep-known,.qpx-prep-attention{transition:none!important}
}
@keyframes qpx-core-pulse{50%{opacity:1;scale:1.06}}
@keyframes qpx-ready-glow{from{box-shadow:0 0 0 0 color-mix(in oklab,var(--q-gold) 45%,transparent),0 30px 60px -28px rgb(0 40 34 / 55%)}}
@keyframes qpx-stamp{from{opacity:0;letter-spacing:.9em;filter:blur(6px)}}

/* ===============================================================================================================
   QPX-03 — les 3 modules de QEVYO (TODAY / COACH / REVIEW, les espaces de l'APP) et l'avatar compagnon. */
.qpx-modules{margin-inline:auto}
.qpx-modules ul{display:flex;gap:2px;margin:0;padding:3px;border:1px solid var(--q-hairline);border-radius:var(--q-radius-pill);background:color-mix(in oklab,var(--q-surface) 80%,transparent);list-style:none}
.qpx-module{display:inline-flex;align-items:center;justify-content:center;gap:var(--q-space-2);box-sizing:border-box;min-block-size:var(--q-tap);min-inline-size:6.5rem;padding:0 var(--q-space-4);border:0;border-radius:var(--q-radius-pill);background:transparent;color:var(--q-text-secondary);font:var(--q-weight-strong) var(--q-label)/1 var(--q-font-body);letter-spacing:.16em;text-transform:uppercase;cursor:pointer;transition:background-color var(--q-duration) var(--q-ease),color var(--q-duration) var(--q-ease)}
.qpx-module:hover{background:var(--q-hover-veil);color:var(--q-brand)}
.qpx-module:focus-visible{outline:3px solid var(--q-focus);outline-offset:2px}
.qpx-module--static{cursor:default}
.qpx-module--static:hover{background:transparent;color:var(--q-text-secondary)}
.qpx-module[aria-current=page]{background:var(--q-brand-deep);color:var(--q-ivory)}
.qpx-module[aria-current=page]::before{content:"";inline-size:6px;block-size:6px;border-radius:50%;background:var(--q-gold)}
@media (max-width:1200px){.qpx-module{min-inline-size:0;padding:0 var(--q-space-3)}}
@media (max-width:900px){
 .qpx-bar{flex-wrap:wrap;row-gap:var(--q-space-1)}
 .qpx-modules{order:10;flex-basis:100%;margin:0 0 var(--q-space-1)}
 .qpx-modules ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* La prise de parole de QEVYO : posée sur la barre du guide, l'avatar « parle » (halo de l'APP, état responding). */
.qpx-speech{display:none}
html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-speech:not([hidden]){position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--q-space-1) var(--q-space-3);box-sizing:border-box;inline-size:min(100%,40rem);margin-block-end:var(--q-space-2);padding:var(--q-space-4) var(--q-space-3) var(--q-space-4) var(--q-space-5);border:1px solid color-mix(in oklab,var(--q-gold-ink) 45%,var(--q-card-line));border-radius:var(--q-radius-card);background:var(--q-surface);box-shadow:inset 3px 0 0 var(--q-gold-ink),var(--q-shadow-float)}
.qpx-speech::after{content:"";position:absolute;inset-block-end:-7px;inset-inline-start:30px;inline-size:12px;block-size:12px;background:var(--q-surface);border-inline-end:1px solid color-mix(in oklab,var(--q-gold-ink) 45%,var(--q-card-line));border-block-end:1px solid color-mix(in oklab,var(--q-gold-ink) 45%,var(--q-card-line));rotate:45deg}
.qpx-speech__eyebrow{grid-column:1;margin:0;font:var(--q-weight-strong) var(--q-label)/1.4 var(--q-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--q-brand)}
.qpx-speech__hint{margin-inline-start:var(--q-space-2);letter-spacing:0;text-transform:none;color:var(--q-text-secondary);font-weight:var(--q-weight-medium)}
.qpx-speech__text{grid-column:1;margin:0;font:var(--q-weight-medium) clamp(1.0625rem,.98rem + .35vw,1.25rem)/1.35 var(--q-font-display);color:var(--q-text);text-wrap:pretty}
.qpx-speech__close{grid-column:2;grid-row:1/3;display:grid;place-items:center;inline-size:var(--q-tap);block-size:var(--q-tap);margin:calc(-1 * var(--q-space-2)) 0 0;border:0;border-radius:50%;background:transparent;color:var(--q-text-secondary);cursor:pointer}
.qpx-speech__close:focus-visible{outline:3px solid var(--q-focus);outline-offset:2px}
@media (max-width:767px){html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-speech:not([hidden]){padding:var(--q-space-3) var(--q-space-2) var(--q-space-3) var(--q-space-4)}}
@media (prefers-reduced-motion:no-preference){
 html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-speech:not([hidden]){animation:qpx-speak .5s var(--q-ease) backwards}
}
@keyframes qpx-speak{from{opacity:0;translate:0 12px;scale:.98}}
/* Desktop : la bulle ne couvre jamais l'action. Dans TODAY, elle part de l'avatar (sous « Ma situation ») ; dans COACH, elle
   se pose côté droit (au-dessus de « Ce qui mérite ton attention »). */
@media (min-width:1024px){
 html:is([data-qpx-stage=today],[data-qpx-stage=prep]) .qpx-speech:not([hidden]){inline-size:26rem}
 html[data-qpx-stage=today] .qpx-speech:not([hidden]){translate:-7rem 0}
 html[data-qpx-stage=prep] .qpx-speech:not([hidden]){translate:7rem 0}
 html[data-qpx-stage=prep] .qpx-speech::after{display:none}
}
/* RELEASE-GATE >>> P1-A (décision d'Alex, Release Gate 07/10/2026) : entre 901 et 1100 px, la barre de session (marque,
   modules, « Voir mon équipe », session) dépassait de la largeur (jusqu'à 189 px à 901 px, 66 px à 1024 px). Delta minimal :
   la disposition sur deux lignes déjà validée sous 900 px (QPX-01C / QPX-05) s'applique jusqu'à 1100 px. Rien d'autre. */
@media (min-width:901px) and (max-width:1100px){
 .qpx-bar{flex-wrap:wrap;row-gap:var(--q-space-1)}
 .qpx-modules{order:10;flex-basis:100%;margin:0 0 var(--q-space-1)}
 .qpx-modules ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
 .qpx-team-pill{margin-inline-start:auto}
 .qpx-bar:has(.qpx-team-pill:not([hidden])) .qpx-bar__session{margin-inline-start:0}
 .qpx-bar:has(.qpx-team-pill:not([hidden])) .qpx-bar__profile{display:none}
}
/* <<< RELEASE-GATE */
