/* Parisian Agenda v2 : css/polish.css
   Couche d'accessibilité et de finition, chargée après app.css (ne redéfinit que ce qui manque). Voir docs/AUDIT-UX.md. */

/* ---- base : ancres sous la barre fixe, hauteur dynamique iOS, pas de zoom auto sur les champs ---- */
html{scroll-padding-top:calc(var(--safeT) + var(--topH) + 12px);scroll-padding-bottom:calc(var(--safeB) + var(--tabH) + 16px)}
body{min-height:100vh;min-height:100dvh}
input,select,textarea{font-size:max(16px,1rem)}
button,.btn,.chip,.tabs a,.icon-btn{-webkit-touch-callout:none;touch-action:manipulation}
@media(max-width:999px){body{padding-left:var(--safeL);padding-right:var(--safeR)}}

/* ---- focus : anneau double visible sur tout fond, formes conservées ---- */
:focus-visible{border-radius:inherit;outline:2px solid var(--focus);outline-offset:3px;box-shadow:0 0 0 5px color-mix(in srgb,var(--bg) 85%,transparent)}
.glass-btn:focus-visible,.poi-card>.fav-btn:focus-visible,.sheet-hero :focus-visible,.hero :focus-visible{outline-color:#fff;box-shadow:0 0 0 5px rgba(0,0,0,.55)}
input:focus-visible,select:focus-visible{box-shadow:none}
.chip:focus-visible,.btn:focus-visible,.cta:focus-visible,.pill-btn:focus-visible{border-radius:999px}
.icon-btn:focus-visible,.glass-btn:focus-visible{border-radius:50%}
.poi-card .pc-link:focus-visible,.tile:focus-visible,.result:focus-visible{outline-offset:-3px;border-radius:var(--r)}
.tabs a:focus-visible{outline-offset:-3px}

/* ---- cibles tactiles 44px ---- */
@media(pointer:coarse){
  .chip{min-height:44px}
  .pill-btn{height:44px}
  .subtabs a,.link,.btn.small{min-height:44px}
  .tabs a{min-height:48px}
}

/* ---- micro-interactions ---- */
.screen>*{animation:pa-rise .36s var(--ease-out) both}
.screen>*:nth-child(2){animation-delay:.04s}.screen>*:nth-child(3){animation-delay:.08s}
.screen>*:nth-child(4){animation-delay:.12s}.screen>*:nth-child(n+5){animation-delay:.16s}
@keyframes pa-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.tabs a svg{transition:transform .25s var(--ease-sheet),stroke-width .15s}
.tabs a[aria-current="page"] svg{transform:translateY(-2px)}
.fav-btn.pa-pop svg{animation:pa-pop .38s var(--ease-sheet)}
@keyframes pa-pop{0%{transform:scale(1)}40%{transform:scale(1.35)}100%{transform:scale(1)}}
.badge-count{transition:transform .2s var(--ease-sheet)}

/* ---- squelettes de chargement ---- */
.pa-skel{padding:18px 2px;display:grid;gap:14px}
.pa-skel i,.ph:has(>img.pa-wait),.thumb:has(img.pa-wait){display:block;background:linear-gradient(100deg,var(--card2) 30%,color-mix(in srgb,var(--card2) 55%,var(--tx) 9%) 50%,var(--card2) 70%) 0 0/220% 100%;animation:pa-shimmer 1.3s linear infinite}
.pa-skel i{border-radius:var(--r2);height:18px;width:60%}
.pa-skel i:first-child{height:34px;width:78%}
.pa-skel i:nth-child(n+3){height:150px;width:100%;border-radius:var(--r)}
@keyframes pa-shimmer{to{background-position:-220% 0}}
img.pa-wait{opacity:0}
.ph img,.thumb img{transition:opacity .35s var(--ease-out),transform .5s var(--ease-out)}

/* ---- bandeau de mise à jour du service worker ---- */
.pa-update{
  position:fixed;left:50%;z-index:210;bottom:calc(var(--safeB) + var(--tabH) + var(--dock-h) + 18px);transform:translate(-50%,0);
  display:flex;align-items:center;gap:10px;max-width:min(92%,460px);padding:8px 8px 8px 18px;border-radius:999px;
  background:var(--card);border:1px solid rgba(var(--acc-rgb),.5);box-shadow:var(--shadow);font-size:.88rem;font-weight:600;
  animation:pa-rise .35s var(--ease-sheet) both
}
.pa-update[hidden]{display:none}
.pa-update button{min-height:44px;padding:0 14px;border-radius:999px;font-weight:800;font-size:.85rem}
.pa-update .go{background:linear-gradient(135deg,var(--acc2),var(--acc));color:var(--accTx)}
.pa-update .x{color:var(--tx2);width:44px;padding:0;font-size:1.2rem;line-height:1}
@media(min-width:1000px){.pa-update{bottom:28px;left:calc(50% + 115px)}}

/* ---- contraste renforcé à la demande ---- */
@media(prefers-contrast:more){
  :root{--line:rgba(255,255,255,.34);--line2:rgba(255,255,255,.22);--tx3:#b9b0a1}
  html[data-theme="light"]{--line:rgba(30,24,14,.5);--line2:rgba(30,24,14,.32);--tx3:#4a4237}
}

/* ---- mouvement réduit ---- */
@media(prefers-reduced-motion:reduce){
  .screen>*,.pa-update,.fav-btn.pa-pop svg{animation:none!important}
  .pa-skel i,.ph:has(>img.pa-wait),.thumb:has(img.pa-wait){animation:none}
  .poi-card:hover .thumb img{transform:none}
  .tabs a[aria-current="page"] svg{transform:none}
}
