/* Portail installable : bannière d'installation / de notifications, fenêtre d'installation et carte « Notifications » du profil.
   Bords fins (1px), couleurs du design « Ciel et cahier » ; valeurs de repli pour les pages qui n'ont pas ses jetons. */
.sp-pwa-banner,.sp-pwa-layer,.sp-pwa-card{
  --spw-ink:var(--ink,#1c2540);--spw-ink2:var(--ink2,#55627d);--spw-line:var(--sky2,#dfe8f3);--spw-accent:var(--vio,#21a9b7);--spw-accent-d:var(--vio-d,#186e77);--spw-accent-s:var(--vio-s,#dffafd);--spw-accent-b:var(--vio-b,#b6f0f6);
}

/* ---- Bannière ---- */
.sp-pwa-banner{
  display:flex;align-items:center;gap:14px;margin:0 0 14px;padding:14px 16px;box-sizing:border-box;
  background:linear-gradient(135deg,var(--spw-accent-s),#fff 70%);border:1px solid var(--spw-accent-b);border-radius:20px;color:var(--spw-ink);
}
.sp-pwa-banner.is-push{background:#fff;border-color:var(--spw-line)}
.sp-pwa-logo,.sp-pwa-ic{flex:0 0 auto;display:grid;place-items:center;width:52px;height:52px;border-radius:15px;background:#fff;border:1px solid var(--spw-line);overflow:hidden;color:var(--spw-accent-d)}
.sp-pwa-logo img{width:100%;height:100%;object-fit:cover;display:block}
.sp-pwa-ic{background:var(--spw-accent-s);border-color:var(--spw-accent-b)}
.sp-pwa-tx{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.sp-pwa-tx strong{font-size:15px;line-height:1.3;font-weight:700}
.sp-pwa-tx span{font-size:13px;line-height:1.45;color:var(--spw-ink2);font-weight:500}
.sp-pwa-ac{flex:0 0 auto;display:flex;align-items:center;gap:8px}

/* Boutons (bannière, fenêtre, carte) : couleurs fixes à tous les états, le thème repeint sinon les boutons survolés en rose */
.sp-pwa-banner :is(.sp-pwa-go,.sp-pwa-no),.sp-pwa-layer .sp-pwa-btn,.sp-pwa-card .sp-pwa-btn{
  font:inherit;font-weight:700;font-size:14px;line-height:1.2;min-height:42px;padding:0 18px;border-radius:13px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid var(--spw-line);background:#fff;color:var(--spw-ink2);white-space:nowrap;box-shadow:none;text-decoration:none;
}
.sp-pwa-banner .sp-pwa-go,.sp-pwa-layer .sp-pwa-btn.is-main,.sp-pwa-card .sp-pwa-btn.is-main{background:var(--spw-accent);border-color:var(--spw-accent);color:#fff}
.sp-pwa-banner .sp-pwa-go:is(:hover,:focus,:active),.sp-pwa-layer .sp-pwa-btn.is-main:is(:hover,:focus,:active),.sp-pwa-card .sp-pwa-btn.is-main:is(:hover,:focus,:active){background:var(--spw-accent-d);border-color:var(--spw-accent-d);color:#fff}
.sp-pwa-banner .sp-pwa-no:is(:hover,:focus,:active),.sp-pwa-layer .sp-pwa-btn:not(.is-main):is(:hover,:focus,:active),.sp-pwa-card .sp-pwa-btn:not(.is-main):is(:hover,:focus,:active){background:var(--spw-accent-s);border-color:var(--spw-accent);color:var(--spw-accent-d)}
.sp-pwa-layer .sp-pwa-btn.is-done{background:var(--spw-accent-s);border-color:var(--spw-accent);color:var(--spw-accent-d)}
.sp-pwa-banner button:disabled{opacity:.6;cursor:default}
.sp-pwa-banner button:focus-visible,.sp-pwa-card button:focus-visible,.sp-pwa-layer :is(button,input):focus-visible{outline:2px solid var(--spw-accent);outline-offset:2px}

@media (max-width:800px){
  .sp-pwa-banner{flex-wrap:wrap;margin:0 0 12px;gap:12px 14px}
  .sp-pwa-tx{flex:1 1 calc(100% - 70px)}
  .sp-pwa-ac{flex:1 1 100%}
  .sp-pwa-ac button{flex:1 1 0;min-height:46px}
  .sp-pwa-ac .sp-pwa-go{flex:2 1 0}
}

/* ---- Fenêtre d'installation (feuille du bas sur téléphone, fenêtre centrée sur grand écran) ---- */
html.sp-pwa-lock{overflow:hidden}
.sp-pwa-layer{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:flex-end;justify-content:center;font-family:inherit;color:var(--spw-ink)}
.sp-pwa-bg{position:absolute;inset:0;background:rgba(28,37,64,.46);opacity:0;transition:opacity .2s}
.sp-pwa-sheet{
  position:relative;box-sizing:border-box;width:100%;max-width:520px;max-height:92vh;max-height:92dvh;overflow:auto;overscroll-behavior:contain;
  background:#fff;border:1px solid var(--spw-line);border-bottom:0;border-radius:26px 26px 0 0;padding:26px 22px calc(20px + env(safe-area-inset-bottom,0px));
  transform:translateY(24px);opacity:0;transition:transform .22s ease,opacity .2s;
}
.sp-pwa-sheet:focus{outline:none}
.sp-pwa-sheet::before{content:"";display:block;width:42px;height:4px;border-radius:2px;background:var(--spw-line);margin:-14px auto 16px}
.sp-pwa-layer.is-open .sp-pwa-bg{opacity:1}
.sp-pwa-layer.is-open .sp-pwa-sheet{transform:none;opacity:1}
.sp-pwa-layer .sp-pwa-x{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:38px;height:38px;padding:0;border-radius:50%;border:1px solid var(--spw-line);background:#fff;color:var(--spw-ink2);cursor:pointer;box-shadow:none}
.sp-pwa-layer .sp-pwa-x:is(:hover,:focus,:active){background:var(--spw-accent-s);border-color:var(--spw-accent);color:var(--spw-accent-d)}
.sp-pwa-hd{display:flex;align-items:center;gap:14px;padding-right:40px}
.sp-pwa-app{flex:0 0 auto;display:grid;place-items:center;width:64px;height:64px;border-radius:18px;border:1px solid var(--spw-line);background:#fff;overflow:hidden;color:var(--spw-accent-d)}
.sp-pwa-app img{width:100%;height:100%;object-fit:cover;display:block}
.sp-pwa-ht h2{margin:0;font-size:19px;line-height:1.25;font-weight:800;color:var(--spw-ink);letter-spacing:0;text-transform:none}
.sp-pwa-ht p{margin:4px 0 0;font-size:13.5px;line-height:1.4;color:var(--spw-ink2);font-weight:500}
.sp-pwa-perks{list-style:none;margin:16px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.sp-pwa-perk{display:flex;flex-direction:column;align-items:center;gap:7px;margin:0;padding:11px 6px 10px;border:1px solid var(--spw-line);border-radius:14px;background:#fff;text-align:center}
.sp-pwa-pi{flex:0 0 auto;display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--spw-accent-s);color:var(--spw-accent-d)}
.sp-pwa-pt{display:flex;flex-direction:column;min-width:0}
.sp-pwa-pt strong{font-size:12.5px;line-height:1.3;font-weight:700}
.sp-pwa-pt small{display:none}
.sp-pwa-body{margin-top:18px}
.sp-pwa-h3{margin:0 0 10px;font-size:12px;line-height:1.3;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--spw-ink2)}
.sp-pwa-steps{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.sp-pwa-step{display:flex;align-items:center;gap:12px;margin:0;padding:11px 12px;border:1px solid var(--spw-line);border-radius:14px;background:#fff}
.sp-pwa-n{flex:0 0 auto;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--spw-accent);color:#fff;font-size:13px;font-weight:700}
.sp-pwa-g{flex:0 0 auto;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#f2f5fa;color:#1c2540}
.sp-pwa-s{flex:1 1 auto;min-width:0;font-size:14px;line-height:1.45;color:var(--spw-ink);font-weight:500}
.sp-pwa-s b{font-weight:700;color:var(--spw-accent-d)}
.sp-pwa-warn{margin:0 0 10px;padding:11px 13px;border-radius:14px;background:#fff6e5;border:1px solid #f3d9a4;color:#7a4b00;font-size:13.5px;line-height:1.45;font-weight:600}
.sp-pwa-url{display:block;width:100%;box-sizing:border-box;margin:0 0 14px;padding:0 12px;min-height:44px;border:1px solid var(--spw-line);border-radius:12px;background:#f7f9fc;color:var(--spw-ink);font:inherit;font-size:13px}
.sp-pwa-ok{margin:0;padding:12px 14px;border-radius:14px;background:var(--spw-accent-s);color:var(--spw-accent-d);font-size:14px;font-weight:700}
.sp-pwa-note{margin:10px 0 0;font-size:13px;line-height:1.45;color:var(--spw-ink2);font-weight:500}
.sp-pwa-ft{position:sticky;bottom:calc(-20px - env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:8px;margin:18px -22px calc(-20px - env(safe-area-inset-bottom,0px));padding:12px 22px calc(20px + env(safe-area-inset-bottom,0px));background:linear-gradient(#fff0,#fff 14px);background-color:#fff;border-top:1px solid var(--spw-line)}
.sp-pwa-layer .sp-pwa-btn{width:100%;min-height:48px}
.sp-pwa-layer .sp-pwa-btn svg{width:18px;height:18px}
.sp-pwa-body .sp-pwa-btn.is-link{margin-top:12px;min-height:44px;border-style:dashed}

@media (min-width:801px){
  .sp-pwa-layer{align-items:center}
  .sp-pwa-sheet{border-radius:26px;border-bottom:1px solid var(--spw-line);max-height:88vh;padding:28px 26px 24px}
  .sp-pwa-sheet::before{display:none}
  .sp-pwa-ft{bottom:-24px;margin:18px -26px -24px;padding:12px 26px 24px}
  .sp-pwa-pt small{display:block;font-size:12px;line-height:1.35;color:var(--spw-ink2);font-weight:500;margin-top:2px}
}
@media (prefers-reduced-motion:reduce){.sp-pwa-bg,.sp-pwa-sheet{transition:none}}

/* Carte du profil */
.sp-pwa-card .sp-pwa-lead{margin:0 0 10px;font-size:13.5px;line-height:1.5;color:var(--spw-ink2)}
.sp-pwa-card .sp-pwa-state{margin:0 0 12px;font-size:14px;font-weight:600;line-height:1.45;color:var(--spw-ink)}
.sp-pwa-card .sp-pwa-state[data-state="on"]{color:var(--spw-accent-d)}
.sp-pwa-card .sp-pwa-state[data-state="blocked"]{color:#b42318}
.sp-pwa-card .sp-pwa-btns{display:flex;flex-wrap:wrap;gap:8px}
.sp-pwa-card .sp-pwa-btns [hidden]{display:none}
.sp-pwa-card .sp-pwa-msg{margin:10px 0 0;font-size:13px;font-weight:600;color:var(--spw-accent-d)}
.sp-pwa-card .sp-pwa-msg:empty{display:none}
.sp-pwa-card .sp-pwa-msg.is-bad{color:#b42318}
/* Téléphone : après « Mes enfants » (les rubriques du profil se rangent par `order`, cf. portal.css) */
@media (max-width:800px){.sp-pwa-card{order:10;margin-top:14px}.sp-pwa-card .sp-pwa-btns .sp-pwa-btn{flex:1 1 100%;min-height:46px}}
