/* LudoProd — couche mobile « version test » (≤ 767 px). Chargée seulement sur téléphone ;
   désactivable dans Paramètres → Affichage → Version mobile. Objectif : dense, net, premium, une page. */

/* ---------- 1. Performances : pas de flou, pas d'animations décoratives, listes rendues à la demande ---------- */
*{-webkit-tap-highlight-color:transparent}
.ambient,.confetti{display:none!important}
.card,.kpi,.itile,.mt,.kcol,.kcard,.nshoot,.top,.tabbar,.subtabs a,.xpanel{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
[data-reorder]>.mt,[data-reorder]>.card,.card,.kpi,.itile{animation:none!important}
.card,.kpi,.itile,.kcard{box-shadow:none!important}
main table.rc tbody tr,.goal,.m-act,.kcard,.proslist tr,.mailtable tr{content-visibility:auto;contain-intrinsic-size:auto 64px}
html{scroll-behavior:auto}

/* ---------- 2. Coque : barre du haut fine, plus de défilement fantôme ---------- */
body{padding-bottom:calc(62px + env(safe-area-inset-bottom))!important}
.shell{min-height:calc(100dvh - 62px - env(safe-area-inset-bottom))!important}
.top{height:50px!important;padding:0 12px!important;gap:8px!important;background:var(--bg)!important;border-bottom:1px solid var(--line)}
.top h1{font-size:1.08rem!important;letter-spacing:.01em}
.top #custbtn{display:none!important}
.top .actions{gap:4px!important}
.top .vbtn,.top .gear,.top .backbtn{width:32px!important;height:32px!important;border-radius:10px!important}
main{padding:10px 12px 12px!important}
.tabbar{background:var(--bg)!important;padding:2px 4px calc(2px + env(safe-area-inset-bottom))!important;border-top:1px solid var(--line)!important}
.tabbar a,.tabbar button{padding:6px 0 5px!important;font-size:.64rem!important;gap:2px!important}
.tabbar .ic{width:21px;height:21px}
.fab{width:46px!important;height:46px!important;border-radius:15px!important;right:12px!important;bottom:calc(72px + env(safe-area-inset-bottom))!important;box-shadow:0 8px 20px -8px rgba(0,0,0,.7)!important}
.fab svg{width:22px;height:22px}

/* ---------- 3. Onglets de rubrique : un seul contrôle segmenté, identique partout ---------- */
main>.hubtabs{display:flex!important;flex-wrap:nowrap!important;gap:2px!important;padding:3px!important;margin:0 0 10px!important;border:1px solid var(--line)!important;border-radius:13px!important;background:rgba(127,127,127,.07)!important;overflow-x:auto;scrollbar-width:none;position:relative!important;top:auto!important;transform:none!important;box-shadow:none!important}
main>.hubtabs::-webkit-scrollbar{display:none}
main>.hubtabs a{flex:1 1 auto!important;min-width:0;height:32px!important;min-height:0!important;padding:0 10px!important;border:0!important;border-radius:10px!important;background:none!important;box-shadow:none!important;font-size:.78rem!important;font-weight:600!important;justify-content:center!important;gap:5px!important;white-space:nowrap!important;color:var(--mut)!important;position:relative!important}
main>.hubtabs a>.ic{display:none!important}
main>.hubtabs a.on{background:var(--gold)!important;color:var(--accent-ink)!important}
main>.hubtabs .tabbadge{position:static!important;transform:none!important;margin:0!important;min-width:16px;height:16px;font-size:.62rem;line-height:16px;padding:0 4px}

/* ---------- 4. Cartes, titres, formulaires ---------- */
main .card{padding:12px!important;border-radius:14px!important;margin-bottom:10px}
main .card>h2,main section>h2{font-size:.95rem!important;margin:0 0 8px!important;line-height:1.25}
main h3{font-size:.86rem}
main input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),main select,main textarea{font-size:16px!important;border-radius:10px}
main input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),main select{height:38px;min-height:0}
main label{font-size:.68rem;letter-spacing:.06em}
main .btn{min-height:36px;border-radius:10px}
main .btn.small{min-height:30px}
.m2clamp{display:-webkit-box!important;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:.8rem!important;line-height:1.4!important;cursor:pointer;position:relative}
.m2clamp.open{-webkit-line-clamp:unset;display:block!important}
.m2clamp:not(.open)::after{content:"lire la suite";position:absolute;right:0;bottom:0;padding-left:28px;background:linear-gradient(90deg,transparent,var(--card) 26px);color:var(--accent2);font-size:.74rem}
.card:has(>.m2clamp:only-child){padding:8px 12px!important}
main select{line-height:1.2!important;padding-top:0!important;padding-bottom:0!important}
/* onglets à icône seule : Alertes (Accueil), Relances (Ventes) */
main>.hubtabs[aria-label="Accueil"] a:nth-child(n+3)>.ic,main>.hubtabs[aria-label="Ventes"] a:nth-child(4)>.ic{display:inline-block!important;width:17px;height:17px}
main>.hubtabs[aria-label="Accueil"] a:nth-child(n+3),main>.hubtabs[aria-label="Ventes"] a:nth-child(4){flex:0 0 auto!important;padding:0 9px!important}

