/*
 * Les Cocottes Manager — Design system v2.0.0
 * Scope volontairement limité à l’application publique du plugin.
 */
:root {
  --lcm-ink: #20251f;
  --lcm-ink-soft: #62685f;
  --lcm-forest: #0f3b2e;
  --lcm-forest-strong: #092a21;
  --lcm-forest-soft: #e3ece6;
  --lcm-gold: #d4aa3b;
  --lcm-gold-soft: #f7ecd3;
  --lcm-cream: #f7f3e8;
  --lcm-paper: #fffefa;
  --lcm-line: #e5e0d5;
  --lcm-danger: #a33e3e;
  --lcm-danger-soft: #fae9e7;
  --lcm-warning: #865d14;
  --lcm-warning-soft: #fff4d9;
  --lcm-success: #276749;
  --lcm-success-soft: #e8f4ec;
  --lcm-info: #315f78;
  --lcm-info-soft: #e9f2f7;
  --lcm-radius-sm: 10px;
  --lcm-radius: 16px;
  --lcm-radius-lg: 24px;
  --lcm-shadow-sm: 0 1px 2px rgba(25, 37, 29, .04), 0 5px 16px rgba(25, 37, 29, .05);
  --lcm-shadow: 0 16px 46px rgba(25, 37, 29, .09);
  --lcm-ring: 0 0 0 3px rgba(212, 170, 59, .28);
  --lcm-sidebar: 250px;
  --lcm-topbar: 72px;
  --lcm-space-1: 4px;
  --lcm-space-2: 8px;
  --lcm-space-3: 12px;
  --lcm-space-4: 16px;
  --lcm-space-5: 20px;
  --lcm-space-6: 24px;
  --lcm-space-8: 32px;
  --lcm-space-10: 40px;
  --lcm-font: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --lcm-display: Georgia, "Times New Roman", serif;
}

