/* Fanjan 1.0 — « La coupe de l'île » : l'accueil est une coupe de La Réunion, du lagon au Piton des Neiges,
   où l'on monte en découvrant la nature. Courbes de niveau, encre basalte, vert fanjan, pollen de tamarin. */
:root{
 --fond:#E8EDE5; --fond2:#F3F6F1; --papier:#FBFCFA; --encre:#1E2621; --encre2:#4B564F; --trait:#C9D4C8; --trait2:#DCE4DA;
 --fanjan:#1F6B4A; --fanjan2:#2F8A60; --pollen:#E8B23A; --lagon:#169C98; --vermillon:#D9481F; --alerte:#B3124F;
 --endem:#0E6F5C; --indig:#2E6FB0; --exo:#6F756E;
 --r1:22px; --r2:14px; --r3:9px;
 --ombre:0 1px 0 rgba(30,38,33,.06),0 10px 30px -18px rgba(30,38,33,.35);
 --t-titre:"Young Serif",Georgia,serif; --t-ui:"Hanken Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
 --bas:calc(70px + env(safe-area-inset-bottom));
 color-scheme:light;
}
:root[data-grand="1"]{font-size:118%}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--fond);color:var(--encre);font:400 1rem/1.5 var(--t-ui);min-height:100vh;overflow-x:hidden;-webkit-tap-highlight-color:transparent}
body::before{content:"";position:fixed;inset:0;background:var(--topo) center/520px auto repeat;opacity:.55;pointer-events:none;z-index:0}
img{max-width:100%;display:block}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--fanjan)}
:focus-visible{outline:3px solid var(--pollen);outline-offset:2px;border-radius:6px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
h1,h2,h3{font-family:var(--t-titre);font-weight:400;line-height:1.15;margin:0;letter-spacing:-.005em}
h1{font-size:clamp(1.75rem,6vw,2.3rem)} h2{font-size:1.45rem} h3{font-size:1.15rem}
p{margin:0}
.muted{color:var(--encre2)}
.petit{font-size:.88rem}

/* ---------- Coque ---------- */
#app{position:relative;z-index:1;max-width:640px;margin:0 auto;padding:max(14px,env(safe-area-inset-top)) 16px calc(var(--bas) + 24px)}
.haut{display:flex;align-items:center;gap:10px;margin:2px 0 14px}
.haut .logo{width:34px;height:34px;flex:none}
.haut b{font-family:var(--t-titre);font-size:1.3rem;font-weight:400}
.haut .espace{flex:1}
.rond{width:42px;height:42px;border-radius:50%;border:1px solid var(--trait);background:var(--papier);display:grid;place-items:center;cursor:pointer}
.rond svg{width:20px;height:20px}

nav.onglets{position:fixed;left:0;right:0;bottom:0;z-index:20;background:rgba(251,252,250,.94);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--trait);padding:6px 6px max(8px,calc(env(safe-area-inset-bottom) - 8px));display:flex;justify-content:center}
nav.onglets .in{display:flex;max-width:640px;width:100%}
nav.onglets button{flex:1;min-width:0;border:0;background:none;padding:6px 2px 4px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.74rem;color:var(--encre2);cursor:pointer;border-radius:12px}
nav.onglets button svg{width:24px;height:24px}
nav.onglets button[aria-current="page"]{color:var(--fanjan);font-weight:700}
nav.onglets button.photo{position:relative;top:-14px}
nav.onglets button.photo span.bulle{width:58px;height:58px;border-radius:50%;background:var(--fanjan);color:#fff;display:grid;place-items:center;box-shadow:0 8px 18px -8px rgba(31,107,74,.8);border:4px solid var(--papier)}
nav.onglets button.photo span.bulle svg{width:28px;height:28px}

/* ---------- Boutons, champs ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:999px;border:1.5px solid var(--encre);background:transparent;cursor:pointer;font-weight:600;text-decoration:none;color:var(--encre)}
.btn.plein{background:var(--fanjan);border-color:var(--fanjan);color:#fff}
.btn.pollen{background:var(--pollen);border-color:var(--pollen);color:var(--encre)}
.btn.rouge{background:var(--vermillon);border-color:var(--vermillon);color:#fff}
.btn.doux{border-color:var(--trait);background:var(--papier)}
.btn.petit{min-height:40px;padding:0 14px;font-size:.92rem}
.btn.large{width:100%}
.btn[disabled]{opacity:.5;cursor:default}
.btn svg{width:20px;height:20px;flex:none}
.rang{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
label.champ{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.95rem}
input[type=text],input[type=email],input[type=password],input[type=search],input[type=date],input[type=number],select,textarea{width:100%;min-height:48px;border:1.5px solid var(--trait);border-radius:var(--r3);background:var(--papier);padding:10px 12px;font-weight:400}
textarea{min-height:96px;resize:vertical}
input:focus,select,textarea:focus{border-color:var(--fanjan)}
.puces{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:none;margin:0 -16px;padding-left:16px;padding-right:16px}
.puces::-webkit-scrollbar{display:none}
.puce{flex:none;border:1.5px solid var(--trait);background:var(--papier);border-radius:999px;min-height:40px;padding:0 14px;cursor:pointer;font-size:.92rem;display:inline-flex;align-items:center;gap:6px}
.puce[aria-pressed="true"]{background:var(--encre);border-color:var(--encre);color:#fff}
.puce i{width:10px;height:10px;border-radius:50%;background:var(--c,var(--trait))}

/* ---------- Blocs ---------- */
.bloc{background:var(--papier);border:1px solid var(--trait2);border-radius:var(--r1);padding:18px;box-shadow:var(--ombre);margin-bottom:14px}
.bloc.plat{box-shadow:none}
.bloc h2{margin-bottom:6px}
.titre-sec{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:22px 4px 10px}
.titre-sec h2{font-size:1.25rem}
.titre-sec button{border:0;background:none;color:var(--fanjan);font-weight:600;cursor:pointer;padding:6px}
.vide{text-align:center;padding:26px 16px;color:var(--encre2)}
.vide svg{width:56px;height:56px;margin:0 auto 10px;color:var(--fanjan2);opacity:.75}

/* ---------- La coupe de l'île (accueil) ---------- */
.coupe{position:relative;border-radius:28px;overflow:hidden;background:linear-gradient(#DCE8EF,#EEF3EC 60%);border:1px solid var(--trait);box-shadow:var(--ombre);margin-bottom:14px}
.coupe-tete{position:absolute;left:16px;top:14px;right:16px;z-index:3;display:flex;justify-content:space-between;align-items:flex-start;gap:10px;pointer-events:none}
.coupe-tete p{font-size:.92rem;color:var(--encre2);max-width:20ch}
.coupe-tete .alt{font-family:var(--t-titre);font-size:2.4rem;line-height:1;color:var(--encre)}
.coupe-tete .alt small{font-family:var(--t-ui);font-size:.95rem;margin-left:2px;color:var(--encre2)}
.coupe-tete .rang-alt{font-size:.85rem;color:var(--fanjan);font-weight:700;margin-top:4px}
.coupe svg.ile{display:block;width:100%;height:auto}
.coupe .bande{cursor:pointer;transition:filter .2s}
.coupe .bande:hover,.coupe .bande:focus-visible{filter:brightness(1.08)}
.coupe .bande:focus-visible{outline:none}
.coupe .bande:focus-visible path{stroke:var(--pollen);stroke-width:4}
.coupe .marque{transition:transform 1.4s cubic-bezier(.2,.8,.2,1)}
.coupe .legende{display:flex;flex-wrap:wrap;gap:6px 12px;padding:10px 16px 14px;font-size:.82rem;color:var(--encre2);background:rgba(251,252,250,.8);border-top:1px solid var(--trait2)}
.coupe .legende button{border:0;background:none;padding:4px 0;cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:inherit}
.coupe .legende i{width:12px;height:12px;border-radius:4px;background:var(--c)}

.action-photo{display:flex;align-items:center;gap:14px;width:100%;text-align:left;border:0;border-radius:var(--r1);background:var(--fanjan);color:#fff;padding:16px 18px;cursor:pointer;box-shadow:0 14px 30px -18px rgba(31,107,74,.9);margin-bottom:14px}
.action-photo .ic{width:54px;height:54px;border-radius:16px;background:rgba(255,255,255,.14);display:grid;place-items:center;flex:none}
.action-photo .ic svg{width:30px;height:30px}
.action-photo b{display:block;font-family:var(--t-titre);font-weight:400;font-size:1.3rem}
.action-photo span{opacity:.88;font-size:.92rem}

.mois{display:grid;grid-template-columns:64px 1fr;gap:14px;align-items:start}
.mois .cal{border-radius:16px;background:var(--encre);color:#fff;text-align:center;padding:8px 0 10px}
.mois .cal b{display:block;font-family:var(--t-titre);font-weight:400;font-size:1.7rem;line-height:1.1}
.mois .cal span{font-size:.78rem;opacity:.8}
.mois h3{margin-bottom:4px}

.urgences{display:grid;gap:10px}
.urgence{display:flex;gap:12px;align-items:center;border:1.5px solid var(--trait);background:var(--papier);border-radius:var(--r2);padding:12px 14px;cursor:pointer;text-align:left;width:100%}
.urgence .pic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;flex:none;background:#FBE9E3;color:var(--vermillon)}
.urgence .pic svg{width:24px;height:24px}
.urgence b{display:block}
.urgence span{font-size:.88rem;color:var(--encre2)}

.defi-carte{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center}
.defi-carte .medaille{width:58px;height:58px}
.defi-carte .medaille .tour{transition:stroke-dashoffset 1s}

/* ---------- Listes d'espèces ---------- */
.liste{display:grid;gap:10px}
.esp{display:grid;grid-template-columns:52px 1fr auto;gap:12px;align-items:center;width:100%;text-align:left;border:1px solid var(--trait2);background:var(--papier);border-radius:var(--r2);padding:10px 12px;cursor:pointer}
.esp .vig{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:var(--fondv,#E3EFE6);color:var(--cv,var(--fanjan));overflow:hidden}
.esp .vig svg{width:30px;height:30px}
.esp .vig img{width:100%;height:100%;object-fit:cover}
.esp b{font-family:var(--t-titre);font-weight:400;font-size:1.08rem;display:block;line-height:1.2}
.esp em{font-size:.84rem;color:var(--encre2)}
.statut{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;font-weight:700;border-radius:999px;padding:4px 10px;color:#fff;background:var(--c);white-space:nowrap}
.statut.contour{background:transparent;color:var(--c);border:1.5px solid var(--c)}
.recherche{position:relative;margin-bottom:10px}
.recherche svg{position:absolute;left:14px;top:50%;width:20px;height:20px;transform:translateY(-50%);color:var(--encre2)}
.recherche input{padding-left:44px;border-radius:999px}
.compte-res{font-size:.85rem;color:var(--encre2);margin:4px 4px 10px}

/* ---------- Feuilles (fiches, formulaires) ---------- */
.voile{position:fixed;inset:0;z-index:40;background:rgba(18,26,21,.45);display:flex;align-items:flex-end;justify-content:center;opacity:0;transition:opacity .25s}
.voile.ouvert{opacity:1}
.feuille{background:var(--fond2);width:100%;max-width:640px;max-height:94vh;max-height:94dvh;overflow:auto;border-radius:26px 26px 0 0;padding:10px 18px calc(24px + env(safe-area-inset-bottom));transform:translateY(40px);transition:transform .3s cubic-bezier(.2,.8,.2,1);overscroll-behavior:contain}
.voile.ouvert .feuille{transform:none}
.feuille .poignee{width:44px;height:5px;border-radius:9px;background:var(--trait);margin:4px auto 10px}
.feuille .fermer{position:sticky;top:0;float:right;margin:-2px -6px 0 8px;z-index:2}
.feuille h2{font-size:1.6rem;margin:4px 0 2px;padding-right:44px}
.feuille .sci{font-style:italic;color:var(--encre2)}
.feuille section{margin-top:16px}
.feuille section h3{font-size:1.02rem;font-family:var(--t-ui);font-weight:700;margin-bottom:4px}
.feuille .pile{display:grid;gap:12px}
.etages-mini{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.etages-mini span{font-size:.82rem;border-radius:999px;padding:3px 10px;background:var(--f);color:var(--encre);border:1px solid color-mix(in srgb,var(--c) 40%,transparent)}
.note-confiance{border-left:4px solid var(--pollen);background:#FBF3DF;border-radius:0 12px 12px 0;padding:10px 12px;font-size:.92rem}
.note-danger{border-left:4px solid var(--vermillon);background:#FBE9E3;border-radius:0 12px 12px 0;padding:10px 12px;font-size:.92rem}
.note-protegee{border-left:4px solid var(--endem);background:#E1F0EB;border-radius:0 12px 12px 0;padding:10px 12px;font-size:.92rem}

/* Le sceau du statut */
.sceau-zone{display:grid;grid-template-columns:120px 1fr;gap:16px;align-items:center;margin:12px 0 4px}
.sceau{width:120px;height:120px}
.sceau .anneau{animation:tourne 26s linear infinite;transform-origin:60px 60px}
.sceau.pose{animation:pose .55s cubic-bezier(.3,1.6,.5,1) both}
@keyframes tourne{to{transform:rotate(360deg)}}
@keyframes pose{from{transform:scale(1.5) rotate(-20deg);opacity:0}to{transform:none;opacity:1}}
.sceau-zone p{font-size:.95rem}
.sceau-zone b{font-family:var(--t-titre);font-weight:400;font-size:1.2rem;display:block;margin-bottom:2px}

/* ---------- Photo ---------- */
.prise{display:grid;gap:12px}
.cadre-photo{position:relative;border-radius:var(--r1);overflow:hidden;background:var(--encre);aspect-ratio:4/3;display:grid;place-items:center;color:#fff}
.cadre-photo img{width:100%;height:100%;object-fit:cover}
.cadre-photo .vise{position:absolute;inset:18%;border:2px dashed rgba(255,255,255,.55);border-radius:28px;pointer-events:none}
.cadre-photo .msg{position:absolute;inset:auto 0 0;padding:14px;background:linear-gradient(transparent,rgba(0,0,0,.65));font-size:.92rem}
.vignettes{display:flex;gap:8px}
.vignettes .v{position:relative;width:76px;height:76px;border-radius:14px;overflow:hidden;border:2px solid var(--papier);box-shadow:var(--ombre)}
.vignettes .v img{width:100%;height:100%;object-fit:cover}
.vignettes .v button{position:absolute;top:3px;right:3px;width:26px;height:26px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;cursor:pointer;line-height:1}
.mode-choix{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mode-choix button{border:1.5px solid var(--trait);background:var(--papier);border-radius:var(--r2);padding:12px;text-align:left;cursor:pointer;min-height:76px}
.mode-choix button b{display:block}
.mode-choix button span{font-size:.84rem;color:var(--encre2)}
.mode-choix button[aria-pressed="true"]{border-color:var(--fanjan);background:#E3EFE6;box-shadow:inset 0 0 0 1px var(--fanjan)}
/* L'attente : une crosse de fanjan qui se déroule */
.attente{display:grid;justify-items:center;gap:12px;padding:20px 0;text-align:center}
.attente svg{width:96px;height:96px}
.attente .crosse{stroke-dasharray:320;stroke-dashoffset:320;animation:deroule 2.4s ease-in-out infinite}
@keyframes deroule{0%{stroke-dashoffset:320}55%,70%{stroke-dashoffset:0}100%{stroke-dashoffset:-320}}
.attente p{color:var(--encre2)}
.jardin-res{display:grid;gap:10px}
.jardin-res .pl{border:1px solid var(--trait2);background:var(--papier);border-radius:var(--r2);padding:12px 14px}
.jardin-res .pl .l1{display:flex;justify-content:space-between;gap:10px;align-items:center}
.jardin-res .pl b{font-family:var(--t-titre);font-weight:400;font-size:1.05rem}
.jardin-res .pl p{font-size:.9rem;margin-top:4px}
.jardin-res .pl .remp{margin-top:6px;font-size:.88rem;color:var(--fanjan);font-weight:600}
.note-jardin{display:flex;gap:14px;align-items:center}
.note-jardin .n{font-family:var(--t-titre);font-size:2.6rem;line-height:1;color:var(--fanjan)}

/* ---------- Défis ---------- */
.quiz{display:grid;gap:14px;text-align:center}
.quiz .carte{border-radius:var(--r1);background:var(--papier);border:1px solid var(--trait2);padding:22px 18px;box-shadow:var(--ombre);min-height:170px;display:grid;align-content:center;gap:8px}
.quiz .carte b{font-family:var(--t-titre);font-weight:400;font-size:1.6rem}
.quiz .carte.ok{animation:bon .5s}
.quiz .carte.ko{animation:mauvais .4s}
@keyframes bon{40%{transform:scale(1.04);border-color:var(--endem)}}
@keyframes mauvais{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
.quiz .choix{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.quiz .choix button{min-height:58px;border-radius:var(--r2);border:2px solid var(--c);background:var(--papier);color:var(--encre);font-weight:700;cursor:pointer;font-size:.92rem;padding:4px}
.quiz .choix button.juste{background:var(--c);color:#fff}
.serie{display:flex;justify-content:center;gap:6px}
.serie i{width:12px;height:12px;border-radius:50%;background:var(--trait)}
.serie i.on{background:var(--pollen)}
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.badge{text-align:center;font-size:.8rem;color:var(--encre2)}
.badge svg{width:64px;height:64px;margin:0 auto 4px;display:block}
.badge.non svg{opacity:.28;filter:grayscale(1)}
.badge b{display:block;color:var(--encre);font-size:.86rem}
.coche{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--trait2)}
.coche input{width:24px;height:24px;flex:none;accent-color:var(--fanjan);margin-top:2px}

/* ---------- Carnet ---------- */
.obs-date{font-size:.8rem;color:var(--encre2);margin:16px 4px 6px}
.chiffres{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.chiffres div{background:var(--papier);border:1px solid var(--trait2);border-radius:var(--r2);padding:12px 8px;text-align:center}
.chiffres b{display:block;font-family:var(--t-titre);font-weight:400;font-size:1.6rem;line-height:1.1}
.chiffres span{font-size:.78rem;color:var(--encre2)}
.ligne-compte{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--trait2)}
.ligne-compte b{text-align:right;overflow-wrap:anywhere}

/* ---------- Toast ---------- */
#toast{position:fixed;left:50%;bottom:calc(var(--bas) + 18px);transform:translateX(-50%) translateY(20px);z-index:60;background:var(--encre);color:#fff;border-radius:999px;padding:12px 20px;font-size:.95rem;opacity:0;pointer-events:none;transition:.25s;max-width:calc(100% - 32px);text-align:center}
#toast.vu{opacity:1;transform:translateX(-50%)}

/* ---------- Porte kodpéi+ : la crosse de fanjan ---------- */
#porte{position:fixed;inset:0;z-index:80;background:radial-gradient(120% 70% at 50% 100%,#2C7A55 0%,#174C35 45%,#0F3324 100%);color:#F4F8F2;overflow:auto;display:flex;flex-direction:column;align-items:center;padding:max(18px,env(safe-area-inset-top)) 18px calc(20px + env(safe-area-inset-bottom))}
#porte[hidden]{display:none}
#porte::before{content:"";position:absolute;inset:0;background:var(--topo-clair) center/520px auto repeat;opacity:.22;pointer-events:none}
#porte>*{position:relative;max-width:460px;width:100%}
.pt-barre{display:flex;align-items:center;gap:10px;font-family:var(--t-titre);font-size:1.25rem}
.pt-barre svg{width:30px;height:30px}
.pt-scene{display:grid;place-items:center;margin:18px 0 8px}
.pt-scene svg{width:min(52vw,210px);height:auto}
.pt-scene .crosse{stroke-dasharray:640;stroke-dashoffset:640;animation:deroule-porte 2.2s .2s cubic-bezier(.5,0,.2,1) forwards}
.pt-scene .pinnule{opacity:0;animation:pinnule .5s forwards}
@keyframes deroule-porte{to{stroke-dashoffset:0}}
@keyframes pinnule{to{opacity:1}}
#porte.verif .pt-scene .crosse{animation:deroule 2.4s ease-in-out infinite}
#porte.ouvre{animation:porte-ouvre 1.2s cubic-bezier(.6,0,.3,1) forwards}
@keyframes porte-ouvre{0%{clip-path:circle(150% at 50% 40%)}100%{clip-path:circle(0% at 50% 40%)}}
.pt-carte{background:rgba(251,252,250,.97);color:var(--encre);border-radius:24px;padding:22px 20px;box-shadow:0 30px 60px -30px rgba(0,0,0,.6)}
.pt-carte h1{font-size:1.65rem;margin-bottom:8px}
.pt-carte .muted{margin-bottom:14px}
.pt-act{display:grid;gap:10px;margin-top:14px}
.pt-offre{display:flex;gap:12px;align-items:center;background:#EEF4EC;border-radius:16px;padding:12px 14px;font-size:.9rem}
.pt-offre .jeton{flex:none;border-radius:999px;background:var(--pollen);color:var(--encre);font-weight:800;padding:6px 10px;font-size:.85rem}
.pt-offre b{display:block}
.pt-note{font-size:.84rem;color:var(--encre2);margin-top:10px;text-align:center}
.pt-verif{display:flex;align-items:center;justify-content:center;gap:10px;min-height:60px;font-weight:600}
.pt-verif i{width:18px;height:18px;border-radius:50%;border:3px solid var(--trait);border-top-color:var(--fanjan);animation:tourne .8s linear infinite}
.pt-appareils{list-style:none;padding:0;margin:10px 0;display:grid;gap:6px}
.pt-appareils li{display:flex;justify-content:space-between;gap:10px;background:#EEF4EC;border-radius:12px;padding:10px 12px;font-size:.92rem}
.pt-pied{margin-top:16px;text-align:center;font-size:.85rem;color:rgba(244,248,242,.85);display:grid;gap:8px}
.pt-pied a{color:#F4F8F2}

/* Fenêtre de connexion */
#compte{position:fixed;inset:0;z-index:90;background:rgba(10,24,17,.6);display:flex;align-items:flex-end;justify-content:center}
#compte[hidden]{display:none}
.cp-boite{background:var(--fond2);width:100%;max-width:480px;border-radius:26px 26px 0 0;padding:18px 18px calc(22px + env(safe-area-inset-bottom));max-height:94vh;overflow:auto}
@media(min-width:700px){#compte{align-items:center}.cp-boite{border-radius:26px}}
.cp-haut{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
.cp-haut h1{font-size:1.5rem}
#cp-form{display:grid;gap:12px;margin-top:12px}
.cp-code{letter-spacing:.4em;font-size:1.3rem;text-align:center}
.cp-msg{font-size:.92rem;background:#E3EFE6;border-radius:12px;padding:10px 12px}
.cp-msg.err{background:#FBE9E3;color:#8A2A0F}
.cp-liens{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center;margin-top:12px}
.cp-lien{border:0;background:none;color:var(--fanjan);font-weight:600;cursor:pointer;padding:8px 0;text-decoration:underline}
.cp-note{font-size:.82rem;color:var(--encre2);margin-top:10px}

/* ---------- Impression (fiche de sortie) ---------- */
#impression{display:none}
@media print{
 body::before,#app,nav.onglets,.voile,#toast,#porte,#compte{display:none!important}
 body{background:#fff}
 #impression{display:block;font:11pt/1.45 var(--t-ui);color:#000;padding:0 6mm}
 #impression h1{font-size:20pt;margin-bottom:2mm}
 #impression h2{font-size:13pt;margin:5mm 0 2mm}
 #impression .ligne{display:grid;grid-template-columns:7mm 1fr 34mm;gap:3mm;padding:2mm 0;border-bottom:.3mm solid #999;break-inside:avoid}
 #impression .case{width:5mm;height:5mm;border:.4mm solid #000;border-radius:1mm}
 #impression .st{font-size:9pt;font-weight:700}
 #impression .pied{margin-top:6mm;font-size:9pt;color:#333}
}

@media (prefers-reduced-motion:reduce){
 *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
 .attente .crosse,.pt-scene .crosse{stroke-dashoffset:0}
}
@media(min-width:700px){
 .feuille{border-radius:26px;margin-bottom:24px}
 .voile{align-items:center}
}