/* ---------- 5. Formulaires en 2 colonnes (moitié moins hauts) ---------- */
main form.formgrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:8px 10px!important}
main form.formgrid>label{display:grid;gap:3px;min-width:0}
main form.formgrid>.full{grid-column:1/-1}

/* ---------- 6. Listes : lignes de tableau transformées en cartes fines ---------- */
main table.rc tbody tr{padding:8px 10px!important;margin:0 0 6px!important;border-radius:12px!important}
main table.rc td{padding:1px 0!important;font-size:.8rem}
main table.rc td::before{font-size:.6rem!important;letter-spacing:.06em}
/* contrats : même présentation que devis / factures */
main table.ctrlist{display:block}
.ctrlist thead{display:none}.ctrlist tbody{display:grid;gap:6px}
.ctrlist tr{display:grid!important;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n s" "c d" "t t";gap:2px 10px;padding:9px 11px!important;margin:0!important;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.ctrlist td{display:block!important;padding:0!important;border:0!important;text-align:left!important;font-size:.8rem;min-width:0}
.ctrlist td::before{display:none!important}
.ctrlist td:nth-child(1){grid-area:n;font-weight:700;font-size:.9rem}
.ctrlist td:nth-child(2){grid-area:c;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctrlist td:nth-child(3){grid-area:t;color:var(--mut);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ctrlist td:nth-child(3) br{display:none}.ctrlist td:nth-child(3) .muted::before{content:" · "}
.ctrlist td:nth-child(4){grid-area:d;justify-self:end;color:var(--mut);font-size:.76rem}
.ctrlist td:nth-child(5){grid-area:s;justify-self:end}

/* ---------- 7. Clients ---------- */
body:has(.cf-hero) .cf-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important}
.cf-kpi{display:block!important;padding:8px 10px!important;border-radius:12px!important;min-width:0;overflow:hidden}
.cf-kpi>span{display:block;font-size:.6rem!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cf-kpi>b{display:block;font-size:1.1rem!important;line-height:1.2}
.cf-kpi>small{display:block;font-size:.68rem!important;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
main form.filters{padding:8px!important;gap:6px!important;margin-bottom:8px!important}

/* ---------- 8. Kanban ---------- */
.kanban.kfit .kcol h2{font-size:.7rem!important;margin:0!important}
.kanban.kfit .kcol.open h2{font-size:.68rem!important;margin:0 2px 6px!important}

/* ---------- 9. Accueil : tout l'essentiel sur le premier écran ---------- */
.mhome{gap:8px!important;margin:0 0 8px!important}
.m-quick{gap:6px!important}
.m-quick a{flex-direction:row!important;min-height:34px!important;padding:0 6px!important;border-radius:10px!important;font-size:.76rem!important;font-weight:600;gap:5px!important}
.nshoot{border-radius:14px!important}
.nshoot .ns-head{padding:9px 12px 8px!important;gap:5px!important}
.nshoot .ns-k{font-size:.6rem!important}
.nshoot .ns-cd{font-size:1.15rem!important;padding:3px 10px!important}
.nshoot .ns-place{font-size:.76rem!important}
[data-reorder=home2]{gap:8px!important}
[data-reorder=home2]>.mt{min-height:0!important;padding:9px 11px!important;border-radius:14px!important}
[data-reorder=home2]>.mt>span{font-size:.6rem!important}
[data-reorder=home2]>.mt>b{font-size:1.2rem!important;line-height:1.2}
[data-reorder=home2]>.mt>small{font-size:.68rem!important}
.m-acts{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:5px!important;margin:2px 0 0!important}
.m-acts>h2{grid-column:1;grid-row:1;font-size:.72rem!important;text-transform:uppercase;letter-spacing:.08em;color:var(--mut);margin:0!important;align-self:center}
.m-acts>.m-more{grid-column:2;grid-row:1;font-size:.74rem;margin:0;padding:0;align-self:center}
.m-acts>.m-act,.m-acts>.m-ok{grid-column:1/-1}
.m-act{min-height:44px!important;padding:6px 10px!important;gap:9px!important;border-radius:12px!important;border-left-width:3px!important}
.m-act>i{font-size:1rem!important;width:20px!important}
.m-act b{font-size:.82rem!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.m-act small{font-size:.7rem!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-act em{font-size:1rem!important}
/* listes « Prochains projets » / « Planning » : une ligne par élément, 3 éléments */
section.agenda{gap:8px!important;margin-top:0!important}
section.agenda .card{padding:9px 11px!important;margin:0!important}
section.agenda .card>h2{font-size:.72rem!important;text-transform:uppercase;letter-spacing:.08em;color:var(--mut);margin:0 0 3px!important}
section.agenda .row{display:flex;align-items:center;gap:8px;padding:6px 0!important;min-height:0!important}
section.agenda .row>span{flex:1;min-width:0;font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
section.agenda .row>span br{display:none}
section.agenda .row>span .muted{font-weight:400;font-size:.72rem;margin-left:6px}
section.agenda .row>.tag{flex:none;font-size:.66rem!important;padding:2px 7px!important}
section.agenda .row:nth-of-type(n+4){display:none}
/* la météo détaillée reste dans le bouton ☀ des onglets et dans « Prochain tournage » */
body:has(#mhome) #meteocard{display:none!important}

/* ---------- 10. Chiffres clés : 4 tuiles compactes sur une ligne, partout ---------- */
main .insights{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:5px!important;margin:0 0 8px!important;padding:0!important;overflow:visible!important}
main .insights .itile{min-width:0!important;width:auto!important;flex:none!important;min-height:0!important;padding:6px 7px!important;border-radius:11px!important}
main .insights .itile:nth-child(n+5),main .insights .ichart,main .insights .ispw,main .insights .is{display:none!important}
main .insights .il{font-size:.5rem!important;letter-spacing:.02em!important;line-height:1.15!important;white-space:normal!important;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;min-height:1.15em}
main .insights .iv{font-size:.98rem!important;line-height:1.2!important;white-space:nowrap}

/* ---------- 11. Clients : recherche + filtres serrés, fiches sur 2 lignes ---------- */
body:has(.clients-t) form.filters{display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px!important;padding:0!important;border:0!important;background:none!important}
body:has(.clients-t) form.filters>input[type=search]{grid-column:1/-1}
body:has(.clients-t) form.filters>select{grid-column:span 2;min-width:0;padding-left:8px!important;font-size:14px!important}
body:has(.clients-t) form.filters>select[name=palier]{display:none}
body:has(.clients-t) form.filters>select[name=tri]{grid-column:span 3}
body:has(.clients-t) form.filters>a.btn{grid-column:span 3;height:38px;min-height:0}
body:has(.clients-t) form.filters>button[type=submit]{display:none}
.clients-t tbody tr{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:1px 8px;padding:8px 11px!important}
.clients-t td{display:block!important;padding:0!important;border:0!important;text-align:left!important;min-width:0}
.clients-t td::before{display:none!important}
.clients-t td:nth-child(1){grid-column:1;grid-row:1;font-size:.9rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clients-t td:nth-child(4){grid-column:2;grid-row:1;justify-self:end}
.clients-t td:nth-child(3){grid-column:1;grid-row:2;font-size:.74rem;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clients-t td:nth-child(3) br{display:none}
.clients-t td:nth-child(2){grid-column:2;grid-row:2;justify-self:end;font-size:.74rem}
.clients-t td:nth-child(n+5){display:none!important}
.clients-t td.num:has(b){display:none!important}
main .goalslist .goaltitle,main #tasklist .goaltitle{font-size:.82rem!important;height:26px!important}

/* ---------- 12. Kanban : bandes verticales colorées, colonne ouverte complète ---------- */
.kanban.kfit .kcol{border-radius:12px!important;border:1px solid var(--line)!important;background:rgba(127,127,127,.05)!important;border-top:3px solid var(--kc,var(--line))!important;transition:none!important}
.kanban.kfit .kcol:nth-child(1){--kc:#8a93a6}.kanban.kfit .kcol:nth-child(2){--kc:#5b8def}.kanban.kfit .kcol:nth-child(3){--kc:#c9a14a}
.kanban.kfit .kcol:nth-child(4){--kc:#a07be0}.kanban.kfit .kcol:nth-child(5){--kc:#3fb97a}.kanban.kfit .kcol:nth-child(6){--kc:#5a6272}
.kanban.kfit .kcol:not(.open) h2{color:var(--mut);letter-spacing:.12em}
.kanban.kfit .kcol:not(.open) h2 .count{background:var(--kc);color:#0b0d12;font-weight:800;border-radius:8px;min-width:22px;height:22px;line-height:22px;text-align:center;padding:0 4px}
.kanban.kfit .kcol:not(.open):not(:has(.kcard)) h2 .count{background:none;color:var(--mut);border:1px solid var(--line)}
.kanban.kfit .kcol:not(.open) h2 .ksum{display:inline!important;font-size:.6rem;letter-spacing:0;color:var(--mut);font-weight:500;margin-right:auto}
.kanban.kfit .kcol.open{background:rgba(127,127,127,.03)!important}
.kanban.kfit .kcol.open h2{color:var(--ink);letter-spacing:.08em}
.kanban.kfit .kcol.open h2 .ksum{display:inline!important;font-size:.66rem;color:var(--mut);font-weight:500}
.kanban.kfit .kcol.open h2 .count{background:var(--kc);color:#0b0d12;border-radius:8px;font-weight:800}
.kanban.kfit .kcol.open .kdrop{gap:6px}
.kanban.kfit .kcol.open .kcard{padding:8px 9px!important;border-radius:11px!important;gap:3px!important;border:1px solid var(--line)}
.kanban.kfit .kcol.open .kcard .kb{display:none!important}
.kanban.kfit .kcol.open .kcard .kdate,.kanban.kfit .kcol.open .kcard .cd{display:inline-block!important;font-size:.62rem}
.kanban.kfit .kcol.open .kcard .kclient{display:block!important;font-size:.7rem;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kanban.kfit .kcol.open .kcard .ktitle{font-size:.82rem!important;font-weight:700;line-height:1.2}
.kanban.kfit .kcol.open .kcard .kfoot{display:flex;align-items:center;justify-content:space-between!important;margin-top:2px}
.kanban.kfit .kcol.open .kcard .karrows{display:inline-flex!important;gap:4px}
.kanban.kfit .kcol.open .kcard .karrows .btn{width:28px;height:26px;min-height:0;padding:0;border-radius:8px;font-size:.95rem;line-height:1}
.kanban.kfit .kcol.open .kempty{font-size:.74rem;color:var(--mut);text-align:center;padding:14px 4px}
body:has(#kanban) main>.reorder{gap:6px!important}

/* ---------- 13. Planning (mois) : tout le pilotage du mois sur une seule ligne ---------- */
.plancal .calnav:not(.agnav){grid-template-columns:30px minmax(0,1fr) 30px 30px auto!important;gap:4px!important;margin:0 0 4px!important}
.plancal .calnav:not(.agnav)>*{grid-row:1!important;grid-column:auto!important}
.plancal .calnav:not(.agnav) .datepick{display:flex;gap:4px;min-width:0}
.plancal .calnav:not(.agnav) .datepick select{flex:1;min-width:0;height:32px;font-weight:700}
.plancal .calnav:not(.agnav) .datepick input{flex:0 0 66px;width:66px;height:32px;padding:0 4px!important;text-align:center;font-weight:700}
.plancal .calnav:not(.agnav) .btn{width:30px;height:32px;min-height:0;padding:0!important}
.plancal .calnav:not(.agnav) .btn .lbl{display:none}
.plancal .calnav:not(.agnav) .evjump{display:inline-flex;gap:4px}
.plancal .calnav:not(.agnav) .evjump #evprev{display:none}

/* ---------- 14. Finances / pilotage, réseaux, logiciels ---------- */
.pil-filters .pil-row{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px!important}
.pil-filters label{font-size:.58rem!important;min-width:0}
.pil-filters select,.pil-filters input{font-size:14px!important;padding-left:8px!important;height:34px!important}
.pil-filters>p,.pil-filters .muted{display:none}
.rskpis{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:5px!important;margin:8px 0!important}
.rskpis>*{padding:7px 8px!important;min-width:0;border-radius:11px}
.rskpis b{font-size:1rem!important;display:block}
.rskpis span{font-size:.56rem!important;letter-spacing:.02em!important;line-height:1.2;word-break:normal;overflow-wrap:normal;display:block}
.kanban.kfit{gap:3px!important}
.kanban.kfit .kcol:not(.open){flex:0 0 31px!important;width:31px!important}
.kanban.kfit .kcol:not(.open) h2 .ksum{order:-1;margin-inline-end:auto!important;margin-right:0}
.kanban.kfit .kcol.open h2{flex-wrap:wrap;row-gap:1px}
.kanban.kfit .kcol.open h2 .kname{flex:1 1 auto!important}
.kanban.kfit .kcol.open h2 .ksum{flex:1 1 100%;order:3;letter-spacing:0;text-transform:none}
.kanban.kfit .kcol.open .kcard .kfoot{flex-wrap:wrap;row-gap:4px}
.kanban.kfit .kcol.open .kcard .karrows{margin-left:auto}

/* ---------- 15. Onglets longs : défilent au lieu de se chevaucher ; mailing / prospection épurés ---------- */
main>.hubtabs a,main>.hubtabs>*{flex:1 0 auto!important}
main>.hubtabs>.findbar,main>.hubtabs>form,main>.hubtabs>details{flex:0 0 auto!important;margin:0!important}
main>.hubtabs .btn{height:32px!important;min-height:0!important;font-size:.76rem!important;padding:0 10px!important;border-radius:10px!important}
body:has(.mailtable) details.xmenu:not(.todomenu),body:has(#sequence) main details.xmenu:not(.todomenu){display:none!important}
#sequence .btnrow{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
#sequence .btn{white-space:nowrap!important;height:32px!important}
#sequence details>summary{font-size:.78rem}
body:has(.mailtable) nav.subtabs:not(.hubtabs),body:has(#sequence) nav.subtabs:not(.hubtabs),main .chips{gap:4px!important;margin:0 0 6px!important}
main nav.subtabs:not(.hubtabs) a,main .chips a,main .chips button{padding:5px 11px!important;font-size:.76rem!important;min-height:0!important;height:30px;display:inline-flex;align-items:center}

/* ---------- 16. Aujourd'hui, Paramètres, divers ---------- */
.todolist{display:grid;gap:0}
.todolist li{padding:7px 0!important;gap:9px!important;align-items:center!important;min-height:0!important}
.todolist li .ti{width:28px!important;height:28px!important;font-size:.9rem!important;flex:none}
.todolist li>div{min-width:0;flex:1}
.todolist li b{display:block;font-size:.84rem!important;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.todolist li small{display:block;font-size:.72rem!important;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.todolist li .btn{flex:none;height:28px;min-height:0!important;padding:0 10px!important;font-size:.74rem!important}
details.card.sect{padding:0!important;margin-bottom:6px!important}
details.card.sect>summary{padding:11px 12px!important;min-height:0!important;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px}
details.card.sect>summary b{font-size:.9rem}
details.card.sect>summary .muted{font-size:.74rem}
details.card.sect[open]{padding:0 12px 12px!important}
details.card.sect[open]>summary{padding:11px 0!important}
.proslist td:nth-child(7) select{font-size:13px!important;width:118px!important;max-width:118px!important;height:30px!important}
.terr-intro{font-size:.8rem}
main .card.muted,main p.card{padding:10px 12px!important;font-size:.84rem}
.mfold>summary{padding:9px!important;font-size:.8rem}
html.planfit-m .planfit{height:calc(var(--pfh,auto) - 8px)!important}
main .goalslist .goaltitle:not(#_),main #tasklist .goaltitle:not(#_){font-size:.82rem!important;height:26px!important}

/* ---------- 17. Finances : une page, Pilotage et Statistiques repliés (un appui sur le titre les ouvre) ---------- */
.finh{cursor:pointer;display:flex;align-items:baseline;gap:6px;padding:12px;border:1px solid var(--line)!important;border-radius:14px;background:var(--card);margin:10px 0 0!important}
.finh .muted{font-size:.72rem;flex:1}
.finh::after{content:"▸";color:var(--accent2)}
body.fo-pil #pilotage::after,body.fo-stat #statistiques::after{content:"▾"}
body:not(.fo-pil) #pilotage~*:not(.finh):not(#statistiques~*){display:none!important}
body:not(.fo-stat) #statistiques~*{display:none!important}
