/* MyDUVAL — feuille de style. Couleurs et polices regroupées ici (:root) pour appliquer la charte graphique. */
:root{
  /* Charte graphique Duval : bleu #1961AC, gris #7F7E7E, terre cuite #C57E65 (extensions), vert #75A47F (assistance) ; police Avenir */
  --bleu:#1961ac;--bleu-f:#134a85;--bleu-clair:#e7eff8;--gris-logo:#7f7e7e;--terre:#c57e65;--vert:#75a47f;
  --accent:#1961ac;--accent-clair:#e7eff8;
  --fond:#f4f6f9;--carte:#fff;--txt:#25292e;--muted:#6e6d6d;--ligne:#e1e6ed;
  --ok:#3f7a4b;--ok-f:#e6f1e8;--att:#8a5a1f;--att-f:#f8eddc;--ko:#9c5038;--ko-f:#f6e7e1;
  --police:"Avenir Next","Avenir","Nunito Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--police-titres:var(--police);
  --r:14px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--police);background:var(--fond);color:var(--txt);font-size:15px;line-height:1.4;padding-bottom:env(safe-area-inset-bottom,0)}
h1,h2,h3{font-family:var(--police-titres)}
a{color:var(--accent);text-decoration:none;font-weight:600}
button{font:inherit;cursor:pointer;color:inherit}
img{max-width:100%}
[hidden]{display:none!important}
.muted{color:var(--muted)}.small{font-size:13px}
.apercu{background:#fdf1d6;color:#5d4300;padding:8px 16px;font-size:14px;text-align:center}
.annonce{background:var(--bleu-f);color:#fff;padding:8px 16px;font-size:14px;display:flex;gap:12px;align-items:center}
.annonce span{flex:1}.annonce button{background:none;border:0;color:#fff;font-size:18px}
header.top{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--ligne);display:flex;align-items:center;height:60px;padding-top:env(safe-area-inset-top,0)}
.ico{width:56px;height:60px;border:0;border-left:1px solid var(--ligne);background:#fff;display:grid;place-items:center;position:relative;font-size:19px;color:var(--txt);font-weight:400}
.ico.grille{border-left:0;border-right:1px solid var(--ligne)}
.ico.plus span{background:var(--accent);color:#fff;width:36px;height:36px;border-radius:8px;display:grid;place-items:center;font-size:22px}
.badge{position:absolute;top:12px;right:6px;background:var(--ko);color:#fff;font-size:11px;font-weight:700;border-radius:8px;padding:1px 5px}
.logo{padding:0 16px;line-height:1;color:var(--muted);font-weight:500}.logo img{height:30px;width:auto;display:block}
.logo small{display:block;margin-top:3px;font-size:9px;letter-spacing:.5px}
.marque{border-left:1px solid var(--ligne);padding:0 16px;font-size:18px;color:var(--gris-logo);font-weight:600;letter-spacing:.3px;font-family:var(--police-titres)}
.sp{flex:1}
.av{width:40px;height:40px;border-radius:50%;background:var(--bleu-clair);color:var(--bleu-f);font-size:14px;font-weight:700;display:inline-grid;place-items:center;object-fit:cover;flex:none}
.av.sm{width:34px;height:34px;font-size:12px}.av.lg{width:72px;height:72px;font-size:24px}
.hero{background:linear-gradient(120deg,#e7eff8 0%,#f4f6f9 55%,#eef4ef 100%);position:relative;overflow:hidden;padding:44px 24px 24px}
.hero::before{content:"";position:absolute;right:-70px;top:-90px;width:280px;height:280px;border-radius:50%;border:26px solid #1961ac14}
.hero::after{content:"";position:absolute;left:-60px;bottom:-120px;width:420px;height:160px;border-radius:50%;border-top:6px solid #7f7e7e33;transform:rotate(-8deg)}
.hero h1{margin:0;font-size:26px;position:relative;color:var(--bleu);font-weight:700}.hero p{margin:4px 0 0;color:var(--muted);position:relative}
main.wrap{max-width:1240px;margin:0 auto;padding:12px 16px 60px}
.grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}
.grid>*,.g2>*{min-width:0}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
h2{font-size:20px;font-weight:600;margin:18px 0 12px;color:var(--bleu-f)}
.carte{background:var(--carte);border:1px solid var(--ligne);border-radius:var(--r);padding:20px;margin-bottom:18px}
.carte h3{margin:0 0 12px;font-size:16px;font-weight:600}
.btn{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:8px;padding:10px 18px;font-weight:600}
.btn.clair{background:var(--accent-clair);color:var(--accent)}
.btn:disabled{opacity:.5}
.lien{display:block;text-align:center;margin-top:14px}.lien::before{content:"→  "}
.ligne{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--ligne);border-radius:10px;margin-bottom:8px;color:var(--txt);font-weight:400}
.ligne small{color:var(--muted);display:block}
.pill{font-size:12px;border-radius:20px;padding:3px 10px;font-weight:600;white-space:nowrap;background:#eef0f2;color:var(--muted)}
.p-ok{background:var(--ok-f);color:var(--ok)}.p-att{background:var(--att-f);color:var(--att)}.p-ko{background:var(--ko-f);color:var(--ko)}.p-bleu{background:var(--bleu-clair);color:var(--bleu-f)}
.personne{display:flex;align-items:center;gap:10px;padding:6px 0}.personne small{color:var(--muted);display:block}
.membres{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.doc{display:flex;align-items:center;gap:12px;border:1px solid var(--ligne);border-radius:10px;padding:12px;margin-bottom:10px;color:var(--txt);font-weight:400}
.doc .f{width:34px;height:40px;border:2px solid #9aa3ad;border-radius:4px;display:grid;place-items:center;font-size:9px;font-weight:700;color:#7d8791;flex:none;text-transform:uppercase}
.doc>div{flex:1;min-width:0}.doc b{font-weight:600;display:block;overflow-wrap:anywhere}.doc small{color:var(--muted);display:block}
.humeur{display:flex;align-items:center;justify-content:space-between;gap:10px}
.smileys{display:flex;gap:10px}.smileys button{width:46px;height:46px;border-radius:50%;border:0;font-size:24px}
.s1{background:#f4b4b1}.s2{background:#f8d98a}.s3{background:#a8e0b5}
.vide{color:var(--muted);padding:6px 0}
.note{font-size:12px;color:var(--muted);background:var(--fond);padding:8px 10px;border-radius:8px;margin-top:10px}
.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:14px}
.chips a{border:1px solid var(--ligne);background:#fff;border-radius:20px;padding:6px 12px;font-size:13px;white-space:nowrap;color:var(--txt);font-weight:500}
.chips a.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.recherche{width:100%;border:1px solid var(--ligne);border-radius:10px;padding:11px 12px;font:inherit;background:#fff;margin-bottom:12px}
.annu{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--ligne)}
.annu:last-child{border-bottom:0}.annu>div{flex:1;min-width:0}.annu small{display:block;color:var(--muted)}
.annu .act{display:flex;gap:6px;flex:none}.annu .act a{width:40px;height:40px;border-radius:50%;background:var(--accent-clair);display:grid;place-items:center;font-size:17px}
.form{display:grid;gap:8px;max-width:440px}
.form label{font-weight:600;font-size:14px;margin-top:6px}
.form input[type=text],.form input[type=password]{border:1px solid var(--ligne);border-radius:8px;padding:11px 12px;font:inherit;background:#fff}
.chk{display:flex;gap:10px;align-items:flex-start;font-weight:400!important;margin:8px 0}
.chk input{width:20px;height:20px;margin-top:1px;flex:none}
.alert{background:var(--ko-f);color:var(--ko);padding:10px 12px;border-radius:8px}
.okmsg{background:var(--ok-f);color:var(--ok);padding:10px 12px;border-radius:8px}
/* volets */
.voile{position:fixed;inset:0;background:#0004;z-index:30;display:none}
.volet{position:fixed;top:0;bottom:0;background:#fff;z-index:40;width:min(420px,100%);padding:20px;overflow:auto;transition:transform .2s;visibility:hidden}
.volet.g{left:0;transform:translateX(-105%)}.volet.d{right:0;transform:translateX(105%)}
.ouvert .voile{display:block}.volet.on{transform:none;visibility:visible}
.volet h3{display:flex;justify-content:space-between;margin:0 0 16px;font-size:20px}
.volet h3 button{background:none;border:0;font-size:22px}
.tuiles{display:grid;grid-template-columns:repeat(3,1fr);gap:18px 10px;text-align:center}
.tuile{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--txt)}
.tuile span{width:58px;height:58px;border-radius:16px;background:var(--bleu-clair);display:grid;place-items:center;font-size:26px}
.tuile.soon span{background:#eceae5;filter:grayscale(.6)}
.tuile em{font-style:normal;font-weight:500;text-transform:none;color:var(--muted);font-size:10px}
.liste a{display:flex;gap:12px;align-items:center;padding:14px 4px;border-bottom:1px solid var(--ligne);color:var(--txt);font-weight:500}
.liste .ic{width:40px;height:40px;border-radius:10px;background:var(--bleu-clair);display:grid;place-items:center;font-size:19px;flex:none}
.liste small{display:block;color:var(--muted);font-weight:400}
/* connexion */
.login{min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.login .carte{width:min(420px,100%)}.login img{height:46px;margin-bottom:10px}
@media (max-width:900px){
  .grid,.g2{grid-template-columns:1fr;gap:0}
  .marque{display:none}.ico{width:46px}.logo{padding:0 10px}.logo img{height:26px}.logo small{display:none}
  .hero{padding:28px 16px 18px}.hero h1{font-size:21px}
}
/* temps de l'équipe */
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.kpi{background:var(--fond);border-radius:10px;padding:10px 12px;min-width:0}
.kpi small{display:block;color:var(--muted);font-size:12px}.kpi b{display:block;font-size:21px;color:var(--bleu-f);margin:2px 0}
.pos{color:var(--ok)!important}.neg{color:var(--ko)!important}
.tps{overflow-x:auto;margin:0 -4px}
.tps table{width:100%;border-collapse:collapse;font-size:14px}
.tps th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;padding:6px 4px;border-bottom:2px solid var(--ligne)}
.tps td{padding:8px 4px;border-bottom:1px solid var(--ligne);vertical-align:top}
.tps .n{text-align:right;white-space:nowrap}.tps .j{white-space:nowrap;font-weight:600}
.tps tfoot td{border-bottom:0;padding-top:10px}
@media (max-width:520px){.kpis{grid-template-columns:1fr 1fr}.kpis.k3 .kpi:last-child{display:none}.kpi b{font-size:18px}.tps table{font-size:13px}}
/* formulaires (congés) */
.form .sel{width:100%;border:1px solid var(--ligne);border-radius:8px;padding:11px 12px;font:inherit;background:#fff;color:var(--txt);min-height:46px}
.form input[type=file].sel{padding:9px}

/* ===== Accueil dynamique (07/11/2026) ===== */
.logo img{height:40px}
@media (max-width:900px){.logo img{height:32px}}
/* bandeau d'annonce défilant, bien visible */
.annonce{background:linear-gradient(90deg,#b4573b,var(--terre));color:#fff;padding:0;gap:0;min-height:46px;font-size:16px;font-weight:700;box-shadow:0 2px 8px #9c503840;position:relative;z-index:21}
.annonce .an-tag{flex:none;background:#8f3f27;padding:0 14px;align-self:stretch;display:flex;align-items:center;gap:6px;text-transform:uppercase;letter-spacing:.06em;font-size:13px;animation:clign 1.6s ease-in-out infinite}
.an-defil{flex:1;overflow:hidden;white-space:nowrap;mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.an-piste{display:inline-flex;animation:defile 20s linear infinite;padding-left:100%}
.an-piste span{padding-right:40px;white-space:nowrap}
.annonce:hover .an-piste{animation-play-state:paused}
.annonce button{flex:none;width:44px;align-self:stretch;font-size:20px}
@keyframes defile{from{transform:translateX(0)}to{transform:translateX(-100%)}}
@keyframes clign{50%{background:#a24a30}}
/* bandeau d'accueil */
.hero{background:linear-gradient(125deg,var(--bleu-f) 0%,var(--bleu) 55%,#3d82c9 100%);background-size:200% 200%;animation:degrade 14s ease-in-out infinite alternate;color:#fff;padding:30px 24px 46px}
.hero::before{border-color:#ffffff14;animation:flotte 9s ease-in-out infinite alternate}
.hero::after{display:none}
.hero-in{max-width:1240px;margin:0 auto;position:relative;z-index:1}
.hero h1{color:#fff;font-size:30px}.hero .hero-date{margin:0 0 4px;color:#ffffffc0;font-size:14px}
.wave{display:inline-block;transform-origin:70% 70%;animation:salut 2.4s ease-in-out 1}
.chips-hero{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.hc{display:inline-flex;align-items:center;gap:6px;background:#ffffff1f;border:1px solid #ffffff33;color:#fff;border-radius:22px;padding:7px 13px;font-weight:500;font-size:14px;backdrop-filter:blur(4px);transition:background .2s,transform .2s;max-width:100%}
.hc span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hc b{font-weight:700}
.hc:hover{background:#ffffff33;transform:translateY(-2px)}
.hero-toit{position:absolute;left:0;right:0;bottom:-1px;width:100%;height:46px;fill:var(--fond)}
.hero-toit path{fill:var(--fond)}
@keyframes degrade{from{background-position:0% 50%}to{background-position:100% 50%}}
@keyframes flotte{from{transform:translate(0,0) rotate(0)}to{transform:translate(-30px,20px) rotate(12deg)}}
@keyframes salut{0%,60%,100%{transform:rotate(0)}10%,30%{transform:rotate(16deg)}20%,40%{transform:rotate(-8deg)}}
/* cartes : liseré de couleur, titre avec pastille, survol, apparition */
.carte{position:relative;overflow:hidden;transition:transform .25s,box-shadow .25s}
.carte::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--lis,transparent)}
.c-bleu{--lis:var(--bleu)}.c-vert{--lis:var(--vert)}.c-terre{--lis:var(--terre)}.c-gris{--lis:var(--gris-logo)}
@media (hover:hover){.carte:hover{transform:translateY(-3px);box-shadow:0 10px 24px #1961ac1a}}
.carte h3{display:flex;align-items:center;gap:10px}
.ic-t{width:32px;height:32px;border-radius:10px;display:inline-grid;place-items:center;font-size:17px;background:color-mix(in srgb,var(--lis,var(--bleu)) 16%,#fff);flex:none}
.js .anim{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}
.js .anim.vu{opacity:1;transform:none}
.sep{height:1px;background:var(--ligne);margin:14px 0}
.chantier{margin-bottom:10px}.chantier>b{font-size:18px;color:var(--bleu-f)}
.personne.fete{background:linear-gradient(90deg,#fdf1d6,transparent);border-radius:10px;padding:6px 8px;margin:0 -8px}
.btn-plein{display:block;text-align:center;margin-top:12px;background:var(--vert);transition:transform .15s,filter .15s}
.btn-plein:hover{filter:brightness(1.07);transform:translateY(-1px)}
.btn{transition:transform .15s,filter .15s}.btn:active{transform:scale(.97)}
.pulse{animation:pulse 2s ease-in-out infinite}
@keyframes pulse{50%{box-shadow:0 0 0 5px #c57e6526}}
.ligne{transition:border-color .2s,background .2s}.ligne:hover{border-color:var(--bleu);background:var(--bleu-clair)}
.doc{transition:border-color .2s,transform .2s}.doc:hover{border-color:var(--bleu);transform:translateX(3px)}
aside>h2:first-child{margin-top:18px}
@media (max-width:900px){.hero{padding:22px 16px 40px}.hero h1{font-size:24px}.hc{font-size:13px;padding:6px 11px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}
  .an-defil{white-space:normal;mask-image:none;-webkit-mask-image:none}.an-piste{padding:8px 0}}
/* téléphone : une seule colonne, collègues remontés juste après les documents à lire, congés avant les documents */
@media (max-width:900px){.grid{display:flex;flex-direction:column}.grid>section,.grid>aside{display:contents}
  .o1{order:1}.o2{order:2}.o3{order:3}.o4{order:4}.o5{order:5}.o6{order:6}.o7{order:7}.o8{order:8}.o9{order:9}.o10{order:10}}

/* ===== Pavés colorés (07/11/2026) : bandeau de titre plein aux couleurs de la charte, fond teinté ===== */
.c-bleuf{--lis:var(--bleu-f)}
.carte[class*="c-"]{border:0;background:color-mix(in srgb,var(--lis) 7%,#fff);box-shadow:0 2px 10px color-mix(in srgb,var(--lis) 18%,transparent)}
.carte[class*="c-"]:has(>h3:first-child){padding-top:0}
.carte[class*="c-"]::before{display:none}
.carte[class*="c-"]>h3,.carte[class*="c-"]>.sep+h3{margin:0 -20px 14px;padding:13px 20px;background:linear-gradient(110deg,color-mix(in srgb,var(--lis) 82%,#000),var(--lis));color:#fff;font-size:16px;text-shadow:0 1px 1px #0003}
.carte[class*="c-"]>.sep+h3{margin-top:0}
.carte[class*="c-"]>.sep{margin:16px -20px 0;height:0}
.carte[class*="c-"] .ic-t{background:#ffffff2e;color:#fff}
.carte[class*="c-"] .kpi{background:#fff;border:1px solid color-mix(in srgb,var(--lis) 22%,#fff)}
.carte[class*="c-"] .kpi b{color:color-mix(in srgb,var(--lis) 80%,#000)}
.carte[class*="c-"] .ligne,.carte[class*="c-"] .doc{background:#fff;border-color:color-mix(in srgb,var(--lis) 20%,#fff)}
.carte[class*="c-"] .lien{color:color-mix(in srgb,var(--lis) 85%,#000)}
.carte[class*="c-"] .tps table{background:#fff;border-radius:8px}
.carte[class*="c-"] .liste a{border-color:color-mix(in srgb,var(--lis) 18%,#fff)}
.carte[class*="c-"] .liste .ic{background:#fff}
.carte.c-vert .btn-plein{background:color-mix(in srgb,var(--vert) 85%,#000)}
@media (hover:hover){.carte[class*="c-"]:hover{box-shadow:0 12px 26px color-mix(in srgb,var(--lis) 28%,transparent)}}
/* coffre-fort bulletins de paie */
.coffre .btn-coffre{display:block;text-align:center;background:var(--bleu-f);padding:12px}
.coffre .stores{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}
.coffre .stores a{background:#1c2227;color:#fff;border-radius:8px;padding:6px 12px;font-size:13px}