/* Ponte v2.1.0 */
.lcm-laying-tabs{display:flex;gap:8px;overflow:auto;padding:4px 0 18px;margin-bottom:6px;scrollbar-width:thin}.lcm-laying-tabs a{white-space:nowrap;padding:10px 15px;border-radius:999px;background:var(--lcm-surface,#fff);border:1px solid var(--lcm-border,#e5dfd2);color:var(--lcm-text,#332f28);font-weight:700;text-decoration:none}.lcm-laying-tabs a.is-active{background:var(--lcm-green,#315b48);border-color:var(--lcm-green,#315b48);color:#fff}.lcm-laying-quick form,.lcm-form-inline{display:grid;grid-template-columns:1fr 2fr 1fr auto;gap:14px;align-items:end}.lcm-stepper{display:grid;grid-template-columns:44px 1fr 44px;border:1px solid var(--lcm-border,#ddd4c4);border-radius:12px;overflow:hidden;background:#fff}.lcm-stepper button{border:0;background:#f4f0e8;font-size:24px;cursor:pointer}.lcm-stepper input{border:0!important;text-align:center;font-size:20px;font-weight:800}.lcm-form-section{padding:20px;border:1px solid var(--lcm-border,#e6dfd2);border-radius:16px;background:var(--lcm-soft,#faf8f3);margin:0 0 18px}.lcm-form-section h3{margin:0 0 16px}.lcm-form-section h3 small{font-size:12px;font-weight:500;color:var(--lcm-muted,#746f66)}.lcm-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.lcm-laying-distribution{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.lcm-laying-distribution label{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px;border-radius:12px;background:#fff;border:1px solid var(--lcm-border,#e6dfd2);font-size:13px;font-weight:700}.lcm-laying-distribution input{width:76px!important;margin:0!important}.lcm-distribution-error{color:#a4312b;font-weight:700}.lcm-laying-history{display:grid;gap:10px}.lcm-laying-history>article{display:grid;grid-template-columns:58px 1fr auto;gap:14px;align-items:center;padding:12px;border:1px solid var(--lcm-border,#e6dfd2);border-radius:14px;background:#fff}.lcm-laying-date{display:grid;place-items:center;border-radius:12px;background:#f5ecd7;color:#6d5325;padding:6px}.lcm-laying-date strong{font-size:22px}.lcm-laying-date small{text-transform:uppercase}.lcm-row-actions{display:flex;gap:8px;align-items:center}.lcm-row-actions form{margin:0}.lcm-row-actions a,.lcm-row-actions button{border:0;background:transparent;color:var(--lcm-green,#315b48);font-weight:700;font-size:12px;cursor:pointer}.lcm-row-actions .is-destructive{color:#a4312b}.lcm-laying-alert{display:flex;gap:10px;padding:12px;border-radius:12px;background:#fff8e8;border:1px solid #ebd6a2;margin-bottom:10px}.lcm-laying-alert p{margin:0}.lcm-laying-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.lcm-laying-calendar>strong{text-align:center;color:var(--lcm-muted,#746f66);font-size:12px}.lcm-laying-calendar>article,.lcm-laying-calendar>span{min-height:82px;border-radius:12px;padding:9px}.lcm-laying-calendar>article{border:1px solid var(--lcm-border,#e6dfd2);background:#fff}.lcm-laying-calendar>article.has-eggs{background:#f5ecd7;border-color:#d7b967}.lcm-laying-calendar article small{display:block;margin-top:12px;color:#6d5325;font-weight:700}.lcm-laying-chart{display:flex;align-items:end;gap:4px;height:220px;padding:20px 5px 0;border-bottom:1px solid var(--lcm-border,#ddd)}.lcm-laying-chart span{flex:1;height:100%;display:flex;align-items:end}.lcm-laying-chart i{display:block;width:100%;height:var(--value);min-height:4px;background:linear-gradient(180deg,#d2aa4f,#987332);border-radius:5px 5px 0 0}.lcm-feature-lock{text-align:center;padding:48px!important}.lcm-feature-lock>.dashicons{font-size:42px;width:42px;height:42px;color:#9b7b39}.lcm-feature-lock code{display:inline-block;margin-top:10px}.lcm-form-actions{display:flex;justify-content:flex-end;gap:10px}
.lcm-app-soon{text-align:center;padding:56px 24px}.lcm-app-soon-icon{display:block;margin:0 auto 16px}.lcm-app-soon-icon .lcm-icon-emoji{font-size:2.6rem}.lcm-app-soon h2{margin:0 0 10px}.lcm-app-soon p{max-width:460px;margin:0 auto 22px;color:var(--lcm-ink-soft,#657068)}
.lcm-help-entry{margin-bottom:14px}.lcm-help-search-card{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}.lcm-help-search{display:flex;align-items:center;gap:10px;padding:4px 14px;border:1px solid var(--lcm-border,#e6dfd2);border-radius:14px;background:var(--lcm-soft,#faf8f3)}.lcm-help-search .dashicons{color:var(--lcm-muted,#746f66)}.lcm-help-search input{flex:1;border:0!important;background:transparent!important;box-shadow:none!important;padding:10px 0!important}.lcm-help-search input:focus{outline:none}.lcm-help-head{display:flex;align-items:flex-start;gap:14px}.lcm-help-head .lcm-icon-emoji{font-size:1.6rem}.lcm-help-head h2{margin:0 0 4px;font-size:1.05rem}.lcm-help-head p{margin:0;color:var(--lcm-ink-soft,#657068)}.lcm-help-guide{margin-top:14px}.lcm-help-guide summary{cursor:pointer;list-style:none;color:var(--lcm-forest,#315b48);font-weight:800;font-size:13px}.lcm-help-guide summary::-webkit-details-marker{display:none}.lcm-help-guide ul{margin:12px 0 0;padding-left:20px}.lcm-help-guide li{margin-bottom:8px;color:var(--lcm-ink,#20251f)}.lcm-help-guide li:last-child{margin-bottom:0}
@media(max-width:780px){.lcm-laying-quick form,.lcm-form-inline,.lcm-form-grid{grid-template-columns:1fr}.lcm-laying-distribution{grid-template-columns:1fr 1fr}.lcm-laying-history>article{grid-template-columns:48px 1fr}.lcm-row-actions{grid-column:1/-1;justify-content:flex-end;border-top:1px solid var(--lcm-border,#eee);padding-top:8px}.lcm-laying-calendar{gap:3px}.lcm-laying-calendar>article,.lcm-laying-calendar>span{min-height:58px;padding:5px}.lcm-laying-calendar article small{font-size:10px;margin-top:5px}.lcm-laying-tabs{margin-left:-8px;margin-right:-8px}.lcm-laying-quick{position:relative}.lcm-laying-quick .lcm-app-button{min-height:48px}}
@media(max-width:480px){.lcm-laying-distribution{grid-template-columns:1fr}.lcm-laying-calendar>strong{font-size:10px}.lcm-laying-calendar article small{font-size:0}.lcm-laying-calendar article small:first-letter{font-size:10px}}

/* Ponte v2.1.1 — assistant de récolte progressif. */
.lcm-laying-primary-action{display:inline-flex!important;align-items:center;gap:8px}.lcm-laying-hero-action{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 24px;margin:0 0 22px;border-radius:18px;background:linear-gradient(135deg,var(--lcm-green,#315b48),#244638);color:#fff}.lcm-laying-hero-action .lcm-app-button{background:var(--lcm-gold,#d2aa4f);color:#2f291e;min-height:52px;font-size:17px}.lcm-laying-hero-action small{color:#eef5f0;font-size:14px}.lcm-laying-key-stats{margin-bottom:22px}.lcm-laying-mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.lcm-laying-mini-stats>div{padding:15px;border-radius:13px;background:var(--lcm-soft,#faf8f3)}.lcm-laying-mini-stats strong,.lcm-laying-mini-stats small{display:block}.lcm-laying-mini-stats strong{font-size:24px;color:var(--lcm-green,#315b48)}
.lcm-laying-wizard-card{max-width:880px;margin:0 auto}.lcm-wizard-progress{height:6px;overflow:hidden;border-radius:999px;background:#ece7dc}.lcm-wizard-progress span{display:block;width:25%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--lcm-green,#315b48),var(--lcm-gold,#d2aa4f));transition:width .25s ease}.lcm-wizard-progress-label{margin:8px 0 24px;text-align:right;color:var(--lcm-muted,#746f66);font-size:12px;font-weight:700}.lcm-wizard-step{min-width:0;margin:0;padding:0;border:0}.lcm-wizard-step[hidden]{display:none!important}.lcm-wizard-step legend{width:100%;margin:0 0 8px;padding:0;color:var(--lcm-text,#332f28);font-size:clamp(24px,4vw,36px);font-weight:800;line-height:1.15}.lcm-wizard-step>p{margin:0 0 24px;color:var(--lcm-muted,#746f66)}.lcm-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.lcm-source-choice{position:relative;display:flex!important;align-items:center;gap:13px;min-height:72px;padding:16px!important;border:2px solid var(--lcm-border,#e5dfd2);border-radius:15px;background:#fff;cursor:pointer}.lcm-source-choice input{position:absolute;opacity:0;pointer-events:none}.lcm-source-choice:has(input:checked){border-color:var(--lcm-green,#315b48);background:#eff6f1;box-shadow:0 0 0 3px rgba(49,91,72,.12)}.lcm-source-choice:focus-within{outline:3px solid rgba(49,91,72,.25);outline-offset:2px}.lcm-source-choice .dashicons{color:var(--lcm-green,#315b48);font-size:25px;width:25px;height:25px}.lcm-wizard-counter{display:grid;grid-template-columns:72px minmax(100px,180px) 72px;justify-content:center;gap:10px;margin:38px auto}.lcm-wizard-counter button{min-height:72px;border:0;border-radius:16px;background:#f1ede4;color:var(--lcm-green,#315b48);font-size:38px;font-weight:600;cursor:pointer}.lcm-wizard-counter input{min-height:72px!important;text-align:center!important;border:2px solid var(--lcm-green,#315b48)!important;border-radius:16px!important;font-size:38px!important;font-weight:850!important}.lcm-wizard-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:28px}.lcm-answer-buttons{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:30px 0}.lcm-answer-buttons .lcm-app-button{min-height:58px;font-size:16px}.lcm-answer-buttons .is-selected{box-shadow:0 0 0 4px rgba(49,91,72,.18)}.lcm-hen-attribution{padding:18px;border-radius:15px;background:var(--lcm-soft,#faf8f3)}.lcm-plan-summary{display:flex;gap:14px;padding:20px;border-radius:15px;background:#eff6f1;border:1px solid #c9ddcf}.lcm-plan-summary .dashicons{color:var(--lcm-green,#315b48);font-size:28px;width:28px;height:28px}.lcm-plan-summary p{margin:5px 0 0}.lcm-app-button-block{display:flex!important;justify-content:center;width:100%;min-height:54px;margin-top:18px}.lcm-wizard-advanced .lcm-form-section{background:#fff}.lcm-wizard-advanced>label{display:block}.lcm-laying-wizard button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:780px){.lcm-laying-hero-action{align-items:stretch;flex-direction:column}.lcm-laying-hero-action small{display:none}.lcm-laying-hero-action .lcm-app-button{justify-content:center}.lcm-laying-mini-stats{grid-template-columns:1fr}.lcm-choice-grid{grid-template-columns:1fr}.lcm-wizard-card{margin-left:-4px;margin-right:-4px}.lcm-wizard-step legend{font-size:26px}.lcm-wizard-actions{position:sticky;bottom:72px;z-index:5;padding:12px;margin:22px -8px -8px;background:rgba(255,255,255,.96);box-shadow:0 -8px 18px rgba(44,39,31,.08)}.lcm-wizard-actions .lcm-app-button{min-height:50px;flex:1}.lcm-answer-buttons{grid-template-columns:1fr}.lcm-wizard-counter{grid-template-columns:64px minmax(90px,1fr) 64px}.lcm-wizard-counter button,.lcm-wizard-counter input{min-height:68px!important}}
@media(prefers-reduced-motion:reduce){.lcm-wizard-progress span{transition:none}}
/* Ponte v3.2.0 — saisie quotidienne sur un écran */
.lcm-daily-laying-card{max-width:940px;margin:0 auto}.lcm-daily-date{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding:12px 14px;border-radius:13px;background:var(--lcm-soft,#faf8f3);font-weight:800}.lcm-daily-date input{width:auto!important}[data-lcm-daily-laying]>.lcm-daily-installation{margin-bottom:12px}.lcm-daily-installation{border:1px solid var(--lcm-border,#e6dfd2);border-radius:16px;background:#fff;overflow:hidden}.lcm-daily-main{display:grid;grid-template-columns:38px 1fr auto;gap:12px;align-items:center;padding:14px}.lcm-daily-main>.dashicons{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:#edf5ef;color:var(--lcm-green,#315b48)}.lcm-daily-main strong,.lcm-daily-main small{display:block}.lcm-daily-main small{color:var(--lcm-muted,#746f66)}.lcm-daily-counter{display:grid;grid-template-columns:42px 72px 42px;gap:5px}.lcm-daily-counter button{border:0;border-radius:10px;background:#f0ede5;color:var(--lcm-green,#315b48);font-size:24px;font-weight:800;cursor:pointer}.lcm-daily-counter input{min-height:44px!important;padding:6px!important;text-align:center!important;font-size:22px!important;font-weight:850!important}.lcm-daily-installation details{border-top:1px solid #eeeae0}.lcm-daily-installation summary{padding:10px 14px;color:var(--lcm-green,#315b48);font-weight:800;cursor:pointer}.lcm-daily-installation summary span{font-size:11px;color:var(--lcm-muted,#746f66);font-weight:500}.lcm-daily-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:4px 14px 16px}.lcm-daily-note{grid-column:1/-1}.lcm-daily-submit{position:sticky;bottom:20px;z-index:8;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px;padding:14px 16px;border-radius:16px;background:#fff;box-shadow:0 10px 34px #28382d2b;border:1px solid #e2e7df}.lcm-daily-submit strong,.lcm-daily-submit small{display:block}.lcm-daily-submit strong{font-size:20px;color:var(--lcm-green,#315b48)}/* 2026-08-24 (v4.67.0) : retour utilisateur — le bouton et l'encadré des sous-espaces (v4.66.0) faisaient trop « bloc séparé », jugé pas soigné. Le bouton vit maintenant dans l'en-tête de la carte (comme les boutons +/-), et le panneau déplié devient une section interne de la même carte (même bordure/arrondi que .lcm-daily-installation, grâce à overflow:hidden sur le parent). *//* 2026-08-24 (v4.68.0) : le bouton « déplier » a disparu — quand une installation a des sous-espaces, ses cases à cocher sont toujours visibles (plus de compteur générique sur l'installation, voir daily_row_html()), donc plus besoin de les replier derrière un bouton. */.lcm-daily-zones-inline{padding:14px;border-top:1px solid #eeeae0;background:#faf8f3}.lcm-daily-zones-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;margin:0 0 8px}.lcm-daily-zones-heading span{font-size:11.5px;font-weight:800;color:var(--lcm-muted,#746f66);text-transform:uppercase;letter-spacing:.04em}.lcm-daily-zones-heading small{font-size:11.5px;color:var(--lcm-muted,#746f66);font-weight:500}.lcm-daily-zone-toggles{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.lcm-daily-zone-panel{margin:0 0 10px}.lcm-daily-zone-panel:last-child{margin-bottom:0}.lcm-daily-zone-panel .lcm-daily-installation{border-color:#e6dfd2;background:#fff}.lcm-management-section{margin:14px 0;border-radius:16px;background:#fff;border:1px solid var(--lcm-border,#e6dfd2)}.lcm-management-section>summary{padding:16px 18px;font-size:17px;font-weight:850;cursor:pointer}.lcm-management-section>section,.lcm-management-section>div{margin:0 14px 14px}@media(max-width:640px){.lcm-daily-main{grid-template-columns:34px 1fr}.lcm-daily-counter{grid-column:1/-1;grid-template-columns:52px 1fr 52px}.lcm-daily-details{grid-template-columns:1fr}.lcm-daily-note{grid-column:auto}.lcm-daily-submit{bottom:76px}.lcm-daily-submit .lcm-app-button{flex:1}.lcm-daily-date{align-items:stretch;flex-direction:column}.lcm-daily-date input{width:100%!important}}

* { box-sizing: border-box; }
html:has(.lcm-app-shell), body:has(.lcm-app-shell) { margin: 0; background: var(--lcm-cream); }
body:has(.lcm-app-shell) { color: var(--lcm-ink); font-family: var(--lcm-font); }
body:has(.lcm-app-shell) #wpadminbar { display: none; }
body:has(.lcm-app-shell) { padding-top: 0 !important; }
.lcm-app-shell, .lcm-app-gate { color: var(--lcm-ink); font: 15px/1.55 var(--lcm-font); }
.lcm-app-shell a, .lcm-app-gate a { color: inherit; }
.lcm-app-shell h1, .lcm-app-shell h2, .lcm-app-shell h3, .lcm-app-gate h1 { margin: 0; color: var(--lcm-ink); line-height: 1.18; }
.lcm-app-shell h1, .lcm-app-gate h1 { font-family: var(--lcm-display); font-size: clamp(2rem, 3vw, 3.1rem); font-weight: 600; letter-spacing: -.035em; }
.lcm-app-shell h2 { font-size: 1.12rem; font-weight: 750; letter-spacing: -.015em; }
.lcm-app-shell h3 { font-size: 1rem; }
.lcm-app-shell p { color: var(--lcm-ink-soft); }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.lcm-app-skip { position: fixed; z-index: 9999; top: -80px; left: 16px; padding: 12px 18px; border-radius: 9px; background: var(--lcm-forest); color: white !important; }
.lcm-app-skip:focus { top: 12px; }

/* Structure */
.lcm-app-shell { min-height: 100vh; background: var(--lcm-cream); }
.lcm-app-topbar { position: fixed; z-index: 110; inset: 0 0 auto 0; height: var(--lcm-topbar); display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 0 24px; color: white; background: rgba(24,56,44,.98); border-bottom: 1px solid rgba(255,255,255,.11); backdrop-filter: blur(18px); }
.lcm-app-brand, .lcm-app-brand-link, .lcm-app-user { display: flex; align-items: center; }
.lcm-app-brand { gap: 12px; min-width: 0; }
.lcm-app-brand-link { gap: 11px; color: white !important; text-decoration: none; }
.lcm-app-brand-link strong { display: block; font-size: .96rem; letter-spacing: .01em; }
.lcm-app-brand-link small { display: block; margin-top: 1px; color: rgba(255,255,255,.65); font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; }
.lcm-app-brand-mark { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 13px; color: var(--lcm-forest-strong); background: linear-gradient(145deg,#fff7df,#dcb766); box-shadow: inset 0 0 0 1px rgba(255,255,255,.45); font-size: 21px; }
.lcm-app-menu-toggle, .lcm-app-icon-link { display: grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 0; border-radius: 12px; color: white !important; background: rgba(255,255,255,.09); text-decoration: none; cursor: pointer; }
.lcm-app-menu-toggle { display: none; }
.lcm-app-menu-toggle:hover, .lcm-app-icon-link:hover { background: rgba(255,255,255,.17); }
.lcm-app-user { gap: 12px; min-width: 0; font-size: .82rem; }
.lcm-app-farm-name { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
.lcm-app-version { padding: 4px 9px; border: 1px solid rgba(255,255,255,.16); border-radius: 999px; color: rgba(255,255,255,.78); font-size: .72rem; }
.lcm-farm-switcher select { min-height: 40px; max-width: 220px; color: white; background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.18); }
.lcm-app-layout { min-height: 100vh; padding-top: var(--lcm-topbar); }
.lcm-app-sidebar { position: fixed; z-index: 100; top: var(--lcm-topbar); bottom: 0; left: 0; width: var(--lcm-sidebar); display: flex; flex-direction: column; padding: 20px 14px; background: var(--lcm-paper); border-right: 1px solid var(--lcm-line); overflow-y: auto; }
.lcm-app-sidebar nav { display: grid; gap: 3px; }
.lcm-app-nav-link { position: relative; display: grid; grid-template-columns: 22px minmax(0,1fr) auto; align-items: center; gap: 11px; min-height: 44px; padding: 9px 12px; border-radius: 11px; color: #5f665e !important; text-decoration: none; font-size: .87rem; font-weight: 620; }
.lcm-app-nav-link .dashicons { width: 20px; height: 20px; font-size: 20px; color: #858b82; }
.lcm-app-nav-link small { padding: 2px 7px; border-radius: 999px; color: #81704e; background: var(--lcm-gold-soft); font-size: .62rem; }
.lcm-app-nav-link:hover { color: var(--lcm-forest) !important; background: #f2f5f1; }
.lcm-app-nav-link.is-active { color: var(--lcm-forest) !important; background: var(--lcm-forest-soft); }
.lcm-app-nav-link.is-active::before { content: ""; position: absolute; left: 0; width: 3px; height: 22px; border-radius: 2px; background: var(--lcm-gold); }
.lcm-app-nav-link.is-active .dashicons { color: var(--lcm-forest); }
.lcm-app-sidebar-footer { display: grid; gap: 8px; margin-top: auto; padding: 22px 10px 4px; border-top: 1px solid var(--lcm-line); }
.lcm-app-sidebar-footer a { color: var(--lcm-ink-soft); text-decoration: none; font-size: .78rem; }
.lcm-app-sidebar-footer small { color: #989c95; font-size: .68rem; }
.lcm-app-main { width: calc(100% - var(--lcm-sidebar)); max-width: 1640px; min-height: calc(100vh - var(--lcm-topbar)); margin-left: var(--lcm-sidebar); padding: 38px clamp(22px,3vw,52px) 64px; outline: none; }
.lcm-app-overlay { display: none; }

/* Titres, boutons et états */
.lcm-app-page-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; margin-bottom: 30px; }
/* 2026-08-23 (v4.60.0) : total volailles + météo du jour, en haut à droite de « Mon élevage » (zone auparavant vide). */
.lcm-app-header-side{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.lcm-header-stat{display:flex;align-items:center;gap:9px;padding:9px 14px;border-radius:14px;background:#fff;border:1px solid var(--lcm-border,#e6dfd2)}
.lcm-header-stat span{font-size:20px}
.lcm-header-stat strong{display:block;font-size:16px;line-height:1.1}
.lcm-header-stat small{display:block;color:var(--lcm-muted,#746f66);font-size:11px}
.lcm-weather-chip{display:flex;align-items:center;gap:9px;padding:9px 14px;border-radius:14px;background:#fff;border:1px solid var(--lcm-border,#e6dfd2);cursor:pointer;text-align:left}
.lcm-weather-chip-emoji{font-size:22px}
.lcm-weather-chip strong{display:block;font-size:16px;line-height:1.1}
.lcm-weather-chip small{display:block;color:var(--lcm-muted,#746f66);font-size:11px}
.lcm-weather-main{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.lcm-weather-main span{font-size:44px}
.lcm-weather-main strong{display:block;font-size:26px}
.lcm-weather-main small{display:block;color:var(--lcm-muted,#746f66)}
.lcm-weather-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.lcm-weather-grid>div{padding:10px 12px;border-radius:12px;background:var(--lcm-soft,#faf8f3)}
.lcm-weather-grid span{font-size:18px}
.lcm-weather-grid strong{display:block;margin-top:2px}
.lcm-weather-grid small{display:block;color:var(--lcm-muted,#746f66);font-size:11px}
@media(max-width:640px){.lcm-app-header-side{width:100%}.lcm-header-stat,.lcm-weather-chip{flex:1}}

.lcm-app-page-heading p { max-width: 720px; margin: 9px 0 0; font-size: 1rem; }
.lcm-app-page-heading h1 .dashicons { display: none; }
.lcm-heading-actions, .lcm-form-actions, .lcm-profile-actions, .lcm-filter-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.lcm-app-kicker { display: block; margin-bottom: 7px; color: var(--lcm-gold); font-size: .69rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.lcm-app-button, .lcm-app-gate input[type=submit] { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 10px 17px; border: 1px solid var(--lcm-forest); border-radius: 11px; color: white !important; background: var(--lcm-forest); box-shadow: 0 5px 14px rgba(35,75,59,.16); text-decoration: none; font: 700 .84rem/1 var(--lcm-font); cursor: pointer; transition: transform .15s, box-shadow .15s, background .15s; }
.lcm-app-button:hover, .lcm-app-gate input[type=submit]:hover { background: var(--lcm-forest-strong); box-shadow: 0 8px 18px rgba(35,75,59,.22); transform: translateY(-1px); }
.lcm-app-button-secondary { color: var(--lcm-forest) !important; background: white; border-color: #cfd9d2; box-shadow: none; }
.lcm-app-button-secondary:hover { color: var(--lcm-forest) !important; background: var(--lcm-forest-soft); }
.lcm-app-button-block { width: 100%; margin-top: 8px; }
.lcm-app-text-link, .lcm-installation-actions a { color: var(--lcm-forest) !important; font-weight: 750; text-decoration: none; }
.lcm-app-status, .lcm-cheptel-body em { display: inline-flex; align-items: center; width: max-content; padding: 5px 9px; border-radius: 999px; color: var(--lcm-info); background: var(--lcm-info-soft); font: 750 .68rem/1 var(--lcm-font); font-style: normal; }
.lcm-app-status.is-ready { color: var(--lcm-success); background: var(--lcm-success-soft); }

/* Cartes et statistiques */
.lcm-app-card { min-width: 0; margin-bottom: 22px; padding: 24px; border: 1px solid var(--lcm-line); border-radius: var(--lcm-radius); background: var(--lcm-paper); box-shadow: var(--lcm-shadow-sm); }
.lcm-app-card-wide { grid-column: span 2; }
.lcm-app-card-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
.lcm-app-stat-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 15px; margin-bottom: 24px; }
.lcm-app-stat-grid-small { grid-template-columns: repeat(3,minmax(0,1fr)); }
.lcm-app-stat-card { display: flex; align-items: center; gap: 15px; min-height: 108px; padding: 20px; border: 1px solid var(--lcm-line); border-radius: var(--lcm-radius); background: var(--lcm-paper); box-shadow: var(--lcm-shadow-sm); }
.lcm-app-stat-card > .dashicons { display: grid; place-items: center; flex: 0 0 46px; width: 46px; height: 46px; border-radius: 14px; color: var(--lcm-forest); background: var(--lcm-forest-soft); font-size: 22px; }
.lcm-app-stat-card strong { display: block; font-family: var(--lcm-display); font-size: 1.75rem; line-height: 1; }
.lcm-app-stat-card small { display: block; margin-top: 6px; color: var(--lcm-ink-soft); font-size: .75rem; }
.lcm-app-dashboard-grid { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(290px,.75fr); gap: 22px; align-items: start; }
.lcm-app-columns-2 { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 22px; align-items: start; }
.lcm-app-module-grid, .lcm-app-feature-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.lcm-app-module-card, .lcm-app-feature { display: grid; gap: 8px; min-height: 125px; padding: 17px; border: 1px solid var(--lcm-line); border-radius: 14px; color: var(--lcm-ink) !important; background: #fcfbf7; text-decoration: none; }
.lcm-app-module-card:hover { border-color: #c9d7cf; background: var(--lcm-forest-soft); transform: translateY(-1px); }
.lcm-app-module-card .dashicons, .lcm-app-feature .dashicons { color: var(--lcm-gold); }
.lcm-app-module-card small, .lcm-app-feature small { color: var(--lcm-ink-soft); font-size: .72rem; }
.lcm-app-checklist { display: grid; gap: 12px; padding: 0; list-style: none; }
.lcm-app-checklist li { display: flex; align-items: center; gap: 10px; color: var(--lcm-ink-soft); }
.lcm-app-checklist .dashicons { color: var(--lcm-success); }
.lcm-app-checklist a { color: var(--lcm-forest) !important; text-decoration: none; font-weight: 750; }
.lcm-app-activity-list, .lcm-data-grid, .lcm-member-list, .lcm-v150-alerts { display: grid; gap: 10px; }
.lcm-app-activity-list article, .lcm-data-grid article, .lcm-member-list article, .lcm-v150-alerts article { display: flex; align-items: center; gap: 13px; padding: 13px 14px; border: 1px solid var(--lcm-line); border-radius: 12px; background: #fcfbf7; }
.lcm-app-activity-list small, .lcm-data-grid small, .lcm-member-list small, .lcm-v150-alerts small { display: block; color: var(--lcm-ink-soft); font-size: .72rem; }
.lcm-v150-alerts .dashicons { color: var(--lcm-gold); }
.lcm-app-empty, .lcm-app-coming-soon { display: block; grid-column: 1/-1; margin: 0; padding: 24px; border: 1px dashed #d7d2c7; border-radius: 14px; color: var(--lcm-ink-soft); background: #faf8f2; text-align: center; }
.lcm-app-release-list { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.lcm-app-release-list li { display: flex; gap: 14px; padding: 16px; border: 1px solid var(--lcm-line); border-radius: 13px; background: #fcfbf7; }
.lcm-app-release-list .dashicons { color: var(--lcm-gold); }
.lcm-app-release-list p { margin: 4px 0 0; }
.lcm-app-shell table { width: 100%; border-collapse: collapse; border: 1px solid var(--lcm-line); border-radius: 12px; background: var(--lcm-paper); overflow: hidden; }
.lcm-app-shell th, .lcm-app-shell td { padding: 12px 14px; border-bottom: 1px solid var(--lcm-line); text-align: left; }
.lcm-app-shell th { color: var(--lcm-ink-soft); background: #f7f5ef; font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; }

/* Formulaires */
.lcm-stack-form, .lcm-form-grid { display: grid; gap: 16px; }
.lcm-form-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
.lcm-field-full { grid-column: 1/-1; }
.lcm-app-shell label, .lcm-app-shell fieldset, .lcm-app-gate label { min-width: 0; margin: 0; color: #464c45; font-size: .76rem; font-weight: 730; }
.lcm-app-shell fieldset { padding: 16px; border: 1px solid var(--lcm-line); border-radius: 13px; }
.lcm-app-shell legend { padding: 0 7px; color: var(--lcm-ink); font-weight: 800; }
.lcm-app-shell input:not([type=checkbox]):not([type=radio]):not([type=hidden]), .lcm-app-shell select, .lcm-app-shell textarea, .lcm-app-gate input:not([type=submit]):not([type=checkbox]) { width: 100%; min-height: 44px; margin-top: 6px; padding: 10px 12px; color: var(--lcm-ink); background: white; border: 1px solid #d7d2c7; border-radius: 10px; box-shadow: none; font: 500 .88rem/1.35 var(--lcm-font); }
.lcm-app-shell textarea { min-height: 92px; resize: vertical; }
.lcm-app-shell input:focus, .lcm-app-shell select:focus, .lcm-app-shell textarea:focus, .lcm-app-gate input:focus { outline: 0; border-color: var(--lcm-gold); box-shadow: var(--lcm-ring); }
.lcm-app-shell input[type=checkbox], .lcm-app-shell input[type=radio] { accent-color: var(--lcm-forest); }
.lcm-installation-types { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.lcm-installation-types label { display: flex; align-items: center; gap: 9px; padding: 11px; border: 1px solid var(--lcm-line); border-radius: 10px; background: white; }
.lcm-flex-date { display: grid; grid-template-columns: 1fr 1.15fr; gap: 10px; }
.lcm-flex-date legend { grid-column: 1/-1; }
.lcm-animal-editor .lcm-form-grid { padding-top: 4px; }
.lcm-v150-inline-form { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.lcm-v150-inline-form input { width: auto !important; }
/* Reproduction v4.6.0 — repères et comptage moins « tableur ». */
.lcm-field-hint { margin: -8px 0 14px; color: var(--lcm-ink-soft); font-size: .78rem; font-weight: 600; }
.lcm-count-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin-top: 14px; }
.lcm-count-field { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 13px; border: 1px solid var(--lcm-line); border-radius: 12px; background: #faf9f4; }
.lcm-count-field .dashicons { color: var(--lcm-gold); }
.lcm-count-label { font-size: .74rem; }
.lcm-count-field input { margin-top: 0 !important; }
.lcm-app-button.is-destructive, a.is-destructive.lcm-app-button { color: #a13d34 !important; background: white; border-color: #e3b3ac; box-shadow: none; }
.lcm-app-button.is-destructive:hover, a.is-destructive.lcm-app-button:hover { background: #fbeeec; }
/* Panneau de diagnostic tenancy — v4.7.0 */
.lcm-diagnostic-panel summary { cursor: pointer; font-weight: 700; }
.lcm-diagnostic-panel table { margin-top: 14px; }
.lcm-diag-ok { color: var(--lcm-success, #2f7a48); font-weight: 700; }
.lcm-diag-warn { color: var(--lcm-warning, #a3781e); font-weight: 700; }
.lcm-diag-bad { color: #a13d34; font-weight: 700; }
.lcm-app-notice { margin: 0 0 22px; padding: 13px 16px; border: 1px solid #b9ddc7; border-radius: 12px; color: var(--lcm-success); background: var(--lcm-success-soft); font-weight: 700; }
.lcm-app-notice.is-warning { color: var(--lcm-warning); background: var(--lcm-warning-soft); border-color: #ecd79b; }
/* 2026-08-10 : badge « délai non vérifié » sur les fiches médicaments importées du registre ANMV (voir render_medications()) */
.lcm-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700}
.lcm-badge.is-warning{color:var(--lcm-warning);background:var(--lcm-warning-soft)}
/*
 * 2026-08-11 : fiches Lexique dépliables (Maladies/Médicaments/Races), demandé par
 * l'utilisateur pour permettre de voir une fiche complète sans passer par « Modifier »
 * (désormais réservé au compte créateur — voir render_medications()). Repose sur
 * <details>/<summary> natif, pas de JS : fermé, la ligne garde exactement l'apparence des
 * .lcm-data-grid article existants ; ouvert, le détail (dl/dt/dd) et les actions
 * Modifier/Supprimer (si présentes) s'affichent en dessous, dans la même carte.
 */
.lcm-data-grid details.lcm-lexique-view{border:1px solid var(--lcm-line);border-radius:12px;background:#fcfbf7;overflow:hidden}
.lcm-data-grid details.lcm-lexique-view>summary{display:flex;align-items:center;gap:13px;padding:13px 14px;cursor:pointer;list-style:none}
.lcm-data-grid details.lcm-lexique-view>summary::-webkit-details-marker{display:none}
.lcm-data-grid details.lcm-lexique-view>summary::after{content:"\203A";margin-left:auto;padding-left:10px;font-size:1.3rem;line-height:1;color:var(--lcm-ink-soft);transition:transform .15s}
.lcm-data-grid details.lcm-lexique-view[open]>summary::after{transform:rotate(90deg)}
.lcm-data-grid details.lcm-lexique-view>summary>div{flex:1 1 auto;min-width:0}
.lcm-lexique-detail{padding:0 14px 16px 14px}
.lcm-lexique-detail dl{display:grid;gap:10px;margin:12px 0 0}
.lcm-lexique-detail dt{font-weight:700;font-size:.78rem;color:var(--lcm-ink-soft);margin:0}
.lcm-lexique-detail dd{margin:2px 0 0;font-size:.92rem;line-height:1.5}
.lcm-data-grid details.lcm-lexique-view .lcm-lexique-detail:first-of-type{border-top:1px solid var(--lcm-line);padding-top:4px}
.lcm-data-grid details.lcm-lexique-view .lcm-lexique-detail.lcm-row-actions{border-top:1px solid var(--lcm-line);margin-top:4px;padding-top:14px}
.lcm-health-diagnostic { color: #4a4a4a; background: #f2f2f2; border-color: #d8d8d8; font-weight: 400; font-size: 13px; }
.lcm-health-diagnostic summary { cursor: pointer; font-weight: 700; }
.lcm-health-diagnostic p { margin: 8px 0 0; word-break: break-word; }
.lcm-app-button.is-loading, button.is-loading { position: relative; opacity: .72; pointer-events: none; }
.lcm-app-button.is-loading::after, button.is-loading::after { content: ""; width: 14px; height: 14px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: lcm-spin .65s linear infinite; }
@keyframes lcm-spin { to { transform: rotate(360deg); } }
.lcm-photo-error { display: block; margin-top: 7px; padding: 9px 11px; border-radius: 9px; color: var(--lcm-danger); background: var(--lcm-danger-soft); }
.lcm-photo-error[hidden] { display: none; }
.lcm-current-photo { margin-bottom: 16px; padding: 12px; border: 1px solid var(--lcm-line); border-radius: 13px; background: #faf8f2; }
.lcm-current-photo img { display: block; width: min(100%,360px) !important; height: 230px !important; margin: 0; border-radius: 10px; object-fit: cover !important; }
.lcm-current-photo p { margin: 8px 0 0; font-size: .75rem; }
.lcm-pagination { display: flex; justify-content: center; flex-wrap: wrap; gap: 7px; margin-top: 22px; }
.lcm-pagination a { display: grid; place-items: center; min-width: 38px; min-height: 38px; border: 1px solid var(--lcm-line); border-radius: 10px; color: var(--lcm-forest) !important; background: white; text-decoration: none; font-weight: 750; }
.lcm-pagination a.is-current { color: white !important; background: var(--lcm-forest); border-color: var(--lcm-forest); }

/* Cheptel */
.lcm-animal-filters form { display: grid; grid-template-columns: minmax(180px,1.5fr) repeat(4,minmax(120px,.7fr)) auto; gap: 12px; align-items: end; }
.lcm-cheptel-grid, .lcm-app-animal-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; }
.lcm-app-animal-card { overflow: hidden; display: grid; grid-template-rows: 150px auto; border: 1px solid var(--lcm-line); border-radius: 14px; color: var(--lcm-ink) !important; background: white; text-decoration: none; }
.lcm-app-animal-card img { width: 100% !important; height: 150px !important; object-fit: cover !important; }
.lcm-app-animal-card > div { display: grid; gap: 4px; padding: 13px; }
.lcm-app-animal-card small { color: var(--lcm-ink-soft); }
.lcm-cheptel-card { overflow: hidden; display: grid; grid-template-rows: 190px auto; border: 1px solid var(--lcm-line); border-radius: var(--lcm-radius); color: var(--lcm-ink) !important; background: white; box-shadow: var(--lcm-shadow-sm); text-decoration: none; transition: transform .18s, box-shadow .18s; }
.lcm-cheptel-card:hover { transform: translateY(-3px); box-shadow: var(--lcm-shadow); }
.lcm-cheptel-media { display: grid; place-items: center; overflow: hidden; color: var(--lcm-forest); background: linear-gradient(145deg,var(--lcm-forest-soft),#f7f0df); }
.lcm-cheptel-media img { width: 100%; height: 100%; object-fit: cover; }
.lcm-cheptel-body { display: grid; gap: 8px; padding: 17px; }
.lcm-cheptel-body > strong { font-size: 1rem; }
.lcm-cheptel-body > small { color: var(--lcm-ink-soft); }
.lcm-cheptel-body > span { display: flex; flex-wrap: wrap; gap: 6px; }
.lcm-profile-hero { display: grid; grid-template-columns: minmax(220px,340px) minmax(0,1fr); gap: 34px; align-items: center; margin-bottom: 20px; padding: 28px; border-radius: var(--lcm-radius-lg); color: white; background: linear-gradient(125deg,var(--lcm-forest-strong),var(--lcm-forest)); box-shadow: var(--lcm-shadow); }
.lcm-profile-hero h1 { color: white; }
.lcm-profile-hero p { color: rgba(255,255,255,.74); }
.lcm-profile-photo { overflow: hidden; display: grid; place-items: center; height: 280px; border-radius: 18px; color: var(--lcm-forest); background: var(--lcm-gold-soft); }
.lcm-profile-photo img { width: 100%; height: 100%; object-fit: cover; }
.lcm-profile-photo .dashicons { width: 70px; height: 70px; font-size: 70px; }
.lcm-profile-hero .lcm-app-button-secondary { border-color: rgba(255,255,255,.6); color: white !important; background: transparent; }
/*
 * 2026-08-08 (v4.4.0) : retour utilisateur sur la fiche volaille —
 * « dégueulasse [...] on dirait vraiment un tableau Excel ». Deux causes :
 * (1) .lcm-profile-tabs était un faux bandeau d'onglets (de simples <span>,
 * jamais fonctionnel, jamais relié à rien) — supprimé du PHP, sa CSS
 * retirée ici ; (2) .lcm-profile-data dessinait une vraie grille de
 * cellules à bordures 1px (l'effet tableur exact dénoncé) — remplacée par
 * .lcm-profile-facts, une liste de faits en lignes séparées par un simple
 * filet, sur le modèle déjà utilisé par .lcm-installation-card dl
 * ailleurs dans l'app plutôt qu'une nouvelle esthétique inventée ici.
 */
.lcm-profile-facts { display: grid; gap: 10px; margin: 0; }
.lcm-profile-facts > div { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding-bottom: 10px; border-bottom: 1px solid var(--lcm-line); }
.lcm-profile-facts > div:last-child { border-bottom: 0; padding-bottom: 0; }
.lcm-profile-facts dt { color: var(--lcm-ink-soft); font-size: .78rem; }
.lcm-profile-facts dd { margin: 0; font-weight: 750; text-align: right; }
.lcm-danger-zone { margin-top: 20px; padding: 16px; border: 1px solid #edc7c3; border-radius: 12px; background: var(--lcm-danger-soft); }
.lcm-danger-zone button { color: var(--lcm-danger); border: 0; background: transparent; font-weight: 750; cursor: pointer; }

/* Élevages et installations */
.lcm-installation-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 15px; }
.lcm-installation-card { padding: 18px; border: 1px solid var(--lcm-line); border-radius: 14px; background: #fcfbf7; }
.lcm-installation-card-head { display: flex; align-items: center; gap: 12px; }
.lcm-installation-card-head > .dashicons { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; color: var(--lcm-forest); background: var(--lcm-forest-soft); }
.lcm-installation-card-head small { display: block; color: var(--lcm-ink-soft); }
/* 2026-08-07 (v3.9.1) : la tête de carte est maintenant un lien (raccourci vers le résumé pontes/entretiens/santé) — neutralise le style de lien par défaut. */
a.lcm-installation-card-head { color: inherit; text-decoration: none; margin: -4px -4px 0; padding: 4px; border-radius: 12px; transition: background .16s ease; }
a.lcm-installation-card-head:hover { background: var(--lcm-forest-soft, #eaf3ee); }
a.lcm-installation-card-head strong { text-decoration: underline; text-decoration-color: transparent; transition: text-decoration-color .16s ease; }
a.lcm-installation-card-head:hover strong { text-decoration-color: currentColor; }
.lcm-installation-tag { display: inline-block; margin: 8px 0 0; padding: 3px 10px; border-radius: 999px; background: var(--lcm-line, #e7ece7); color: var(--lcm-ink-soft, #62685f); font-size: 11px; font-weight: 700; }
/* 2026-08-24 (v4.71.0) : retour utilisateur — même fond beige uniforme pour toutes les tuiles (« trop Excel »). Une couleur par type de trait (voir installation_traits_html()), même palette que .lcm-stat-icon.is-*/actions rapides du tableau de bord. */
/* 2026-08-24 (v4.72.0) : retour utilisateur — avec 1fr, une tuile seule (ou peu nombreuses) dans une carte large s'étirait en un immense bandeau pleine largeur (« hyper laid »). Largeur maximale fixée (110px) au lieu de 1fr : les tuiles restent compactes quel que soit le nombre d'items ou la largeur de la carte. */
/* 2026-08-24 (v4.73.0) : retour utilisateur (capture d'écran) — le plafond 110px ne suffisait pas : CSS Grid étire toujours la ligne sur toute la largeur du conteneur dès qu'il y a peu de traits (cas très courant : 2-3 traits sur une petite installation type Hôpital), même si chaque cellule individuelle est plafonnée. Refonte en Flexbox + forme de puce/pilule : chaque trait ne prend que la largeur de son propre contenu, jamais plus — élimine le bandeau à la racine quel que soit le nombre de traits. Icône dans un rond, valeur + libellé sur la même ligne : plus dense et plus soigné qu'un bloc empilé plein-largeur. */
.lcm-installation-traits { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0; }
.lcm-installation-trait { display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px 6px 6px; border-radius: 999px; background: var(--lcm-surface-soft, #f5f2e9); }
.lcm-installation-trait .lcm-icon-emoji { display: flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: rgba(255, 255, 255, .65); font-size: .95rem; flex-shrink: 0; }
.lcm-installation-trait span { display: inline-flex; align-items: baseline; gap: 5px; white-space: nowrap; }
.lcm-installation-trait strong { font-size: 13px; font-weight: 800; color: var(--lcm-ink); }
.lcm-installation-trait small { font-size: 11px; color: var(--lcm-ink-soft, #62685f); }
.lcm-installation-trait.is-blue { background: var(--lcm-blue-soft, #edf4fb); }
.lcm-installation-trait.is-gold { background: var(--lcm-gold-soft, #fff5d9); }
.lcm-installation-trait.is-green { background: var(--lcm-primary-soft, #eaf3ee); }
.lcm-installation-trait.is-orange { background: var(--lcm-orange-soft, #fbead9); }
.lcm-installation-trait.is-rose { background: var(--lcm-rose-soft, #fff0f1); }
.lcm-installation-trait.is-slate { background: var(--lcm-slate-soft, #eaeef0); }
.lcm-installation-zone-list { display: flex; flex-direction: column; gap: 12px; margin: 14px 0; }
.lcm-installation-zone { padding: 14px 16px; border: 1px solid var(--lcm-border); border-radius: 12px; background: var(--lcm-surface); }
.lcm-installation-zone-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.lcm-installation-zone-head strong { display: block; font-size: 14px; }
.lcm-installation-zone-head small { display: block; color: var(--lcm-ink-soft); margin-top: 2px; }
.lcm-installation-zone-actions { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.lcm-installation-zone-actions form { margin: 0; }
.lcm-installation-zone-notes { margin: 10px 0 0; font-size: 13px; color: var(--lcm-ink-soft); }
a.lcm-installation-tag { text-decoration: none; }

/* v4.53.0 : formulaire de création simplifié — cartes bâtiments + mini-fiches répétables. */
.lcm-installation-buildings { margin: 4px 0 6px; }
.lcm-installation-type-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 8px; margin: 8px 0 4px; }
.lcm-installation-type-card { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; padding: 12px 8px; border: 1px solid var(--lcm-border); border-radius: 12px; background: var(--lcm-surface); cursor: pointer; font-size: 12px; font-weight: 600; transition: border-color .15s ease, background .15s ease; }
.lcm-installation-type-card input { position: absolute; opacity: 0; pointer-events: none; }
.lcm-installation-type-card:has(input:checked) { border-color: var(--lcm-primary); background: var(--lcm-primary-soft); }
.lcm-installation-type-card-icon { font-size: 1.3rem; }
.lcm-installation-zone-group { margin: 10px 0; padding: 14px; border-left: 3px solid var(--lcm-primary); border-radius: 0 12px 12px 0; background: var(--lcm-surface-soft, #f5f2e9); }
.lcm-installation-zone-group[hidden] { display: none; }
.lcm-installation-zone-group-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; font-size: .95rem; }
.lcm-installation-zone-rows { display: flex; flex-direction: column; gap: 10px; }
.lcm-installation-zone-row { padding: 10px 12px; border: 1px solid var(--lcm-border); border-radius: 10px; background: var(--lcm-surface); }
.lcm-installation-zone-row-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.lcm-installation-zone-row-head input[type=text] { flex: 1; font-weight: 600; }
.lcm-installation-zone-row-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 8px; }
.lcm-installation-zone-row .lcm-inline-check { margin-top: 8px; }
.lcm-installation-zone-row textarea { width: 100%; }
[data-lcm-add-zone] { display: inline-block; margin-top: 2px; background: none; border: 1px dashed var(--lcm-primary); border-radius: 8px; padding: 6px 10px; font-size: 12.5px; cursor: pointer; }
[data-lcm-remove-zone] { border: 0; background: none; color: var(--lcm-text-soft); font-size: 14px; cursor: pointer; line-height: 1; padding: 4px; }
.lcm-installation-advanced { margin: 14px 0; }
.lcm-installation-advanced summary { cursor: pointer; font-weight: 700; color: var(--lcm-text-soft); padding: 6px 0; }
.lcm-installation-advanced[open] summary { margin-bottom: 10px; }
.lcm-dynamic-field[hidden] { display: none; }
.lcm-installation-card dl { display: grid; gap: 8px; margin: 16px 0; }
.lcm-installation-card dl div { display: flex; justify-content: space-between; gap: 12px; padding-bottom: 7px; border-bottom: 1px solid var(--lcm-line); }
.lcm-installation-card dt { color: var(--lcm-ink-soft); }
.lcm-installation-card dd { margin: 0; font-weight: 750; }
.lcm-installation-actions { display: flex; flex-wrap: wrap; gap: 12px; font-size: .75rem; }
.lcm-installation-actions form { margin: 0; }
.lcm-installation-actions button, .lcm-link-button { padding: 0; border: 0; color: var(--lcm-danger); background: transparent; font: inherit; font-weight: 750; cursor: pointer; }
.lcm-avatar { display: grid; place-items: center; flex: 0 0 39px; width: 39px; height: 39px; border-radius: 50%; color: white; background: var(--lcm-forest); font-weight: 800; }

/* 2026-08-09 (v4.8.0) : ordre personnalisable des installations (flèches) + archivage
   avec motif (installations et volailles) + rubrique Archives. */
/* 2026-08-24 (v4.71.0) : retour utilisateur — les deux boutons monter/descendre, chacun dans son propre carré bordé sur une ligne à part, paraissaient trop « bouton d'administration ». Regroupés dans une seule pastille flottante en coin de carte, discrète, plutôt qu'une rangée de contrôles séparée en tête de fiche. */
.lcm-installation-card { position: relative; }
.lcm-installation-reorder { position: absolute; top: 14px; right: 14px; z-index: 2; display: flex; flex-direction: column; overflow: hidden; border-radius: 10px; background: #fff; box-shadow: 0 2px 8px rgba(25,37,29,.1); }
.lcm-installation-reorder form { margin: 0; }
.lcm-installation-reorder form:first-child button { border-bottom: 1px solid var(--lcm-line); }
.lcm-installation-reorder button { display: grid; place-items: center; width: 26px; height: 24px; padding: 0; border: 0; color: var(--lcm-forest); background: transparent; cursor: pointer; }
.lcm-installation-reorder button .dashicons { font-size: 14px; width: 14px; height: 14px; }
.lcm-installation-reorder button:disabled { color: var(--lcm-ink-soft); opacity: .4; cursor: default; }
.lcm-installation-reorder button:not(:disabled):hover { background: var(--lcm-forest-soft, #eaf3ee); }

/* 2026-08-09 (v4.8.1) : retour utilisateur — le panneau restait masqué sous la barre de
   navigation mobile fixe (.lcm-mobile-nav) une fois ouvert, en bas de la fiche volaille/
   installation. scroll-margin-bottom garantit que le scrollIntoView() (app.js) ne s'arrête
   pas pile sous la barre ; margin-bottom réserve aussi de la place s'il n'y a pas de scroll. */
.lcm-archive-picker { margin-top: 4px; margin-bottom: calc(var(--lcm-mobile-nav, 72px) + 16px); scroll-margin-bottom: calc(var(--lcm-mobile-nav, 72px) + 16px); }
.lcm-archive-picker summary { color: var(--lcm-danger); font-weight: 750; font-size: .75rem; cursor: pointer; list-style: none; }
.lcm-archive-picker summary::-webkit-details-marker { display: none; }
.lcm-archive-picker[open] summary { margin-bottom: 10px; }
.lcm-archive-picker form { padding: 14px; border: 1px solid var(--lcm-line); border-radius: 12px; background: #fcfbf7; }
.lcm-archive-reasons { display: flex; flex-direction: column; gap: 8px; border: 0; padding: 0; margin: 0 0 10px; }
.lcm-archive-reasons legend { padding: 0; font-size: .72rem; font-weight: 750; color: var(--lcm-ink-soft); text-transform: uppercase; letter-spacing: .03em; }
.lcm-archive-reasons label { display: flex; align-items: center; gap: 8px; font-weight: 600; }
.lcm-archive-picker input[type="text"] { width: 100%; margin: 4px 0 10px; padding: 8px 10px; border: 1px solid var(--lcm-line); border-radius: 9px; }

.lcm-archive-list { display: flex; flex-direction: column; gap: 10px; }
.lcm-archive-list article { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border: 1px solid var(--lcm-line); border-radius: 12px; background: #fcfbf7; }
.lcm-archive-list small { display: block; color: var(--lcm-ink-soft); margin-top: 2px; }
.lcm-archive-list form { margin: 0; }
.lcm-archive-list button { padding: 8px 14px; border: 1px solid var(--lcm-forest); border-radius: 9px; color: var(--lcm-forest); background: #fff; font-weight: 750; cursor: pointer; }
.lcm-archive-list button:hover { background: var(--lcm-forest-soft, #eaf3ee); }

/* Connexion */
.lcm-app-gate { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at 15% 10%,#fff8e8 0,transparent 28%), linear-gradient(135deg,var(--lcm-forest-strong),var(--lcm-forest)); }
.lcm-app-gate-card { width: min(100%,440px); padding: 38px; border: 1px solid rgba(255,255,255,.55); border-radius: var(--lcm-radius-lg); background: rgba(255,254,250,.97); box-shadow: 0 25px 80px rgba(0,0,0,.22); }
.lcm-app-gate-card > p { color: var(--lcm-ink-soft); }
.lcm-app-gate-icon { display: grid; place-items: center; width: 58px; height: 58px; margin-bottom: 22px; border-radius: 17px; background: var(--lcm-gold-soft); font-size: 30px; }
.lcm-app-gate .login-submit { margin-bottom: 0; }
.lcm-app-gate-help { font-size: .8rem; text-align: center; }
.lcm-confirm-dialog { width: min(calc(100% - 32px),430px); padding: 0; border: 0; border-radius: 18px; color: var(--lcm-ink); background: var(--lcm-paper); box-shadow: 0 28px 90px rgba(0,0,0,.28); }
.lcm-confirm-dialog::backdrop { background: rgba(16,26,20,.56); backdrop-filter: blur(3px); }
.lcm-confirm-dialog form { display: grid; gap: 14px; padding: 27px; }
.lcm-confirm-dialog h2, .lcm-confirm-dialog p { margin: 0; }
.lcm-confirm-dialog form > div { display: flex; justify-content: flex-end; gap: 9px; margin-top: 6px; }
.lcm-confirm-icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 13px; color: var(--lcm-danger); background: var(--lcm-danger-soft); font-weight: 900; }

/* Pop-up et journal de nouveautés — v4.20.0 */
.lcm-release-popup { width: min(calc(100% - 32px),520px); max-height: min(80vh,640px); padding: 0; border: 0; border-radius: 18px; color: var(--lcm-ink); background: var(--lcm-paper); box-shadow: 0 28px 90px rgba(0,0,0,.28); }
.lcm-release-popup::backdrop { background: rgba(16,26,20,.56); backdrop-filter: blur(3px); }
.lcm-release-popup form { display: flex; flex-direction: column; max-height: min(80vh,640px); }
.lcm-release-popup header { padding: 27px 27px 6px; }
.lcm-release-popup header h2 { margin: 4px 0 0; }
.lcm-release-popup-list { display: grid; gap: 14px; padding: 14px 27px; overflow-y: auto; }
.lcm-release-popup-list article { padding: 14px 16px; border: 1px solid var(--lcm-line); border-radius: 13px; background: #fcfbf7; }
.lcm-release-popup-list h3 { margin: 4px 0 6px; font-size: 15px; }
.lcm-release-popup-list p { margin: 0; color: var(--lcm-ink-soft); }
.lcm-release-popup-actions { display: flex; flex-wrap: wrap; gap: 10px; padding: 16px 27px 27px; }
.lcm-release-entry { border: 1px solid var(--lcm-line); border-radius: 13px; background: #fcfbf7; padding: 0; margin-bottom: 12px; }
.lcm-release-entry:last-child { margin-bottom: 0; }
.lcm-release-entry > summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 18px; cursor: pointer; list-style: none; font-weight: 700; }
.lcm-release-entry > summary::-webkit-details-marker { display: none; }
.lcm-release-entry > summary::after { content: "\203A"; margin-left: auto; transform: rotate(90deg); transition: transform .15s; color: var(--lcm-ink-soft); }
.lcm-release-entry[open] > summary::after { transform: rotate(-90deg); }
.lcm-release-entry > summary span { font-weight: 400; color: var(--lcm-ink-soft); font-size: .82rem; }
.lcm-release-entry-detail { display: grid; gap: 10px; padding: 0 18px 16px; }
.lcm-release-item { display: flex; align-items: flex-start; gap: 12px; }
.lcm-release-item.is-feature .dashicons { color: var(--lcm-gold); }
.lcm-release-item.is-technical .dashicons { color: var(--lcm-ink-soft); }
.lcm-release-item.is-technical p { margin: 0; color: var(--lcm-ink-soft); font-size: .85rem; }
.lcm-release-item p { margin: 4px 0 0; }
.lcm-member-count { font-size: .8rem; font-weight: 700; color: var(--lcm-ink-soft); }

/*
 * 2026-08-15 : demande utilisateur — regrouper les longs historiques
 * (Ponte, Santé & Entretien) par année puis par mois, repliés par défaut
 * (« on clique sur l'année, puis le mois »). Même langage visuel que
 * .lcm-release-entry ci-dessus (chevron pivotant, pas de JS).
 */
.lcm-history-groups { display: grid; gap: 12px; }
.lcm-history-year { border: 1px solid var(--lcm-line); border-radius: 14px; background: #fcfbf7; padding: 0; }
.lcm-history-year > summary { display: flex; align-items: center; gap: 10px; padding: 15px 18px; cursor: pointer; list-style: none; font-size: 1.02rem; }
.lcm-history-year > summary::-webkit-details-marker { display: none; }
.lcm-history-year > summary::after { content: "\203A"; margin-left: auto; transform: rotate(90deg); transition: transform .15s; color: var(--lcm-ink-soft); }
.lcm-history-year[open] > summary::after { transform: rotate(-90deg); }
.lcm-history-year > summary small { font-weight: 400; color: var(--lcm-ink-soft); }
.lcm-history-year-body { display: grid; gap: 8px; padding: 0 14px 14px; }
.lcm-history-month { border: 1px solid var(--lcm-line); border-radius: 11px; background: white; margin: 0 4px 8px; }
.lcm-history-month:last-child { margin-bottom: 4px; }
.lcm-history-month > summary { display: flex; align-items: center; gap: 10px; padding: 12px 16px; cursor: pointer; list-style: none; font-weight: 700; }
.lcm-history-month > summary::-webkit-details-marker { display: none; }
.lcm-history-month > summary::after { content: "\203A"; margin-left: auto; transform: rotate(90deg); transition: transform .15s; color: var(--lcm-ink-soft); }
.lcm-history-month[open] > summary::after { transform: rotate(-90deg); }
.lcm-history-month > summary small { font-weight: 400; color: var(--lcm-ink-soft); }
.lcm-history-month > *:not(summary) { padding: 0 16px 14px; }

/* Accessibilité */
.lcm-app-shell a:focus-visible, .lcm-app-shell button:focus-visible, .lcm-app-shell input:focus-visible, .lcm-app-shell select:focus-visible, .lcm-app-shell textarea:focus-visible { outline: 2px solid var(--lcm-gold); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }

/* Tablette */
@media (max-width: 1180px) {
  :root { --lcm-sidebar: 220px; }
  .lcm-app-stat-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .lcm-app-module-grid, .lcm-app-feature-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .lcm-cheptel-grid, .lcm-app-animal-grid, .lcm-installation-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .lcm-animal-filters form { grid-template-columns: repeat(3,minmax(0,1fr)); }
}

/* Mobile */
@media (max-width: 820px) {
  :root { --lcm-topbar: 64px; }
  .lcm-app-topbar { padding: 0 14px; }
  .lcm-app-menu-toggle { display: grid; }
  .lcm-app-brand-link small, .lcm-app-version, .lcm-app-user-name, .lcm-app-farm-name, .lcm-farm-switcher { display: none; }
  .lcm-app-sidebar { top: var(--lcm-topbar); width: min(86vw,310px); transform: translateX(-105%); transition: transform .2s ease; box-shadow: var(--lcm-shadow); }
  .lcm-app-shell.is-menu-open .lcm-app-sidebar { transform: translateX(0); }
  .lcm-app-overlay { position: fixed; z-index: 90; inset: var(--lcm-topbar) 0 0 0; border: 0; background: rgba(16,26,20,.44); backdrop-filter: blur(2px); }
  .lcm-app-shell.is-menu-open .lcm-app-overlay { display: block; }
  .lcm-app-main { width: 100%; margin-left: 0; padding: 26px 16px 50px; }
  .lcm-app-page-heading { align-items: flex-start; flex-direction: column; margin-bottom: 22px; }
  .lcm-app-page-heading h1 { font-size: 2.1rem; }
  .lcm-heading-actions { width: 100%; }
  .lcm-heading-actions > * { flex: 1 1 auto; }
  .lcm-app-dashboard-grid, .lcm-app-columns-2 { grid-template-columns: 1fr; }
  .lcm-app-card-wide { grid-column: auto; }
  .lcm-form-grid { grid-template-columns: 1fr; }
  .lcm-field-full { grid-column: auto; }
  .lcm-animal-filters form { grid-template-columns: 1fr 1fr; }
  .lcm-animal-filters form label:first-child { grid-column: 1/-1; }
  .lcm-profile-hero { grid-template-columns: 1fr; gap: 20px; padding: 18px; }
  .lcm-profile-photo { height: 300px; }
  .lcm-installation-grid { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .lcm-app-brand-link strong { max-width: 145px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .lcm-app-card { padding: 18px; border-radius: 14px; }
  .lcm-app-stat-grid, .lcm-app-stat-grid-small { grid-template-columns: 1fr 1fr; gap: 10px; }
  .lcm-app-stat-card { min-height: 92px; padding: 14px; }
  .lcm-app-stat-card > .dashicons { flex-basis: 38px; width: 38px; height: 38px; }
  .lcm-app-stat-card strong { font-size: 1.4rem; }
  .lcm-app-module-grid, .lcm-app-feature-grid, .lcm-cheptel-grid, .lcm-app-animal-grid { grid-template-columns: 1fr; }
  .lcm-cheptel-card { grid-template-columns: 108px minmax(0,1fr); grid-template-rows: minmax(124px,auto); }
  .lcm-cheptel-media { min-height: 124px; }
  .lcm-animal-filters form { grid-template-columns: 1fr; }
  .lcm-animal-filters form label:first-child { grid-column: auto; }
  .lcm-filter-actions, .lcm-form-actions, .lcm-profile-actions { display: grid; grid-template-columns: 1fr; width: 100%; }
  .lcm-profile-photo { height: 230px; }
  .lcm-profile-data { grid-template-columns: 1fr; }
  .lcm-installation-types, .lcm-flex-date { grid-template-columns: 1fr; }
  .lcm-flex-date legend { grid-column: auto; }
  .lcm-app-gate-card { padding: 28px 22px; }
}

/* Abonnements et permissions — v2.2.0 */
.lcm-plan-badge{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:4px 11px;border:1px solid color-mix(in srgb,var(--lcm-plan-color) 38%,transparent);border-radius:999px;background:color-mix(in srgb,var(--lcm-plan-color) 12%,#fff);color:var(--lcm-plan-color);font-size:12px;font-weight:800;letter-spacing:.02em;white-space:nowrap}
.lcm-entitlement-lock{display:flex;align-items:flex-start;gap:18px;border-left:4px solid var(--lcm-gold,#b78938)}
.lcm-entitlement-lock>.dashicons{width:42px;height:42px;padding:10px;border-radius:50%;background:#f5eddd;color:#8b6a25;font-size:22px}
.lcm-entitlement-lock h2{margin:0 0 6px}.lcm-entitlement-lock p{margin:0 0 14px;color:var(--lcm-text-soft,#657068)}
.lcm-entitlement-gate-actions{display:flex;flex-wrap:wrap;gap:10px}
.lcm-plan-comparison{display:grid;grid-template-columns:repeat(4,minmax(230px,1fr));gap:18px;align-items:start;overflow-x:auto;padding-bottom:10px}
.lcm-plan-card{border-top:4px solid var(--lcm-plan-color)}.lcm-plan-card.is-current{box-shadow:0 0 0 2px color-mix(in srgb,var(--lcm-plan-color) 45%,transparent),var(--lcm-shadow,0 10px 30px rgba(45,57,49,.08))}
.lcm-plan-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.lcm-plan-card-head small{font-weight:700;color:var(--lcm-plan-color)}
.lcm-plan-card h2{margin:22px 0 10px;font-size:15px}.lcm-plan-card ul{margin:0;padding:0;list-style:none}.lcm-plan-card li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #ebe8df;font-size:13px}.lcm-plan-card li strong{white-space:nowrap}.lcm-plan-features li{justify-content:flex-start}.lcm-plan-features .dashicons{color:#477157}.lcm-plan-features .is-locked{color:#817f79}.lcm-plan-features .is-locked .dashicons{color:#a68c58}
.lcm-plan-subscribe-actions{display:grid;gap:8px;margin-top:16px}
.lcm-plan-card form{margin:0}
.lcm-plan-card form + form{margin-top:8px}
@media(max-width:900px){.lcm-plan-comparison{grid-template-columns:repeat(4,280px)}.lcm-app-user .lcm-plan-badge{display:none}}
@media(max-width:600px){.lcm-entitlement-lock{display:block}.lcm-entitlement-lock>.dashicons{margin-bottom:12px}.lcm-plan-comparison{grid-template-columns:repeat(4,84vw)}}

/* Aperçu créateur des formules — v4.18.0 */
.lcm-plan-preview-switcher{margin:0 0 22px;padding:16px 18px;border:1px solid #ecd79b;border-radius:14px;background:var(--lcm-warning-soft,#fdf6e3)}
.lcm-plan-preview-switcher>p{margin:0 0 12px;font-size:13px;color:var(--lcm-text-soft,#657068)}
.lcm-plan-preview-buttons{display:flex;flex-wrap:wrap;gap:10px}
.lcm-plan-preview-buttons .lcm-app-button{min-height:38px;padding:8px 15px}
.lcm-app-preview-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:0 0 18px;padding:11px 18px;border-radius:12px;border:1px solid #ecd79b;background:var(--lcm-warning-soft,#fdf6e3);color:#8b6a25;font-weight:700;font-size:13px}
.lcm-app-preview-banner form{margin:0}
.lcm-app-preview-banner .lcm-app-button{min-height:36px;padding:6px 13px}
@media(max-width:600px){.lcm-app-preview-banner{flex-direction:column;align-items:flex-start}}

/* Santé v2.2.1 */
/* 2026-08-04 (v3.7.3) : Vue d'ensemble simplifiée, cartes groupées sous un intitulé court plutôt que 8 choix au même niveau. */
.lcm-health-action-group{margin:0 0 6px}
.lcm-health-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0 0 24px}
.lcm-health-action-card{display:flex;align-items:flex-start;gap:16px;padding:22px;border:1px solid var(--lcm-border,#dedbd2);border-radius:18px;background:var(--lcm-surface,#fff);color:inherit;text-decoration:none;box-shadow:var(--lcm-shadow,0 10px 30px rgba(45,57,49,.08));transition:transform .18s ease,border-color .18s ease}
.lcm-health-action-card:hover{transform:translateY(-2px);border-color:var(--lcm-gold,#b78938)}.lcm-health-action-card>.dashicons{width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:#edf2ec;color:#365d46;font-size:22px}
.lcm-health-action-card div{flex:1}.lcm-health-action-card strong{display:block;font-size:17px}.lcm-health-action-card p{margin:7px 0 0;color:var(--lcm-text-soft,#657068);line-height:1.5}.lcm-health-action-card small{color:var(--lcm-gold,#9c742f);font-weight:700;white-space:nowrap}.lcm-health-action-card.is-locked{opacity:.72}
.lcm-health-timeline{display:grid;gap:0}.lcm-health-timeline article{display:flex;align-items:flex-start;gap:14px;padding:16px 4px;border-bottom:1px solid var(--lcm-border,#ebe8df)}.lcm-health-timeline article:last-child{border-bottom:0}.lcm-health-dot{width:12px;height:12px;margin-top:7px;border-radius:50%;background:var(--lcm-gold,#b78938);box-shadow:0 0 0 5px #f7f0e2;flex:0 0 auto}.lcm-health-timeline article>div{flex:1}.lcm-health-timeline small,.lcm-health-timeline strong{display:block}.lcm-health-timeline p{margin:5px 0 0;color:var(--lcm-text-soft,#657068)}.lcm-health-timeline .is-overdue .lcm-health-dot{background:#b3473d;box-shadow:0 0 0 5px #f8e7e4}
.lcm-row-actions{display:flex;gap:12px;flex:0 0 auto}.lcm-row-actions a{text-decoration:none;font-weight:700}.lcm-row-actions .is-destructive{color:#a13d34}.lcm-health-egg-warning{margin:14px 0}.lcm-health-egg-warning p{margin:4px 0 0}
@media(max-width:980px){.lcm-health-action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){
  .lcm-health-action-grid{grid-template-columns:1fr}
  /*
   * 2026-08-03 (v3.6.5) : sur mobile, le libellé de droite (« Aucune
   * observation en cours », « 1 en cours »...) est resté forcé sur une seule
   * ligne (white-space:nowrap, hérité de la version bureau) alors que la
   * carte n'a plus la place pour l'afficher entier à côté du texte — le
   * libellé débordait hors de l'écran et coupait toute la carte (retour
   * utilisateur avec capture d'écran). Sur cette largeur, on passe la carte
   * en colonne : icône + titre/description en haut, libellé sur sa propre
   * ligne en dessous, avec un retour à la ligne autorisé.
   */
  .lcm-health-action-card{padding:18px;flex-wrap:wrap}
  .lcm-health-action-card small{flex-basis:100%;margin-top:8px;padding-left:60px;white-space:normal}
  .lcm-health-timeline article{flex-wrap:wrap}.lcm-row-actions{width:100%;padding-left:26px}
}
.lcm-stock-explainer{display:flex;align-items:center;gap:14px;background:#f1f7f3}.lcm-stock-explainer>div{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border-radius:12px;background:#dfeee4;color:var(--lcm-green,#315b48)}.lcm-stock-explainer p{margin:0}.lcm-stock-stats{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}.lcm-laying-history-main{min-width:0}.lcm-laying-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:7px}.lcm-laying-meta>span{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:999px;background:#f5f4ef;color:#73796f;font-size:11px;line-height:1.3}.lcm-laying-meta .is-source{background:#eaf3ed;color:#315b48;font-weight:800}.lcm-laying-meta .dashicons{width:14px;height:14px;font-size:14px}@media(max-width:640px){.lcm-stock-explainer{align-items:flex-start}.lcm-laying-meta>span:nth-child(2){display:none}}
.lcm-stock-movements{display:grid}.lcm-stock-movements article{display:flex;align-items:center;gap:13px;padding:14px 0;border-bottom:1px solid var(--lcm-border,#ebe8df)}.lcm-stock-movements article:last-child{border-bottom:0}.lcm-stock-movements article>div:nth-child(2){flex:1;min-width:0}.lcm-stock-movements strong,.lcm-stock-movements small{display:block}.lcm-stock-movements small{margin-top:3px;color:var(--lcm-text-soft,#657068)}.lcm-stock-movement-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#edf3ee;color:#365d46;flex:0 0 auto}.lcm-stock-movements button{border:0;background:none;padding:0;font:inherit;font-weight:700;cursor:pointer}@media(max-width:640px){.lcm-stock-movements article{align-items:flex-start;flex-wrap:wrap}.lcm-stock-movements .lcm-row-actions{padding-left:51px}.lcm-stock-movements .lcm-row-actions form{margin:0}}

/* v3.2.4 — formulaires terrain plus chaleureux et moins administratifs */
.lcm-stock-use-card{overflow:hidden;background:linear-gradient(145deg,#fff 0%,#fbfaf5 100%)}.lcm-stock-use-card .lcm-app-card-heading{align-items:flex-start}.lcm-stock-use-card .lcm-app-card-heading p{margin:6px 0 0;color:var(--lcm-ink-soft,#657068)}.lcm-stock-use-form{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(120px,.45fr) minmax(220px,1.2fr) auto;gap:12px;align-items:end;padding:18px;border:1px solid #e7e5dd;border-radius:17px;background:#f6f7f2}.lcm-stock-use-form label>span{display:flex;justify-content:space-between;margin:0 2px 7px;color:#465249;font-size:12px;font-weight:800}.lcm-stock-use-form label>span small{color:#889087;font-weight:600}.lcm-stock-use-form input,.lcm-stock-use-form select{margin-top:0!important;min-height:50px!important;border-color:#d8ded7!important;border-radius:13px!important;background-color:#fff!important}.lcm-stock-use-form select{cursor:pointer}.lcm-stock-use-form .lcm-stock-quantity input{text-align:center;font-size:18px;font-weight:800}.lcm-stock-use-form .lcm-app-button{min-height:50px;border-radius:13px}
.lcm-animal-filters{background:linear-gradient(145deg,#fff,#faf9f4)}.lcm-animal-filters form{gap:10px!important}.lcm-animal-filters form label{display:grid;align-content:end;min-width:0;padding:10px 11px 11px;border:1px solid #e5e6df;border-radius:14px;background:#f7f8f4;color:#5d675f;font-size:11px;font-weight:800}.lcm-animal-filters form label:first-of-type{position:relative;grid-column:span 2;background:#edf4ef;border-color:#d7e4da}.lcm-animal-filters form input,.lcm-animal-filters form select{margin-top:6px!important;border-color:transparent!important;background-color:#fff!important;border-radius:11px!important}.lcm-animal-filters form input:focus,.lcm-animal-filters form select:focus{border-color:var(--lcm-gold)!important}.lcm-animal-filters .lcm-filter-actions{align-self:stretch;padding:8px;border-radius:14px;background:#f0f2ed}.lcm-animal-filters .lcm-filter-actions a{padding:10px;color:#657068;text-align:center;text-decoration:none;font-weight:700}
.lcm-bulk-toolbar{margin:0 0 10px;padding:12px 14px!important;border:1px solid #e3e6df!important;border-radius:15px;background:#f6f7f3}.lcm-bulk-toolbar label{display:flex;align-items:center;gap:9px;padding:0!important;border:0!important;background:none!important;font-weight:800}.lcm-bulk-toolbar select{min-height:42px!important;margin:0!important;border-color:#d9ded7!important;border-radius:11px!important;background-color:#fff!important}.lcm-app-shell input[type=checkbox]{appearance:none;width:20px;height:20px;margin:0;border:2px solid #bdc8c0;border-radius:6px;background:#fff;display:inline-grid;place-content:center;vertical-align:middle;cursor:pointer}.lcm-app-shell input[type=checkbox]:checked{border-color:var(--lcm-forest);background:var(--lcm-forest)}.lcm-app-shell input[type=checkbox]:checked:after{content:"✓";color:#fff;font-size:14px;font-weight:900;line-height:1}.lcm-row-check{display:grid;place-items:center}
@media(max-width:1050px){.lcm-stock-use-form{grid-template-columns:1fr 1fr}.lcm-stock-note{grid-column:1/-1}.lcm-stock-use-form .lcm-app-button{width:100%}}
@media(max-width:640px){.lcm-stock-use-form{grid-template-columns:1fr;padding:14px}.lcm-stock-note{grid-column:auto}.lcm-animal-filters form label:first-of-type{grid-column:auto}.lcm-bulk-toolbar{padding:12px!important}}

/* v3.2.5 — densité naturelle, sans effet tableur */
.lcm-app-shell input:not([type=checkbox]):not([type=radio]):not([type=hidden]),.lcm-app-shell select{min-height:40px;padding:8px 10px;border-radius:8px}.lcm-animal-filters{padding:20px;background:#fff}.lcm-animal-filters form{grid-template-columns:minmax(210px,1.5fr) repeat(4,minmax(125px,1fr))!important;gap:14px 16px!important}.lcm-animal-filters form label,.lcm-animal-filters form label:first-of-type{display:block;grid-column:auto;padding:0;border:0;border-radius:0;background:transparent;color:#626b64;font-size:12px;font-weight:750}.lcm-animal-filters form label:first-of-type{grid-column:span 2}.lcm-animal-filters form input,.lcm-animal-filters form select{margin-top:5px!important;border:0!important;border-bottom:1px solid #ccd3cd!important;border-radius:0!important;background:#fafbf9!important;box-shadow:none!important}.lcm-animal-filters form input:focus,.lcm-animal-filters form select:focus{border-bottom-color:var(--lcm-forest)!important;background:#fff!important;box-shadow:0 3px 0 rgba(49,91,72,.08)!important}.lcm-animal-filters .lcm-filter-actions{align-self:end;display:flex;padding:0;border:0;border-radius:0;background:transparent}.lcm-animal-filters .lcm-filter-actions .lcm-app-button{min-height:40px}.lcm-bulk-toolbar{padding:8px 0!important;border:0!important;border-bottom:1px solid #e5e8e2!important;border-radius:0;background:transparent}.lcm-bulk-toolbar select{min-height:38px!important;border:0!important;border-bottom:1px solid #cdd4ce!important;border-radius:0!important;background:#fff!important}.lcm-app-shell input[type=checkbox]{width:15px;height:15px;border-width:1.5px;border-radius:4px}.lcm-app-shell input[type=checkbox]:checked:after{font-size:10px}.lcm-row-check{min-width:20px}.lcm-stock-use-form{padding:14px 0;border:0;border-top:1px solid #e5e8e2;border-radius:0;background:transparent}.lcm-stock-use-form input,.lcm-stock-use-form select{min-height:42px!important;border:0!important;border-bottom:1px solid #ccd3cd!important;border-radius:0!important;background:#fafbf9!important}.lcm-dashboard-widgets{display:flex;flex-direction:column}.lcm-dashboard-customizer .lcm-widget-order-list{display:grid;margin:18px 0}.lcm-widget-order-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid #e7e8e3}.lcm-widget-order-row label{display:flex!important;align-items:center;gap:10px;flex:1;padding:0!important}.lcm-widget-order-row>div{display:flex;gap:5px}.lcm-widget-order-row>div button{display:grid;place-items:center;width:31px;height:31px;border:1px solid #d8ddd8;border-radius:8px;background:#fff;color:#3f5e4c;cursor:pointer;font-size:16px}.lcm-dashboard-customizer form>.lcm-dashboard-customizer-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
@media(max-width:900px){.lcm-animal-filters form{grid-template-columns:repeat(2,minmax(0,1fr))!important}.lcm-animal-filters form label:first-of-type{grid-column:1/-1}}
@media(max-width:560px){.lcm-animal-filters form{grid-template-columns:1fr!important}.lcm-animal-filters form label:first-of-type{grid-column:auto}.lcm-bulk-toolbar{gap:9px}.lcm-bulk-toolbar label{width:100%}}

/* v3.2.6 — recherche progressive et contrôles natifs */
.lcm-animal-filters{padding:18px 20px!important}.lcm-animal-filters form{display:block!important}.lcm-filter-primary{display:flex;align-items:stretch;gap:10px;max-width:820px}.lcm-filter-primary label,.lcm-animal-filters form .lcm-filter-primary label:first-of-type{position:relative;display:block;flex:1;padding:0;border:0;background:transparent}.lcm-filter-primary label>.dashicons{position:absolute;z-index:1;top:50%;left:13px;width:18px;height:18px;margin-top:-9px;color:#718078;font-size:18px;pointer-events:none}.lcm-filter-primary input[type=search],.lcm-animal-filters form .lcm-filter-primary input[type=search]{height:44px;min-height:44px!important;margin:0!important;padding:9px 14px 9px 41px!important;border:1px solid #d8ded9!important;border-radius:10px!important;background:#fff!important;box-shadow:0 2px 8px rgba(42,65,51,.04)!important;font-size:14px}.lcm-filter-primary input[type=search]:focus{border-color:#6f927e!important;box-shadow:0 0 0 3px rgba(49,91,72,.09)!important}.lcm-filter-primary .lcm-app-button{min-height:44px;box-shadow:none}.lcm-filter-drawer{margin-top:12px;border-top:1px solid #e8ebe7}.lcm-filter-drawer>summary{display:flex;align-items:center;gap:10px;width:max-content;padding:12px 2px 3px;color:#315b48;cursor:pointer;font-size:13px;font-weight:800;list-style:none}.lcm-filter-drawer>summary::-webkit-details-marker{display:none}.lcm-filter-drawer>summary:before{content:"+";display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#edf3ef;font-size:15px}.lcm-filter-drawer[open]>summary:before{content:"−"}.lcm-filter-drawer>summary small{color:#89928c;font-size:11px;font-weight:600}.lcm-filter-drawer-grid{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:13px 18px;padding:16px 0 4px}.lcm-animal-filters .lcm-filter-drawer-grid label,.lcm-animal-filters form .lcm-filter-drawer-grid label:first-of-type{display:block;padding:0;border:0;background:transparent;color:#646d66;font-size:11px;font-weight:750}.lcm-filter-drawer-grid select,.lcm-animal-filters form .lcm-filter-drawer-grid select{height:36px;min-height:36px!important;margin:4px 0 0!important;padding:5px 28px 5px 8px!important;border:1px solid #dfe3df!important;border-radius:7px!important;background-color:#fff!important;font-size:13px}.lcm-filter-drawer .lcm-filter-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:12px;padding:12px 0 0;border-top:1px solid #eceeea}.lcm-filter-drawer .lcm-filter-actions a{color:#737d76;text-decoration:none;font-size:12px;font-weight:700}.lcm-filter-drawer .lcm-filter-actions .lcm-app-button{min-height:38px;padding:8px 13px}
.lcm-app-shell input[type=checkbox],.lcm-app-shell input[type=radio]{appearance:auto!important;-webkit-appearance:auto!important;display:inline-block!important;width:14px!important;min-width:14px!important;max-width:14px!important;height:14px!important;min-height:14px!important;max-height:14px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;accent-color:var(--lcm-forest);vertical-align:middle}.lcm-app-shell input[type=checkbox]:after,.lcm-app-shell input[type=radio]:after{content:none!important}.lcm-row-check{display:flex!important;align-items:center;justify-content:center;width:24px;height:24px;min-width:24px}.lcm-bulk-toolbar label{min-height:32px}.lcm-installation-types label{padding:8px 10px;border-radius:8px}
@media(max-width:900px){.lcm-filter-drawer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.lcm-animal-filters{padding:14px!important}.lcm-filter-primary{display:grid;grid-template-columns:1fr}.lcm-filter-primary .lcm-app-button{width:100%}.lcm-filter-drawer>summary{align-items:flex-start;flex-wrap:wrap}.lcm-filter-drawer>summary small{width:100%;padding-left:30px}.lcm-filter-drawer-grid{grid-template-columns:1fr}.lcm-filter-drawer .lcm-filter-actions{align-items:stretch;flex-direction:column-reverse}.lcm-filter-drawer .lcm-filter-actions .lcm-app-button{width:100%}}

/* 2026-08-03 — .lcm-module-tabs n'avait jamais été stylé (bug déjà présent avant
   l'ajout des onglets Vermifuge/Maladies, mais devenu très visible avec 9 onglets :
   les libellés s'affichaient collés les uns aux autres, sans espacement). */
.lcm-module-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 22px;padding:6px;border-radius:14px;background:#f3f4ee;overflow-x:auto}
.lcm-module-tabs a{display:inline-block;padding:9px 14px;border-radius:10px;color:#4c5c4f;font-weight:700;font-size:13px;line-height:1.3;text-decoration:none;white-space:nowrap}
.lcm-module-tabs a:hover{background:#e7e9df}
.lcm-module-tabs a.is-active{background:#fff;color:var(--lcm-forest,#315b48);box-shadow:0 2px 6px rgba(45,57,49,.12)}
@media(max-width:640px){.lcm-module-tabs{flex-wrap:nowrap}}

/* Santé v2.3.0 — niveaux d'alerte, catalogue de maladies, ordonnances, suggestions */
.lcm-app-hint{margin:0 0 14px;padding:11px 14px;border-radius:11px;background:#f3f4ee;color:#5d675f;font-size:13px;line-height:1.5}
/* 2026-08-24 (v4.69.0) : demande utilisateur — les checklists (cases à cocher) « font trop Excel », restylées sur le même principe que .lcm-target-option (lignes arrondies dans un encadré, surbrillance à la coche, icône optionnelle) plutôt qu'une simple liste séparée par des filets. */
.lcm-checkbox-field{display:flex!important;align-items:center;gap:11px;flex-direction:row!important;padding:9px 12px!important;border-radius:10px;font-weight:600;font-size:13px;cursor:pointer;transition:background .15s}
.lcm-checkbox-field:hover{background:var(--lcm-forest-soft,#eef4ef)}
.lcm-checkbox-field:has(input:checked){background:var(--lcm-forest-soft,#eef4ef);font-weight:800}
.lcm-checkbox-field input[type=checkbox]{width:18px;height:18px;flex:0 0 auto;accent-color:var(--lcm-green,#315b48)}
.lcm-checkbox-field-icon{font-size:15px;flex:0 0 auto}
.lcm-health-alert-badge{display:inline-block;margin:4px 0;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:800;line-height:1.7}
.lcm-health-alert-badge.is-level-1{background:#eef2ec;color:#4c5c4f}
.lcm-health-alert-badge.is-level-2{background:#fbeecb;color:#8a5a12}
.lcm-health-alert-badge.is-level-3{background:#f8e0dc;color:#a13d34}
.lcm-health-timeline article.is-level-2 .lcm-health-dot{background:#c98a2c;box-shadow:0 0 0 5px #fbeecb}
.lcm-health-timeline article.is-level-3 .lcm-health-dot{background:#a13d34;box-shadow:0 0 0 5px #f8e0dc}
.lcm-health-suggestions ul{margin:8px 0 0;padding-left:18px}
.lcm-health-suggestions li{margin:3px 0}
.lcm-health-suggestions .lcm-app-notice ul{color:inherit}
.lcm-health-tags{margin:2px 0 0;font-size:12px;color:#5d675f;font-weight:600}
.lcm-health-record-detail{margin-top:8px;font-size:13px}
.lcm-health-record-detail summary{cursor:pointer;color:#3f6b4a;font-weight:700}
/*
 * 2026-08-03 (v3.6.3) : retour utilisateur — la grille à 2 colonnes plaçait
 * les paires label/valeur côte à côte en zigzag (« Statut » et « Fin prévue »
 * sur la même ligne, puis « Motif » et « Notes » sur la suivante), un effet
 * « tableau Excel » jugé pas joli. Chaque ligne (le <div> qui enveloppe un
 * <dt>/<dd>) est maintenant empilée verticalement sur toute la largeur, et le
 * panneau reprend la même décoration (fond, bordure, coins arrondis) que les
 * sections du formulaire « Nouveau suivi » (.lcm-health-form-section) pour
 * une esthétique cohérente entre affichage et édition.
 */
.lcm-health-record-detail dl{margin:10px 0 0;display:grid;gap:12px;padding:14px 16px;border:1px solid var(--lcm-line,#e5e0d5);border-radius:16px;background:#fcfbf7}
.lcm-health-record-detail dl>div{display:grid;gap:3px}
.lcm-health-record-detail dt{color:#7c8478;font-weight:800;font-size:.68rem;text-transform:uppercase;letter-spacing:.03em}
.lcm-health-record-detail dd{margin:0;color:var(--lcm-ink,#20251f);font-size:.88rem;line-height:1.5}

/* v3.6.0 — bandeau d'onglets retiré, menu « Ajouter un suivi » et bouton retour */
.lcm-health-add-menu{position:relative}
.lcm-health-add-menu summary{list-style:none;cursor:pointer}
.lcm-health-add-menu summary::-webkit-details-marker{display:none}
.lcm-health-add-menu-panel{position:absolute;right:0;z-index:20;display:grid;gap:4px;width:min(320px,90vw);margin-top:8px;padding:8px;border:1px solid var(--lcm-line,#e5e0d5);border-radius:16px;background:var(--lcm-paper,#fff);box-shadow:0 16px 46px rgba(25,37,29,.14)}
.lcm-health-add-menu-panel a{display:grid;grid-template-columns:38px 1fr;align-items:center;gap:11px;padding:10px;border-radius:12px;color:inherit;text-decoration:none}
.lcm-health-add-menu-panel a:hover{background:#f3f4ee}
.lcm-health-add-menu-panel a>.dashicons{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--lcm-forest-soft,#e3ece6);color:var(--lcm-forest,#0f3b2e)}
.lcm-health-add-menu-panel strong{display:block;font-size:13px}
.lcm-health-add-menu-panel small{display:block;margin-top:2px;color:#69736c;font-size:11px;line-height:1.4}
.lcm-health-back{display:inline-block;margin-bottom:14px}
.lcm-health-form{display:grid;gap:18px}
.lcm-health-form-section{display:grid;gap:14px;padding:16px;border:1px solid var(--lcm-line,#e5e0d5);border-radius:16px;background:#fcfbf7}
.lcm-health-form-section h3{display:flex;align-items:center;gap:8px;margin:0;color:var(--lcm-ink,#20251f);font-size:.86rem;font-weight:800}
.lcm-health-form-section h3 .dashicons{color:var(--lcm-gold,#d4aa3b)}
.lcm-health-form-section h3 small{margin-left:2px;color:#7c8478;font-size:.7rem;font-weight:500;text-transform:none}
.lcm-health-form-section .lcm-app-hint{margin:0}
.lcm-health-form>button.lcm-app-button{justify-self:start}

/*
 * 2026-08-03 (v3.7.0) : ce vocabulaire visuel (menu « Ajouter », lien retour,
 * formulaire en sections icônées) créé pour Santé v3.6.0 est réutilisé pour
 * Reproduction. Plutôt que dupliquer les règles avec un préfixe différent, on
 * étend les mêmes sélecteurs avec un alias générique « lcm-app-* » — Santé
 * garde son balisage « lcm-health-* » inchangé, Reproduction (et les
 * prochains modules) peuvent utiliser directement les classes génériques.
 */
.lcm-health-add-menu,.lcm-app-add-menu{position:relative}
.lcm-health-add-menu summary,.lcm-app-add-menu summary{list-style:none;cursor:pointer}
.lcm-health-add-menu summary::-webkit-details-marker,.lcm-app-add-menu summary::-webkit-details-marker{display:none}
.lcm-health-add-menu-panel,.lcm-app-add-menu-panel{position:absolute;right:0;z-index:20;display:grid;gap:4px;width:min(320px,90vw);margin-top:8px;padding:8px;border:1px solid var(--lcm-line,#e5e0d5);border-radius:16px;background:var(--lcm-paper,#fff);box-shadow:0 16px 46px rgba(25,37,29,.14)}
.lcm-health-add-menu-panel a,.lcm-app-add-menu-panel a{display:grid;grid-template-columns:38px 1fr;align-items:center;gap:11px;padding:10px;border-radius:12px;color:inherit;text-decoration:none}
.lcm-health-add-menu-panel a:hover,.lcm-app-add-menu-panel a:hover{background:#f3f4ee}
.lcm-health-add-menu-panel a>.dashicons,.lcm-app-add-menu-panel a>.dashicons{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--lcm-forest-soft,#e3ece6);color:var(--lcm-forest,#0f3b2e)}
.lcm-health-add-menu-panel strong,.lcm-app-add-menu-panel strong{display:block;font-size:13px}
.lcm-health-add-menu-panel small,.lcm-app-add-menu-panel small{display:block;margin-top:2px;color:#69736c;font-size:11px;line-height:1.4}
/* 2026-08-05 (v3.7.4) : menu « Ajouter un suivi » réduit à 3 choix visibles + un tiroir « Autres suivis » pour les 3 restants. */
.lcm-health-add-menu-more{margin-top:4px;padding-top:8px;border-top:1px solid var(--lcm-line,#e5e0d5)}
.lcm-health-add-menu-more>summary{cursor:pointer;list-style:none;padding:4px 10px 8px;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#8a9086}
.lcm-health-add-menu-more>summary::-webkit-details-marker{display:none}
/* 2026-08-05 (v3.7.5) : « Ajouter un suivi » (santé) et « Ajouter un entretien » (installations) sont deux boutons distincts, groupés pour garder la mise en page en 2 blocs (titre | actions) du page-heading. */
.lcm-health-add-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
/* 2026-08-07 (v3.8.0) : refonte de la Vue d'ensemble Santé en historique « tickets »
   (actif/archivé) au lieu des cartes « Suivi du jour »/« Catalogue et Rappels ». */
.lcm-health-tickets{display:grid;gap:10px;margin:0 0 26px}
.lcm-health-tickets-empty{margin:0 0 26px;padding:16px;border:1px dashed var(--lcm-line,#e5e0d5);border-radius:14px;color:#7c8478;font-size:13px;text-align:center}
.lcm-health-ticket{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border:1px solid var(--lcm-line,#e5e0d5);border-left-width:4px;border-radius:14px;background:#fff;color:inherit;text-decoration:none;box-shadow:0 4px 14px rgba(45,57,49,.05);transition:transform .16s ease,box-shadow .16s ease}
.lcm-health-ticket:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(45,57,49,.09)}
.lcm-health-ticket-dot{flex:0 0 auto;width:10px;height:10px;margin-top:5px;border-radius:50%}
.lcm-health-ticket-body{flex:1 1 auto;min-width:0;display:grid;gap:2px}
.lcm-health-ticket-title{font-weight:800;font-size:13.5px;color:var(--lcm-ink,#20251f)}
.lcm-health-ticket-target{font-size:12px;color:#5d675f}
.lcm-health-ticket-dates{flex:0 0 auto;align-self:center;font-size:11px;font-weight:700;color:#7c8478;text-align:right;white-space:nowrap}
.lcm-health-ticket.is-green{border-left-color:var(--lcm-primary,#315c49)}
.lcm-health-ticket.is-green .lcm-health-ticket-dot{background:var(--lcm-primary,#315c49);box-shadow:0 0 0 4px var(--lcm-primary-soft,#eaf3ee)}
.lcm-health-ticket.is-yellow{border-left-color:var(--lcm-yellow,#b8922a)}
.lcm-health-ticket.is-yellow .lcm-health-ticket-dot{background:var(--lcm-yellow,#b8922a);box-shadow:0 0 0 4px var(--lcm-yellow-soft,#fbf1d4)}
.lcm-health-ticket.is-red{border-left-color:var(--lcm-rose,#c96c72)}
.lcm-health-ticket.is-red .lcm-health-ticket-dot{background:var(--lcm-rose,#c96c72);box-shadow:0 0 0 4px var(--lcm-rose-soft,#fff0f1)}
.lcm-health-ticket.is-blue{border-left-color:var(--lcm-blue,#5d83ae)}
.lcm-health-ticket.is-blue .lcm-health-ticket-dot{background:var(--lcm-blue,#5d83ae);box-shadow:0 0 0 4px var(--lcm-blue-soft,#edf4fb)}
.lcm-health-ticket.is-slate{border-left-color:var(--lcm-slate,#5c6a72)}
.lcm-health-ticket.is-slate .lcm-health-ticket-dot{background:var(--lcm-slate,#5c6a72);box-shadow:0 0 0 4px var(--lcm-slate-soft,#eaeef0)}
.lcm-health-section-title{margin:0 0 12px;font-size:.86rem;font-weight:800;color:var(--lcm-ink,#20251f);display:flex;align-items:center;gap:8px}
.lcm-health-section-title .dashicons{color:var(--lcm-gold,#d4aa3b)}
@media(max-width:640px){.lcm-health-ticket{flex-wrap:wrap}.lcm-health-ticket-dates{margin-left:22px}}
.lcm-health-back,.lcm-app-back{display:inline-block;margin-bottom:14px}
.lcm-health-form,.lcm-app-form{display:grid;gap:18px}
.lcm-health-form-section,.lcm-app-form-section{display:grid;gap:14px;padding:16px;border:1px solid var(--lcm-line,#e5e0d5);border-radius:16px;background:#fcfbf7}
.lcm-health-form-section h3,.lcm-app-form-section h3{display:flex;align-items:center;gap:8px;margin:0;color:var(--lcm-ink,#20251f);font-size:.86rem;font-weight:800}
.lcm-health-form-section h3 .dashicons,.lcm-app-form-section h3 .dashicons{color:var(--lcm-gold,#d4aa3b)}
.lcm-health-form-section h3 small,.lcm-app-form-section h3 small{margin-left:2px;color:#7c8478;font-size:.7rem;font-weight:500;text-transform:none}
.lcm-health-form-section .lcm-app-hint,.lcm-app-form-section .lcm-app-hint{margin:0}
.lcm-health-form>button.lcm-app-button,.lcm-app-form>button.lcm-app-button{justify-self:start}
/* 2026-08-04 (v3.7.3) : formulaire de suivi simplifié — champs secondaires repliés dans un <details>, même habillage que .lcm-health-form-section mais l'en-tête est un <summary> cliquable. */
.lcm-health-form-more>summary{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--lcm-ink,#20251f);font-size:.86rem;font-weight:800;list-style:none}
.lcm-health-form-more>summary::-webkit-details-marker{display:none}
.lcm-health-form-more>summary .dashicons{color:var(--lcm-gold,#d4aa3b)}
.lcm-health-form-more>summary small{margin-left:2px;color:#7c8478;font-size:.7rem;font-weight:500;text-transform:none}
.lcm-health-form-more[open]>summary{margin-bottom:2px}
.lcm-health-action-grid,.lcm-app-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0 0 24px}
.lcm-app-action-grid.is-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.lcm-health-action-card,.lcm-app-action-card{display:flex;align-items:flex-start;gap:16px;padding:22px;border:1px solid var(--lcm-border,#dedbd2);border-radius:18px;background:var(--lcm-surface,#fff);color:inherit;text-decoration:none;box-shadow:var(--lcm-shadow,0 10px 30px rgba(45,57,49,.08));transition:transform .18s ease,border-color .18s ease}
.lcm-health-action-card:hover,.lcm-app-action-card:hover{transform:translateY(-2px);border-color:var(--lcm-gold,#b78938)}
.lcm-health-action-card>.dashicons,.lcm-app-action-card>.dashicons{width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:#edf2ec;color:#365d46;font-size:22px}
.lcm-health-action-card div,.lcm-app-action-card div{flex:1}
.lcm-health-action-card strong,.lcm-app-action-card strong{display:block;font-size:17px}
.lcm-health-action-card p,.lcm-app-action-card p{margin:7px 0 0;color:var(--lcm-text-soft,#657068);line-height:1.5}
.lcm-health-action-card small,.lcm-app-action-card small{color:var(--lcm-gold,#9c742f);font-weight:700;white-space:nowrap}
@media(max-width:980px){.lcm-health-action-grid,.lcm-app-action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){
  .lcm-health-action-grid,.lcm-app-action-grid{grid-template-columns:1fr}
  .lcm-health-action-card,.lcm-app-action-card{padding:18px;flex-wrap:wrap}
  .lcm-health-action-card small,.lcm-app-action-card small{flex-basis:100%;margin-top:8px;padding-left:60px;white-space:normal}
}

/* v3.7.0 — Reproduction : liste de cases à cocher pour sélectionner des volailles,
   plus utilisable au doigt qu'un <select multiple> natif. Gap resserré en v4.69.0 (rangées arrondies au lieu de filets). */
.lcm-app-checkbox-list{display:flex;flex-direction:column;gap:4px;max-height:250px;overflow-y:auto;padding:6px;border:1px solid #d7d2c7;border-radius:13px;background:#fff}
/* 2026-08-23 (v4.64.0) : sélecteur cible Entretien/Santé en cases à cocher (boutons radio) groupées par installation, plutôt qu'un menu déroulant à plat. */
.lcm-form-field-wide{grid-column:1/-1}
.lcm-target-picker{display:flex;flex-direction:column;gap:4px;max-height:320px;overflow-y:auto;padding:6px;border:1px solid #d7d2c7;border-radius:13px;background:#fff;margin-top:6px}
.lcm-target-option{display:flex!important;align-items:center;gap:10px;flex-direction:row!important;padding:9px 12px!important;border-radius:10px;font-weight:600;font-size:13px;cursor:pointer;transition:background .15s}
.lcm-target-option:hover{background:var(--lcm-forest-soft,#eef4ef)}
.lcm-target-option input[type=radio]{width:16px;height:16px;flex:0 0 auto}
.lcm-target-option:has(input:checked){background:var(--lcm-forest-soft,#eef4ef);font-weight:800}
.lcm-target-option-icon{font-size:15px;flex:0 0 auto}
.lcm-target-option.is-zone{margin-left:26px;padding:6px 12px!important;font-weight:500;font-size:12.5px}
.lcm-target-option.is-zone .lcm-target-option-icon{color:var(--lcm-muted,#746f66)}
/* 2026-08-24 (v4.66.0) : accordéon des sous-espaces dans les pickers installation+zone (Santé, fiche volaille), repliés par défaut. */
.lcm-target-group{display:flex;flex-direction:column}
.lcm-target-option-row{display:flex;align-items:center;gap:4px}
.lcm-target-option-row .lcm-target-option{flex:1}
.lcm-target-toggle{flex:0 0 auto;display:grid;place-items:center;width:30px;height:30px;border:0;border-radius:9px;background:transparent;color:var(--lcm-muted,#746f66);cursor:pointer;transition:background .15s,transform .15s}
.lcm-target-toggle:hover{background:var(--lcm-forest-soft,#eef4ef);color:var(--lcm-green,#315b48)}
.lcm-target-toggle .dashicons{transition:transform .15s}
.lcm-target-toggle[aria-expanded=true] .dashicons{transform:rotate(180deg)}
.lcm-target-zones{display:flex;flex-direction:column;gap:2px;margin:2px 0 4px}
.lcm-target-picker-searchable{padding:0;border:0;background:transparent;gap:0;max-height:none}
.lcm-target-picker-search{width:100%;margin-bottom:6px;padding:9px 12px!important}
.lcm-target-picker-list{display:flex;flex-direction:column;gap:4px;max-height:280px;overflow-y:auto;padding:6px;border:1px solid #d7d2c7;border-radius:13px;background:#fff}
.lcm-target-picker-list .lcm-target-option{font-size:13px}
.lcm-app-checkbox-list .lcm-app-empty{margin:0;padding:8px 6px;color:#7c8478;font-size:12.5px}

/* 2026-08-09 — Planning : vue calendrier mensuelle (tâches + rappels Santé/Reproduction),
   voir LCM_Planning::render_app_calendar() / calendar_month_data(). */
.lcm-app-calendar{margin-bottom:22px}
.lcm-app-calendar .lcm-app-card-heading{flex-wrap:wrap;gap:10px}
.lcm-app-calendar-nav{display:flex;align-items:center;gap:14px}
.lcm-app-calendar-nav strong{text-transform:capitalize;font-size:.92rem;min-width:110px;text-align:center}
.lcm-app-calendar-nav a{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;border:1px solid var(--lcm-line);color:var(--lcm-ink);text-decoration:none;font-size:1rem}
.lcm-app-calendar-nav a:hover{background:var(--lcm-cream)}
.lcm-app-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.lcm-app-calendar-head{text-align:center;font-size:.7rem;font-weight:700;color:var(--lcm-ink-soft);padding:2px 0 6px}
/* 2026-08-10 : les jours deviennent cliquables (voir render_app_day_detail()) —
   .lcm-app-calendar-day est maintenant un <a>, sauf les cases vides de début de mois
   qui restent des <div> sans lien. */
.lcm-app-calendar-day{min-height:52px;padding:5px 4px;border-radius:10px;background:var(--lcm-cream);display:flex;flex-direction:column;gap:4px;text-decoration:none;color:inherit;cursor:pointer;border:2px solid transparent;transition:border-color .14s ease,transform .14s ease}
.lcm-app-calendar-day:hover{border-color:var(--lcm-gold);transform:translateY(-1px)}
.lcm-app-calendar-day.is-empty{background:transparent;cursor:default;pointer-events:none}
.lcm-app-calendar-day.is-today{background:var(--lcm-forest);color:#fff}
.lcm-app-calendar-day.is-today .lcm-app-calendar-number{color:#fff}
.lcm-app-calendar-day.is-selected{border-color:var(--lcm-forest)}
.lcm-app-calendar-day.is-today.is-selected{border-color:var(--lcm-gold)}
.lcm-app-calendar-number{font-size:.76rem;font-weight:700}
.lcm-app-calendar-dots{display:flex;flex-wrap:wrap;gap:3px}
.lcm-app-calendar-dot{width:6px;height:6px;border-radius:50%;background:var(--lcm-forest);display:inline-block}
.lcm-app-calendar-dot.is-reminder{background:var(--lcm-gold)}
.lcm-app-calendar-dot.is-done{opacity:.35}
.lcm-app-calendar-day.is-today .lcm-app-calendar-dot{background:#fff}
.lcm-app-calendar-day.is-today .lcm-app-calendar-dot.is-reminder{background:var(--lcm-gold-soft,#f7ecd3)}
.lcm-app-calendar-legend{display:flex;flex-wrap:wrap;gap:16px;margin:12px 0 0;font-size:.78rem;color:var(--lcm-ink-soft)}
.lcm-app-calendar-legend span{display:inline-flex;align-items:center;gap:6px}
.lcm-app-calendar-legend i{width:8px;height:8px;border-radius:50%;background:var(--lcm-forest);display:inline-block;font-style:normal}
.lcm-app-calendar-legend i.is-reminder{background:var(--lcm-gold)}
@media(max-width:640px){
  .lcm-app-calendar-day{min-height:40px;padding:4px 3px}
  .lcm-app-calendar-nav strong{min-width:90px;font-size:.85rem}
}

/* 2026-08-10 — Planning : détail d'un jour cliqué (render_app_day_detail()). */
.lcm-app-day-detail{margin-bottom:22px}
.lcm-app-day-detail h2{text-transform:capitalize}

/* 2026-08-10 — Planning : panneau « + Ajouter » combiné (Tâche/Routine), remplace les
   anciennes cartes séparées « Nouvelle tâche »/« Nouvelle routine » (voir
   render_app_add_panel() et le toggle JS correspondant dans app.js, data-lcm-add-tab). */
.lcm-app-add-panel > summary{cursor:pointer;list-style:none;font-weight:750;color:var(--lcm-forest)}
.lcm-app-add-panel > summary::-webkit-details-marker{display:none}
.lcm-app-add-panel[open] > summary{margin-bottom:14px}
.lcm-app-add-tabs{display:flex;gap:4px;padding:4px;margin-bottom:16px;background:var(--lcm-cream);border-radius:12px}
.lcm-app-add-tabs button{flex:1;padding:8px 12px;border:0;border-radius:9px;background:transparent;color:var(--lcm-ink-soft);font:inherit;font-weight:700;cursor:pointer}
.lcm-app-add-tabs button.is-active{background:#fff;color:var(--lcm-forest);box-shadow:0 2px 8px rgba(35,55,42,.09)}

/* 2026-08-10 — retour utilisateur (Production & Stock) : le déclencheur « + Ajouter »
   (simple texte vert sur la carte) ne ressemblait pas à un vrai bouton et se distinguait
   mal. Variante `.is-button` : replié, il prend l'apparence d'un vrai bouton plein (fond
   vert, texte blanc, même style que .lcm-app-button utilisé partout ailleurs pour les
   actions principales) ; ouvert, il redevient une carte classique. Modificateur isolé
   (n'affecte pas le panneau « + Ajouter » de Planning, qui garde son style texte simple). */
.lcm-app-add-panel.is-button{margin-bottom:16px}
.lcm-app-add-panel.is-button:not([open]){padding:0;border:0;background:transparent;box-shadow:none;display:inline-block}
.lcm-app-add-panel.is-button:not([open]) > summary{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;border-radius:11px;background:var(--lcm-forest);color:#fff!important;font-weight:700;box-shadow:0 5px 14px rgba(35,75,59,.16)}
.lcm-app-add-panel.is-button:not([open]) > summary:hover{background:var(--lcm-forest-strong)}
/*
 * 2026-08-10 : correctif — replié, le panneau doit rester un petit bouton
 * aligné à droite (ci-dessus), mais UNE FOIS OUVERT il doit redevenir un
 * bloc plein largeur comme n'importe quelle carte, sinon le formulaire
 * reste coincé dans la largeur/l'alignement à droite du bouton fermé,
 * avec tout le reste de la page vide à gauche (signalé par l'utilisateur,
 * capture d'écran de la rubrique Races du Lexique). Les deux règles ne se
 * chevauchent jamais ([open] / :not([open])), donc pas de conflit de
 * spécificité à gérer.
 */
.lcm-app-add-panel.is-button[open]{display:block;width:100%}

/* ---------------------------------------------------------------
 * Module Communauté (2026-08-20, v4.36.0) — messagerie privée.
 * Réutilise .lcm-app-card/.lcm-data-grid/.lcm-app-button/.lcm-stack-form
 * existants ; classes ci-dessous propres au module (annuaire, boîte de
 * réception, fil de conversation en bulles, réglages de profil).
 * ------------------------------------------------------------- */
.lcm-app-notice.is-error { color: var(--lcm-danger); background: var(--lcm-danger-soft); border-color: #eac3c3; }
.lcm-app-help { margin: -6px 0 4px; font-size: 12px; color: var(--lcm-text-soft); }
.lcm-app-help.is-error { color: var(--lcm-danger); font-weight: 700; }
.lcm-inline-check { display: flex; align-items: center; gap: 10px; font-weight: 700; }
.lcm-inline-check input { width: auto !important; }
.lcm-app-text-link.is-destructive { color: var(--lcm-danger) !important; }

.lcm-community-tabs { display: flex; gap: 6px; overflow-x: auto; padding: 4px 0 18px; margin-bottom: 6px; scrollbar-width: thin; }
.lcm-community-tabs a { white-space: nowrap; padding: 10px 16px; border-radius: 999px; background: var(--lcm-surface); border: 1px solid var(--lcm-border); color: var(--lcm-text); font-weight: 700; text-decoration: none; }
.lcm-community-tabs a.is-active { background: var(--lcm-primary); border-color: var(--lcm-primary); color: #fff; }

.lcm-community-onboarding { max-width: 620px; }
.lcm-community-profile-head { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; }
.lcm-community-profile-head h2 { margin: 2px 0 4px; }
.lcm-community-profile-head p { margin: 0; color: var(--lcm-text-soft); }
.lcm-community-avatar-lg { width: 64px; height: 64px; flex: none; font-size: 1.6rem; background: linear-gradient(145deg, var(--lcm-gold-soft), var(--lcm-primary-soft)); color: var(--lcm-primary-strong); }
.lcm-community-profile-preview { margin-bottom: 20px; padding: 14px 16px; border: 1px dashed var(--lcm-border); border-radius: 14px; background: var(--lcm-surface-soft); }
.lcm-community-profile-preview strong { display: block; margin-top: 3px; font-size: 1.05rem; }
.lcm-community-profile-preview p { margin: 4px 0 0; color: var(--lcm-text-soft); }
.lcm-toggle-card { display: flex; align-items: flex-start; gap: 12px; padding: 13px 14px; border: 1px solid var(--lcm-border); border-radius: 12px; background: var(--lcm-surface); cursor: pointer; font-weight: 400; transition: border-color .15s ease, background .15s ease; }
.lcm-toggle-card input { width: auto !important; margin-top: 3px; }
.lcm-toggle-card strong { display: block; font-size: .92rem; }
.lcm-toggle-card small { display: block; margin-top: 2px; color: var(--lcm-text-soft); font-weight: 500; }
.lcm-toggle-card:has(input:checked) { border-color: var(--lcm-primary); background: var(--lcm-primary-soft); }

.lcm-community-search { display: flex; gap: 10px; margin-bottom: 18px; }
.lcm-community-search input[type="search"] { flex: 1; padding: 11px 14px; border: 1px solid var(--lcm-border); border-radius: 10px; font: inherit; background: var(--lcm-surface-soft); }

.lcm-community-directory { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.lcm-community-directory article { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; border: 1px solid var(--lcm-border); border-radius: 14px; background: var(--lcm-surface); }
.lcm-community-directory article strong { display: block; }
.lcm-community-directory article small { display: block; margin-top: 4px; color: var(--lcm-text-soft); }

.lcm-community-inbox { grid-template-columns: 1fr; gap: 8px; }
.lcm-community-conv-row { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border: 1px solid var(--lcm-border); border-radius: 14px; background: var(--lcm-surface); text-decoration: none; color: inherit; }
.lcm-community-conv-row.is-unread { border-color: var(--lcm-primary); background: var(--lcm-primary-soft); }
.lcm-community-conv-row strong { display: block; color: var(--lcm-text); }
.lcm-community-conv-row small { display: block; color: var(--lcm-text-soft); margin-top: 2px; }
.lcm-community-conv-row .lcm-notification-count { margin-left: auto; }

.lcm-community-avatar { display: grid; place-items: center; overflow: hidden; width: 42px; height: 42px; flex: none; border-radius: 50%; background: var(--lcm-gold-soft); color: #8a6410; font-weight: 800; }
.lcm-community-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lcm-community-directory article { align-items: flex-start; }

.lcm-community-thread .lcm-app-card-heading { justify-content: space-between; }
.lcm-community-messages { display: flex; flex-direction: column; gap: 10px; max-height: 480px; overflow-y: auto; padding: 4px 2px 18px; }
.lcm-community-bubble { max-width: 78%; padding: 11px 14px; border-radius: 16px; background: var(--lcm-surface-soft); border: 1px solid var(--lcm-border); }
.lcm-community-bubble p { margin: 0 0 4px; white-space: pre-wrap; word-break: break-word; }
.lcm-community-bubble time { display: block; font-size: 11px; color: var(--lcm-text-faint); }
.lcm-community-message-video { display: block; width: 100%; max-width: 260px; border-radius: 12px; margin-bottom: 6px; background: #000; }
.lcm-community-bubble.is-mine { align-self: flex-end; background: var(--lcm-primary-soft); border-color: #c9dcd2; }
.lcm-community-bubble.is-theirs { align-self: flex-start; }
.lcm-community-reply { display: flex; gap: 10px; align-items: flex-end; }
.lcm-community-reply textarea { flex: 1; min-height: 52px; max-height: 160px; padding: 11px 14px; border: 1px solid var(--lcm-border); border-radius: 12px; font: inherit; resize: vertical; background: var(--lcm-surface-soft); }

@media (max-width: 640px) {
  .lcm-community-bubble { max-width: 92%; }
  .lcm-community-reply { flex-direction: column; align-items: stretch; }
}

/* Profil Communauté élargi (2026-08-20, v4.37.0) : nombre de volailles,
   races, secteur, échanges, vente d'œufs — affichés en annuaire et en
   tête de conversation via profile_summary_html(). */
.lcm-community-meta { display: block; margin-top: 4px; color: var(--lcm-text-soft); font-size: 12px; }
.lcm-community-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.lcm-community-badge { display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 999px; background: var(--lcm-primary-soft); color: var(--lcm-primary-strong); font-size: 11px; font-weight: 800; }
.lcm-community-thread .lcm-app-card-heading { align-items: flex-start; }

/* Fil public Communauté (2026-08-20, v4.39.0) : composeur, publications,
   images, j'aime/commentaires/signalement, écran de modération. */
.lcm-community-composer-head { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.lcm-community-composer-head h2 { margin: 2px 0 0; }
.lcm-community-composer textarea { min-height: 90px; padding: 12px 14px; border: 1px solid var(--lcm-border); border-radius: 12px; font: inherit; resize: vertical; background: var(--lcm-surface-soft); }
.lcm-community-composer-foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.lcm-community-upload-label { display: flex; align-items: center; gap: 4px; font-weight: 700; font-size: 13px; color: var(--lcm-text-soft); cursor: pointer; }
.lcm-community-upload-label small { font-weight: 500; color: var(--lcm-text-faint); }
.lcm-community-upload-label input[type="file"] { max-width: 220px; font-size: 12px; }
.lcm-community-upload-label input[type="file"]::file-selector-button, .lcm-community-upload-label input[type="file"]::-webkit-file-upload-button { padding: 7px 12px; margin-right: 8px; border: 1px solid var(--lcm-border); border-radius: 999px; background: var(--lcm-surface); color: var(--lcm-text); font-weight: 700; cursor: pointer; }

.lcm-community-poll-composer { margin-top: 4px; }
.lcm-community-poll-composer summary { cursor: pointer; list-style: none; }
.lcm-community-poll-composer summary::-webkit-details-marker { display: none; }
.lcm-community-poll-composer-fields { display: grid; gap: 12px; margin-top: 12px; padding: 14px; border: 1px dashed var(--lcm-border); border-radius: 12px; background: var(--lcm-surface-soft); }

.lcm-community-poll { margin: 4px 0 14px; padding: 14px 16px; border: 1px solid var(--lcm-border); border-radius: 14px; background: var(--lcm-surface-soft); }
.lcm-community-poll-question { margin: 0 0 12px; font-weight: 800; }
.lcm-community-poll-form { display: grid; gap: 8px; }
.lcm-community-poll-choice { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid var(--lcm-border); border-radius: 10px; background: var(--lcm-surface); font-weight: 600; cursor: pointer; }
.lcm-community-poll-choice input { width: auto !important; margin: 0 !important; }
.lcm-community-poll-form .lcm-app-button { justify-self: start; margin-top: 4px; }
.lcm-community-poll-results { display: grid; gap: 8px; }
.lcm-community-poll-result { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 12px; overflow: hidden; border: 1px solid var(--lcm-border); border-radius: 10px; background: var(--lcm-surface); font-weight: 600; }
.lcm-community-poll-result span, .lcm-community-poll-result strong { position: relative; z-index: 1; }
.lcm-community-poll-result strong { flex: none; color: var(--lcm-text-soft); }
.lcm-community-poll-result.is-mine { border-color: var(--lcm-primary); }
.lcm-community-poll-result.is-mine strong { color: var(--lcm-primary-strong); }
.lcm-community-poll-bar { position: absolute; top: 0; left: 0; bottom: 0; z-index: 0; background: var(--lcm-primary-soft); border-radius: 10px 0 0 10px; }
.lcm-community-poll-meta { margin-top: 10px; color: var(--lcm-text-soft); font-size: 12px; }
.lcm-community-poll-change summary { cursor: pointer; list-style: none; display: inline; }
.lcm-community-poll-change summary::-webkit-details-marker { display: none; }
.lcm-community-poll-change .lcm-community-poll-form { margin-top: 10px; max-width: 360px; }

.lcm-community-empty-feed { padding: 46px 24px; text-align: center; }
.lcm-community-empty-icon { display: block; margin-bottom: 10px; font-size: 2.4rem; }
.lcm-community-empty-feed h3 { margin: 0 0 6px; }
.lcm-community-empty-feed p { max-width: 420px; margin: 0 auto; color: var(--lcm-text-soft); }

.lcm-community-post { margin-bottom: 16px; transition: box-shadow .15s ease; }
.lcm-community-post:hover { box-shadow: 0 6px 20px rgba(0,0,0,.06); }
.lcm-community-post .lcm-app-card-heading { align-items: flex-start; }
.lcm-community-post-author { display: flex; align-items: flex-start; gap: 12px; }
.lcm-community-post-body { margin: 4px 0 12px; white-space: pre-wrap; word-break: break-word; }
.lcm-community-post-images { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px; margin-bottom: 14px; }
.lcm-community-post-images img { width: 100%; height: 180px; object-fit: cover; border-radius: 12px; border: 1px solid var(--lcm-border); }
.lcm-community-post-images video { width: 100%; height: 180px; object-fit: cover; border-radius: 12px; border: 1px solid var(--lcm-border); background: #000; }
.lcm-community-post-images.is-single video { height: 320px; }
.lcm-community-post-images.is-single { grid-template-columns: 1fr; }
.lcm-community-post-images.is-single img { height: 320px; }

.lcm-community-post-actions { display: flex; align-items: center; gap: 10px; padding-top: 10px; border-top: 1px solid var(--lcm-border); flex-wrap: wrap; }
.lcm-community-post-actions form { margin: 0; }
.lcm-community-like-btn { border: 1px solid var(--lcm-border); background: var(--lcm-surface); cursor: pointer; font-weight: 700; color: var(--lcm-text-soft); padding: 7px 14px; border-radius: 999px; transition: all .15s ease; }
.lcm-community-like-btn.is-active { color: var(--lcm-rose); border-color: var(--lcm-rose-soft); background: var(--lcm-rose-soft); }
.lcm-community-like-btn:hover { background: var(--lcm-surface-soft); transform: translateY(-1px); }
.lcm-community-comment-count { padding: 7px 14px; border: 1px solid var(--lcm-border); border-radius: 999px; background: var(--lcm-surface-soft); color: var(--lcm-text-soft); font-weight: 700; font-size: 13px; }
.lcm-community-report summary { cursor: pointer; list-style: none; }
.lcm-community-report summary::-webkit-details-marker { display: none; }
.lcm-community-report[open] { width: 100%; }
.lcm-community-report form { margin-top: 10px; padding: 12px; border: 1px solid var(--lcm-border); border-radius: 12px; background: var(--lcm-surface-soft); max-width: 360px; }

.lcm-community-comments { margin-top: 12px; }
.lcm-community-comments summary { cursor: pointer; list-style: none; color: var(--lcm-primary); font-weight: 800; font-size: 13px; }
.lcm-community-comments summary::-webkit-details-marker { display: none; }
.lcm-community-comment { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--lcm-border); }
.lcm-community-comment:last-of-type { border-bottom: 0; }
.lcm-community-comment strong { display: block; font-size: 13px; }
.lcm-community-comment p { margin: 2px 0 0; white-space: pre-wrap; word-break: break-word; }
.lcm-community-comment form { flex: none; }
.lcm-community-comment-form { display: flex; gap: 8px; margin-top: 12px; }
.lcm-community-comment-form input[type="text"] { flex: 1; padding: 9px 12px; border: 1px solid var(--lcm-border); border-radius: 10px; font: inherit; background: var(--lcm-surface-soft); }

.lcm-community-report-row { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; flex-wrap: wrap; }
.lcm-community-report-row blockquote { margin: 8px 0 0; padding: 10px 12px; border-left: 3px solid var(--lcm-border); color: var(--lcm-text-soft); font-size: 13px; }
.lcm-community-report-row .lcm-row-actions { flex-direction: column; gap: 8px; align-items: stretch; }
.lcm-community-report-row .lcm-row-actions form { margin: 0; }

@media (max-width: 640px) {
  .lcm-community-post-images { grid-template-columns: repeat(2, 1fr); }
  .lcm-community-comment { flex-direction: column; }
}

/* 2026-08-24 (v4.74.0) : bannière de consentement e-mail marketing (comptes créés avant cette fonctionnalité, voir LCM_Marketing::maybe_render_consent_banner()). Style « alerte douce », cohérent avec .lcm-app-card mais visuellement distinct (bordure dorée) pour se détacher du contenu de la page sans être alarmant. */
.lcm-consent-banner { display: flex; gap: 14px; align-items: flex-start; margin: 0 0 20px; padding: 16px 18px; border-radius: 14px; background: var(--lcm-gold-soft, #fff5d9); border: 1px solid var(--lcm-gold, #e8b923); }
.lcm-consent-banner-icon { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: rgba(255, 255, 255, .6); font-size: 1.2rem; flex-shrink: 0; }
.lcm-consent-banner-body { flex: 1; min-width: 0; }
.lcm-consent-banner-body strong { display: block; font-size: 14px; color: var(--lcm-ink); margin-bottom: 2px; }
.lcm-consent-banner-body p { margin: 0 0 10px; font-size: 13px; color: var(--lcm-ink-soft, #62685f); }
.lcm-consent-banner-form { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: center; }
.lcm-consent-banner-form label { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; color: var(--lcm-ink); }
.lcm-consent-banner-form .lcm-app-button { margin-left: auto; }
.lcm-consent-banner-snooze { margin-top: 6px; }
.lcm-consent-banner-snooze button { background: none; border: 0; padding: 0; color: var(--lcm-ink-soft, #62685f); font-size: 12px; text-decoration: underline; cursor: pointer; }
@media (max-width: 560px) {
  .lcm-consent-banner { flex-direction: column; }
  .lcm-consent-banner-form .lcm-app-button { margin-left: 0; }
}

/* 2026-08-25 (v4.95.0) : jauge visuelle graduée des stockages (Alimentation & Stock), voir LCM_Stock::gauge_svg(). */
.lcm-data-grid details.lcm-stock-view.is-inactive{opacity:.55}
.lcm-stock-gauge{flex:0 0 34px;width:34px;height:44px}
.lcm-stock-history-title{margin:0 0 8px;font-weight:700;font-size:.78rem;color:var(--lcm-ink-soft)}
.lcm-stock-history{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.lcm-stock-history li{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--lcm-ink)}
.lcm-stock-history li .dashicons{width:16px;height:16px;font-size:16px;color:var(--lcm-ink-soft)}

/*
 * 2026-08-25 (v4.96.0) : retour utilisateur — « les questionnaires sont
 * très rustiques, très Excel [...] c'est vraiment moche » (captures
 * d'écran : Stockage, formulaire « Utiliser des œufs du stock »). Cause
 * identifiée : les flèches natives du navigateur sur les champs
 * type=number (identiques à un tableur) n'étaient masquées que sur les
 * compteurs dédiés (Ponte) — pas sur les autres champs numériques de
 * l'app (Stockage, Alimentation, Emballages...). Masquées partout, sans
 * rien changer au comportement (la saisie clavier/numérique reste
 * identique) : c'est purement l'apparence du contrôle qui change.
 */
.lcm-app-shell input[type=number]::-webkit-outer-spin-button,
.lcm-app-shell input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.lcm-app-shell input[type=number] { -moz-appearance: textfield; }

/*
 * 2026-08-25 (v4.96.0) : « Utiliser des œufs du stock » passe du champ
 * nombre brut au même compteur -/valeur/+ que Ponte (déjà connu et
 * apprécié des utilisateurs pour compter des œufs) — voir
 * LCM_Production::render_use_stock(). Règles explicites plutôt que de
 * compter sur la cascade entre .lcm-stepper et .lcm-stock-use-form input,
 * pour un rendu garanti sans double bordure.
 */
.lcm-stock-use-form .lcm-stepper{min-height:50px!important;border-radius:13px!important;border-color:#d8ded7!important;background:#fff!important}
.lcm-stock-use-form .lcm-stepper input{min-height:0!important;border:0!important;background:transparent!important;box-shadow:none!important}
.lcm-stock-use-form .lcm-stepper button{border:0;background:#f4f0e8;font-size:22px;font-weight:800;color:var(--lcm-forest,#315b48);cursor:pointer}
