:root {
    --lv-green-dark: #1b382b;
    --lv-green-mid: #2d553f;
    --lv-green-accent: #2e7d32;
    --lv-green-soft: #5b7f67;
    --lv-cream: #f4f7ef;
    --lv-cream-light: #f7faf3;
    --lv-paper: rgba(253, 255, 250, 0.92);
    --lv-paper-translucent: rgba(244, 248, 240, 0.82);
    --lv-border: rgba(67, 96, 71, 0.16);
    --lv-shadow: 0 6px 20px rgba(35, 55, 40, 0.08);
    --lv-shadow-hover: 0 10px 28px rgba(35, 55, 40, 0.14);
    --lv-max: 1480px;
    --font-serif: "Georgia", "Times New Roman", serif;
    --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    min-width: 320px;
    scroll-behavior: smooth;
}

body {
    margin: 0;
    min-width: 320px;
    min-height: 100vh;
    background: var(--lv-cream);
    color: #2c3e35;
    font-family: var(--font-serif);
    line-height: 1.45;
    overflow-x: hidden;
}

button,
input,
select,
textarea {
    font: inherit;
}

a {
    color: inherit;
    text-decoration: none;
}

.lv-app {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}


/* ============================================================
   HEADER
   ============================================================ */

.lv-header {
    position: relative;
    width: 100%;
    height: 150px;
    overflow: hidden;
    isolation: isolate;
    border-bottom: 1px solid var(--lv-border);
}

.lv-header-graphic,
.lv-header-graphic img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.lv-header-graphic img {
    display: block;
    object-fit: cover;
    object-position: center center;
}

.lv-header-overlay {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: var(--lv-max);
    height: 100%;
    margin: 0 auto;
    padding: 0 28px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

.lv-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
    margin-left: 90px; /* Décalé sur la droite après la tête d'oiseau */
    filter: drop-shadow(0 0 12px rgba(255, 255, 255, 0.95)) drop-shadow(0 0 6px rgba(255, 255, 255, 0.9));
}

.lv-brand img {
    width: 62px;
    height: 62px;
    object-fit: contain;
    filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.95));
}

.lv-brand-name {
    display: flex;
    flex-direction: column;
    line-height: 1.1;
    color: var(--lv-green-dark);
    text-shadow: 0 0 10px rgba(255, 255, 255, 0.95), 0 0 4px #ffffff;
}

.lv-brand-name strong {
    font-size: 18px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.lv-brand-name em {
    font-size: 15px;
    font-style: normal;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--lv-green-dark);
    letter-spacing: 0.05em;
}

.lv-main-nav {
    display: flex;
    align-items: center;
    gap: clamp(16px, 2.5vw, 36px);
    background: rgba(255, 255, 255, 0.65);
    padding: 8px 22px;
    border-radius: 30px;
    border: 1px solid var(--lv-border);
    backdrop-filter: blur(6px);
}

.lv-main-nav a {
    color: var(--lv-green-dark);
    font-size: 14px;
    font-weight: 700;
    transition: color 0.2s ease;
}

.lv-main-nav a:hover {
    color: var(--lv-green-accent);
}

.lv-header-tools {
    display: flex;
    align-items: center;
    gap: 10px;
}

.lv-search {
    position: relative;
    width: 240px;
    height: 38px;
    display: flex;
    align-items: center;
    border: 1px solid var(--lv-border);
    border-radius: 20px;
    background: rgba(255, 255, 255, 0.85);
    backdrop-filter: blur(8px);
    box-shadow: inset 0 1px 3px rgba(0,0,0,0.05);
    overflow: hidden;
}

.lv-search input {
    width: 100%;
    height: 100%;
    border: 0;
    outline: 0;
    padding: 0 38px 0 16px;
    background: transparent;
    color: var(--lv-green-dark);
    font-size: 12px;
    font-family: var(--font-sans);
}

.lv-search input::placeholder {
    color: #798b7f;
}

.lv-search button {
    position: absolute;
    right: 4px;
    width: 30px;
    height: 30px;
    border: 0;
    border-radius: 50%;
    background: var(--lv-green-mid);
    color: white;
    display: grid;
    place-items: center;
    cursor: pointer;
    transition: background 0.2s ease;
}

.lv-search button:hover {
    background: var(--lv-green-accent);
}

.lv-tool {
    position: relative;
    width: 38px;
    height: 38px;
    padding: 0;
    display: grid;
    place-items: center;
    border: 1px solid var(--lv-border);
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.85);
    color: var(--lv-green-dark);
    font-size: 16px;
    cursor: pointer;
    transition: transform 0.2s ease, background 0.2s ease;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}

.lv-tool:hover {
    transform: translateY(-2px);
    background: white;
}

.lv-tool-notif {
    position: relative;
}

.lv-notif-badge {
    position: absolute;
    top: -2px;
    right: -2px;
    width: 17px;
    height: 17px;
    border-radius: 50%;
    background: #e53935;
    color: white;
    font-size: 10px;
    font-weight: 700;
    font-family: var(--font-sans);
    display: grid;
    place-items: center;
    border: 2px solid white;
}

.lv-profile {
    position: relative;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 2px solid var(--lv-green-mid);
    border-radius: 50%;
    overflow: hidden;
    cursor: pointer;
    background: white;
}

.lv-profile img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.lv-profile-status {
    position: absolute;
    bottom: 2px;
    right: 2px;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #4caf50;
    border: 2px solid white;
}


/* ============================================================
   BODY & SIDEBAR
   ============================================================ */

.lv-body {
    flex: 1;
    width: 100%;
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
}

.lv-sidebar {
    position: relative;
    z-index: 4;
    padding: 24px 14px 20px;
    background: rgba(244, 247, 239, 0.94);
    backdrop-filter: blur(10px);
    border-right: 1px solid var(--lv-border);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.lv-sidebar nav {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.lv-sidebar nav a {
    min-height: 40px;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 0 14px;
    border-radius: 20px;
    text-decoration: none;
    color: #435449;
    font-size: 13px;
    font-family: var(--font-sans);
    transition: all 0.2s ease;
}

.lv-sidebar nav a .lv-nav-icon {
    width: 24px;
    display: inline-flex;
    justify-content: center;
    font-size: 16px;
}

.lv-sidebar nav a.is-active {
    background: #d8e5d2;
    color: var(--lv-green-dark);
    font-weight: 700;
    box-shadow: 0 2px 8px rgba(45, 69, 48, 0.08);
}

.lv-sidebar nav a.is-active .lv-nav-icon {
    color: var(--lv-green-dark);
}

.lv-sidebar nav a:hover:not(.is-active) {
    background: rgba(216, 229, 210, 0.5);
    color: var(--lv-green-dark);
}

/* SIDEBAR ACCOUNT WIDGET AT BOTTOM */

.lv-sidebar-account {
    margin-top: 24px;
    padding: 12px 14px;
    display: flex;
    align-items: center;
    gap: 10px;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.75);
    border: 1px solid var(--lv-border);
    box-shadow: 0 4px 12px rgba(0,0,0,0.03);
}

.lv-account-avatar {
    position: relative;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1.5px solid var(--lv-green-mid);
    overflow: hidden;
    flex-shrink: 0;
}

.lv-account-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.lv-account-avatar .online-dot {
    position: absolute;
    bottom: 0;
    right: 0;
    width: 8px;
    height: 8px;
    background: #4caf50;
    border-radius: 50%;
    border: 1.5px solid white;
}

.lv-account-info {
    flex: 1;
    min-width: 0;
    font-family: var(--font-sans);
}

.lv-account-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 4px;
}

.lv-account-top strong {
    font-size: 12px;
    color: var(--lv-green-dark);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lv-level-tag {
    font-size: 9px;
    font-weight: 700;
    background: #e2ebd9;
    color: var(--lv-green-dark);
    padding: 2px 6px;
    border-radius: 10px;
}

.lv-xp-bar-wrap {
    width: 100%;
    height: 4px;
    background: #e0e8db;
    border-radius: 2px;
    margin: 4px 0 2px;
    overflow: hidden;
}

.lv-xp-bar {
    height: 100%;
    background: var(--lv-green-mid);
    border-radius: 2px;
}

.lv-account-info small {
    font-size: 9px;
    color: #6b7c70;
}

.lv-account-settings {
    background: transparent;
    border: 0;
    cursor: pointer;
    font-size: 14px;
    padding: 2px;
    color: #6b7c70;
    transition: color 0.2s;
}

.lv-account-settings:hover {
    color: var(--lv-green-dark);
}


/* ============================================================
   MAIN & HERO
   ============================================================ */

.lv-main {
    position: relative;
    min-width: 0;
    min-height: 100%;
    background: #f4f7ef;
}

.lv-main-background {
    position: absolute;
    z-index: 0;
    inset: 0;
    pointer-events: none;
}

.lv-main-background img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center bottom;
}

.lv-main-inner {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 1280px;
    margin: 0 auto;
    padding: 24px 28px 48px;
}

/* HERO SECTION */

.lv-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(320px, 460px) 1fr;
    gap: 28px;
    align-items: center;
    margin-bottom: 32px;
}

/* CENTRAL LOGO ILLUSTRATION ON THE LEFT */

.lv-hero-femme {
    position: relative;
    width: 100%;
    max-width: 460px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.lv-hero-femme img {
    width: 100%;
    height: auto;
    max-height: 420px;
    object-fit: contain;
    filter: drop-shadow(0 10px 20px rgba(30, 50, 35, 0.12));
}

/* HERO COPY & TOP WIDGETS ON THE RIGHT */

.lv-hero-copy {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* TOP WIDGETS BAR */

.lv-top-widgets {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.lv-widget-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    background: rgba(255, 255, 255, 0.85);
    border: 1px solid var(--lv-border);
    border-radius: 14px;
    backdrop-filter: blur(8px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.03);
    font-family: var(--font-sans);
}

.lv-widget-item .widget-icon {
    font-size: 20px;
}

.lv-widget-item .widget-text {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}

.lv-widget-item strong {
    font-size: 13px;
    color: var(--lv-green-dark);
}

.lv-widget-item small {
    font-size: 11px;
    color: #697a6e;
}

.lv-widget-item .widget-sub {
    font-size: 10px;
    color: var(--lv-green-soft);
    font-weight: 600;
}

/* HERO TEXT & ACTIONS */

.lv-hero-text {
    margin-top: 4px;
}

.lv-kicker {
    margin: 0 0 4px;
    color: var(--lv-green-soft);
    font-size: 12px;
    letter-spacing: 0.2em;
    font-weight: 700;
    font-family: var(--font-sans);
}

.lv-hero h1 {
    margin: 0;
    color: var(--lv-green-dark);
    font-size: clamp(30px, 3.5vw, 46px);
    line-height: 1.1;
    font-weight: 700;
}

.lv-quote {
    margin: 10px 0 12px;
    color: #5b6d61;
    font-size: 16px;
    font-style: italic;
}

.lv-leaf-divider {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 12px 0 16px;
}

.lv-leaf-divider::before,
.lv-leaf-divider::after {
    content: "";
    flex: 1;
    max-width: 180px;
    height: 1px;
    background: rgba(67, 96, 71, 0.25);
}

.lv-leaf-divider span {
    font-size: 14px;
    color: var(--lv-green-soft);
}

/* 3 ACTION CARDS */

.lv-hero-actions {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}

.lv-action-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    background: rgba(255, 255, 255, 0.9);
    border: 1px solid var(--lv-border);
    border-radius: 14px;
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(8px);
    transition: all 0.25 ease;
}

.lv-action-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--lv-shadow-hover);
    background: white;
}

.lv-action-card .action-icon {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: #eef4e9;
    display: grid;
    place-items: center;
    font-size: 22px;
    flex-shrink: 0;
}

.lv-action-card .action-text {
    display: flex;
    flex-direction: column;
}

.lv-action-card strong {
    font-size: 14px;
    color: var(--lv-green-dark);
}

.lv-action-card small {
    font-size: 11px;
    color: #6b7c70;
    font-family: var(--font-sans);
}


/* ============================================================
   GRID CONTENT & MODULES
   ============================================================ */

.lv-content-grid {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 20px;
    align-items: start;
}

.lv-content-primary,
.lv-content-secondary {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lv-module {
    padding: 20px 22px;
    border: 1px solid var(--lv-border);
    border-radius: 16px;
    background: var(--lv-paper);
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(10px);
}

.lv-module header {
    margin-bottom: 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.lv-module h2 {
    margin: 0;
    color: var(--lv-green-dark);
    font-size: 18px;
    font-weight: 700;
}

.lv-link-more {
    font-size: 12px;
    color: var(--lv-green-soft);
    font-family: var(--font-sans);
    font-weight: 600;
}

.lv-link-more:hover {
    text-decoration: underline;
}

/* OBSERVATIONS GRID */

.lv-observations {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.obs-card {
    display: flex;
    flex-direction: column;
    padding: 12px;
    background: rgba(238, 244, 232, 0.7);
    border-radius: 12px;
    border: 1px solid rgba(67, 96, 71, 0.1);
    transition: transform 0.2s ease;
}

.obs-card:hover {
    transform: translateY(-2px);
    background: rgba(238, 244, 232, 0.95);
}

.obs-img-wrap {
    width: 100%;
    height: 70px;
    border-radius: 8px;
    background: white;
    display: grid;
    place-items: center;
    margin-bottom: 8px;
    box-shadow: inset 0 1px 3px rgba(0,0,0,0.04);
}

.obs-emoji {
    font-size: 32px;
}

.obs-info {
    display: flex;
    flex-direction: column;
}

.obs-info strong {
    font-size: 13px;
    color: var(--lv-green-dark);
}

.obs-info small,
.obs-info time {
    font-size: 11px;
    color: #6b7c70;
    font-family: var(--font-sans);
}

.obs-info time {
    margin-top: 4px;
    font-weight: 600;
}

/* LES 4 SAISONS */

.lv-seasons {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.season-card {
    height: 80px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: rgba(238, 244, 232, 0.75);
    border: 1px solid rgba(67, 96, 71, 0.1);
    cursor: pointer;
    transition: all 0.2s ease;
}

.season-card:hover {
    transform: translateY(-2px);
    background: #e2ebd9;
}

.season-icon {
    font-size: 26px;
    margin-bottom: 4px;
}

.season-card strong {
    font-size: 12px;
    color: var(--lv-green-dark);
}

/* BIODIVERSITÉ EN ACTION */

.lv-biodiversity {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.bio-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.bio-badge {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: white;
    border: 2px solid var(--lv-green-soft);
    display: grid;
    place-items: center;
    font-size: 26px;
    margin-bottom: 8px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.bio-item strong {
    font-size: 13px;
    color: var(--lv-green-dark);
}

.bio-item small {
    font-size: 11px;
    color: #6b7c70;
    font-family: var(--font-sans);
}

/* CYCLE SAISONNIER WIDGET */

.lv-cycle-card {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.lv-cycle-tree-graphic {
    position: relative;
    height: 120px;
    background: linear-gradient(135deg, #e4efe0 0%, #c9dec3 100%);
    border-radius: 12px;
    display: grid;
    place-items: center;
    overflow: hidden;
}

.season-badge-tag {
    position: absolute;
    top: 8px;
    right: 8px;
    padding: 3px 8px;
    border-radius: 10px;
    background: rgba(255,255,255,0.9);
    font-size: 11px;
    font-weight: 700;
    color: var(--lv-green-dark);
    font-family: var(--font-sans);
}

.tree-preview {
    font-size: 64px;
}

.lv-cycle-details {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    font-family: var(--font-sans);
    font-size: 11px;
}

.cycle-row {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--lv-green-dark);
}

.cycle-row .dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--lv-green-accent);
}

.btn-green-cta {
    display: block;
    width: 100%;
    padding: 10px;
    text-align: center;
    background: var(--lv-green-mid);
    color: white;
    border-radius: 10px;
    font-weight: 700;
    font-size: 12px;
    font-family: var(--font-sans);
    transition: background 0.2s ease;
}

.btn-green-cta:hover {
    background: var(--lv-green-accent);
}

.lv-cycle-quote {
    font-size: 11px;
    font-style: italic;
    color: #6a7c70;
    text-align: center;
    margin: 4px 0 0;
}

/* MON IMPACT WIDGET */

.lv-impact-body {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 14px;
}

.impact-stat-item {
    display: flex;
    flex-direction: column;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--lv-border);
}

.impact-stat-item:last-child {
    border-bottom: 0;
}

.stat-number {
    font-size: 22px;
    font-weight: 700;
    color: var(--lv-green-dark);
}

.stat-label {
    font-size: 11px;
    color: #6b7c70;
    font-family: var(--font-sans);
}

.impact-globe-img {
    text-align: center;
    font-size: 48px;
    margin: 6px 0;
}

.btn-impact {
    border: 0;
    cursor: pointer;
}


/* ============================================================
   FOOTER
   ============================================================ */

.lv-footer {
    position: relative;
    width: 100%;
    min-height: 160px;
    margin-top: 40px;
    padding: 24px 0 16px;
    overflow: hidden;
    isolation: isolate;
    border-top: 1px solid var(--lv-border);
}

.lv-footer-graphic,
.lv-footer-graphic img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.lv-footer-graphic img {
    display: block;
    object-fit: cover;
    object-position: center bottom;
}

.lv-footer-overlay {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: var(--lv-max);
    height: 100%;
    margin: 0 auto;
    padding: 0 28px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    text-align: center;
}

.lv-footer-brand {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    color: var(--lv-green-dark);
}

.lv-footer-brand img {
    width: 48px;
    height: 48px;
    object-fit: contain;
}

.lv-footer-brand span {
    font-size: 14px;
}

.lv-footer-brand strong {
    font-weight: 700;
}

.lv-footer-brand em {
    font-style: normal;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--lv-green-dark);
}

.lv-footer-overlay nav {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 16px;
}

.lv-footer-overlay nav a {
    color: var(--lv-green-dark);
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    background: transparent;
    border: 0;
    padding: 0;
    filter: drop-shadow(0 0 10px rgba(255, 255, 255, 1)) drop-shadow(0 0 4px rgba(255, 255, 255, 1));
    text-shadow: 0 0 14px #ffffff, 0 0 10px #ffffff, 0 0 6px #ffffff, 0 0 2px #ffffff;
    transition: all 0.2s ease;
}

.lv-footer-overlay nav a:hover {
    color: var(--lv-green-accent);
    transform: translateY(-1px);
    text-shadow: 0 0 18px #ffffff, 0 0 12px #ffffff, 0 0 6px #ffffff;
}

.lv-footer-bottom-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 16px;
    margin-top: 4px;
}

.lv-share-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--lv-green-dark);
    font-family: var(--font-sans);
}

.lv-footer-social {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
}

.lv-footer-social a {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(228, 239, 224, 0.9) 100%);
    border: 1px solid rgba(46, 125, 50, 0.25);
    box-shadow: 0 2px 8px rgba(35, 55, 40, 0.08);
    display: grid;
    place-items: center;
    font-size: 14px;
    font-weight: 700;
    color: var(--lv-green-dark);
    text-decoration: none;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    backdrop-filter: blur(4px);
}

.lv-footer-social a:hover {
    transform: translateY(-3px) scale(1.08);
    background: var(--lv-green-mid);
    color: #ffffff;
    border-color: var(--lv-green-accent);
    box-shadow: 0 6px 16px rgba(35, 65, 40, 0.22);
}

.lv-footer-tagline {
    font-size: 13px;
    font-weight: 700;
    color: var(--lv-green-dark);
    font-style: italic;
    display: flex;
    align-items: center;
    gap: 6px;
    filter: drop-shadow(0 0 8px rgba(255, 255, 255, 1)) drop-shadow(0 0 4px rgba(255, 255, 255, 1));
    text-shadow: 0 0 14px #ffffff, 0 0 10px #ffffff, 0 0 6px #ffffff, 0 0 2px #ffffff;
}

.lv-footer-legal {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 8px;
    font-size: 13px;
    font-weight: 700;
    color: var(--lv-green-dark);
    font-family: var(--font-sans);
    filter: drop-shadow(0 0 10px rgba(255, 255, 255, 1)) drop-shadow(0 0 4px rgba(255, 255, 255, 1));
    text-shadow: 0 0 14px #ffffff, 0 0 10px #ffffff, 0 0 6px #ffffff, 0 0 2px #ffffff;
}

.lv-footer-legal span,
.lv-footer-legal a,
.lv-footer-legal .sep {
    filter: drop-shadow(0 0 8px #ffffff);
    text-shadow: 0 0 14px #ffffff, 0 0 10px #ffffff, 0 0 6px #ffffff, 0 0 2px #ffffff;
}

.lv-footer-legal a {
    color: var(--lv-green-dark);
    font-weight: 800;
    text-decoration: none;
    transition: all 0.2s ease;
}

.lv-footer-legal a:hover {
    color: var(--lv-green-accent);
    text-decoration: underline;
    text-shadow: 0 0 18px #ffffff, 0 0 12px #ffffff;
}

.lv-footer-legal .sep {
    opacity: 0.8;
}


/* ============================================================
   RESPONSIVE DESIGN & MOBILE NAVIGATION
   ============================================================ */

.lv-mobile-nav {
    display: none;
}

@media (max-width: 1024px) {
    .lv-body {
        grid-template-columns: 200px 1fr;
    }

    .lv-hero {
        grid-template-columns: 1fr;
    }

    .lv-hero-femme {
        display: none;
    }

    .lv-content-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 768px) {
    .lv-header {
        height: 130px;
    }

    .lv-brand {
        margin-left: 0;
    }

    .lv-header-overlay {
        flex-direction: column;
        justify-content: center;
        padding: 10px;
        gap: 10px;
    }

    .lv-body {
        grid-template-columns: 1fr;
    }

    .lv-sidebar {
        display: none;
    }

    .lv-main-nav {
        display: none;
    }

    .lv-top-widgets {
        justify-content: center;
    }

    .lv-observations,
    .lv-seasons,
    .lv-biodiversity {
        grid-template-columns: repeat(2, 1fr);
    }

    .lv-hero-actions {
        grid-template-columns: 1fr;
    }

    .lv-footer-overlay nav {
        flex-wrap: wrap;
        gap: 10px;
    }

    /* CENTERED MOBILE FLOATING NAV BAR */
    .lv-mobile-nav {
        position: fixed;
        bottom: 16px;
        left: 50%;
        transform: translateX(-50%);
        z-index: 100;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        padding: 6px 14px;
        background: rgba(244, 247, 239, 0.94);
        backdrop-filter: blur(16px);
        border: 1px solid var(--lv-border);
        border-radius: 30px;
        box-shadow: 0 10px 30px rgba(25, 45, 30, 0.2);
        width: auto;
        max-width: calc(100vw - 32px);
    }

    .lv-mobile-nav a,
    .lv-mobile-nav button {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        text-decoration: none;
        color: #435449;
        padding: 6px 12px;
        border-radius: 18px;
        background: transparent;
        border: 0;
        cursor: pointer;
        font-family: var(--font-sans);
        transition: all 0.2s ease;
    }

    .lv-mobile-nav a.is-active,
    .lv-mobile-nav a:hover,
    .lv-mobile-nav button:hover {
        background: #d8e5d2;
        color: var(--lv-green-dark);
        font-weight: 700;
    }

    .lv-mobile-nav span {
        font-size: 18px;
        line-height: 1;
    }

    .lv-mobile-nav small {
        font-size: 10px;
        margin-top: 2px;
    }
}

/* ============================================================
   RESPONSIVE HARDENING — AJOUT CIBLÉ
   Ne modifie pas la composition desktop existante.
   ============================================================ */

/* Tablettes : conserver la hiérarchie visuelle sans écraser les blocs. */
@media (max-width: 1100px) and (min-width: 769px) {
    .lv-header-overlay {
        padding-left: 20px;
        padding-right: 20px;
        gap: 14px;
    }

    .lv-brand {
        margin-left: 48px;
        flex-shrink: 0;
    }

    .lv-main-nav {
        gap: 14px;
        padding-left: 16px;
        padding-right: 16px;
    }

    .lv-main-nav a {
        font-size: 13px;
    }

    .lv-header-tools {
        gap: 7px;
        flex-shrink: 0;
    }

    .lv-search {
        width: clamp(180px, 20vw, 220px);
    }

    .lv-body {
        grid-template-columns: 200px minmax(0, 1fr);
    }

    .lv-main-inner {
        padding-left: 22px;
        padding-right: 22px;
    }

    .lv-hero {
        grid-template-columns: minmax(260px, 38%) minmax(0, 1fr);
        gap: 22px;
    }

    .lv-hero-femme {
        display: flex;
        max-width: 100%;
    }

    .lv-hero-femme img {
        max-height: 360px;
    }

    .lv-hero h1 {
        font-size: clamp(30px, 4vw, 40px);
    }

    .lv-content-grid {
        grid-template-columns: minmax(0, 1fr) minmax(260px, 300px);
    }

    .lv-observations {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* Mobile : une seule colonne, contenu respirant et barre basse non intrusive. */
@media (max-width: 768px) {
    .lv-header {
        height: auto;
        min-height: 118px;
    }

    .lv-header-overlay {
        min-height: 118px;
        padding: 12px 16px 14px;
        gap: 10px;
    }

    .lv-brand {
        width: 100%;
        margin-left: 0;
        justify-content: center;
    }

    .lv-brand img {
        width: 54px;
        height: 54px;
    }

    .lv-brand-name strong {
        font-size: 16px;
    }

    .lv-brand-name em {
        font-size: 13px;
    }

    .lv-header-tools {
        width: 100%;
        justify-content: center;
        flex-wrap: wrap;
        gap: 7px;
    }

    .lv-search {
        width: min(100%, 360px);
        flex: 1 1 220px;
    }

    .lv-tool,
    .lv-profile {
        flex: 0 0 auto;
    }

    .lv-main-inner {
        padding: 18px 14px 120px;
    }

    .lv-hero {
        grid-template-columns: 1fr;
        gap: 18px;
        margin-bottom: 22px;
    }

    .lv-hero-femme {
        display: flex;
        width: min(100%, 520px);
        margin: 0 auto;
        order: 0;
    }

    .lv-hero-femme img {
        width: 100%;
        max-height: none;
    }

    .lv-hero-copy {
        order: 1;
        gap: 14px;
    }

    .lv-top-widgets {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px;
    }

    .lv-widget-item {
        min-width: 0;
        padding: 8px 9px;
        gap: 7px;
    }

    .lv-widget-item .widget-icon {
        font-size: 18px;
    }

    .lv-widget-item strong,
    .lv-widget-item small,
    .lv-widget-item .widget-sub {
        overflow-wrap: anywhere;
    }

    .lv-hero h1 {
        font-size: clamp(30px, 8vw, 42px);
    }

    .lv-quote {
        font-size: 15px;
    }

    .lv-hero-actions {
        grid-template-columns: 1fr;
    }

    .lv-content-grid {
        grid-template-columns: 1fr;
        gap: 16px;
    }

    .lv-content-primary,
    .lv-content-secondary {
        gap: 16px;
    }

    .lv-module {
        padding: 16px;
        border-radius: 14px;
    }

    .lv-observations,
    .lv-seasons,
    .lv-biodiversity {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
    }

    .obs-card {
        min-width: 0;
        padding: 10px;
    }

    .obs-info strong,
    .obs-info small,
    .obs-info time {
        overflow-wrap: anywhere;
    }

    .lv-footer {
        min-height: 220px;
        margin-top: 24px;
        padding: 24px 0 96px;
    }

    .lv-footer-overlay {
        height: auto;
        min-height: 100%;
        padding: 0 16px;
        gap: 12px;
    }

    .lv-footer-overlay nav {
        width: 100%;
        flex-wrap: wrap;
        gap: 8px 16px;
    }

    .lv-footer-bottom-row {
        width: 100%;
        gap: 10px 14px;
    }

    .lv-footer-tagline {
        text-align: center;
    }

    .lv-footer-legal {
        width: 100%;
        gap: 6px 9px;
        font-size: 11px;
    }

    .lv-mobile-nav {
        bottom: max(10px, env(safe-area-inset-bottom));
        max-width: calc(100vw - 20px);
        width: max-content;
        padding: 5px 8px;
        gap: 2px;
    }

    .lv-mobile-nav a,
    .lv-mobile-nav button {
        min-width: 54px;
        padding: 6px 8px;
    }
}

/* Très petits téléphones : aucun module ne doit devenir illisible. */
@media (max-width: 480px) {
    .lv-header-overlay {
        padding-left: 10px;
        padding-right: 10px;
    }

    .lv-brand {
        gap: 8px;
    }

    .lv-brand img {
        width: 46px;
        height: 46px;
    }

    .lv-brand-name strong {
        font-size: 14px;
    }

    .lv-brand-name em {
        font-size: 12px;
    }

    .lv-search {
        flex-basis: 100%;
        order: 2;
    }

    .lv-header-tools {
        max-width: 100%;
    }

    .lv-tool,
    .lv-profile {
        width: 34px;
        height: 34px;
    }

    .lv-main-inner {
        padding-left: 10px;
        padding-right: 10px;
    }

    .lv-top-widgets {
        grid-template-columns: 1fr;
    }

    .lv-widget-item {
        justify-content: flex-start;
    }

    .lv-hero h1 {
        font-size: clamp(28px, 10vw, 36px);
    }

    .lv-observations,
    .lv-seasons,
    .lv-biodiversity {
        grid-template-columns: 1fr;
    }

    .lv-action-card {
        padding: 12px;
    }

    .lv-cycle-details {
        grid-template-columns: 1fr;
    }

    .lv-footer {
        min-height: 250px;
    }

    .lv-footer-brand {
        flex-direction: column;
    }

    .lv-footer-bottom-row {
        flex-direction: column;
    }

    .lv-mobile-nav {
        width: calc(100vw - 20px);
        justify-content: space-around;
    }

    .lv-mobile-nav a,
    .lv-mobile-nav button {
        flex: 1 1 0;
        min-width: 0;
    }
}

/* Téléphones très étroits : conserver une marge de sécurité autour des textes. */
@media (max-width: 360px) {
    .lv-mobile-nav small {
        font-size: 9px;
    }

    .lv-mobile-nav span {
        font-size: 16px;
    }

    .lv-module {
        padding: 14px 12px;
    }
}


/* ============================================================
   SOCLE JS — hooks fonctionnels uniquement
   ============================================================ */
body.lv-modal-open { overflow: hidden; }
.lv-main-nav a.is-active,
.lv-sidebar a.is-active,
.lv-mobile-nav a.is-active { font-weight: 700; }

/* ============================================================
   SOCLE JS — hooks fonctionnels uniquement
   ============================================================ */
body.lv-modal-open { overflow: hidden; }
.lv-main-nav a.is-active,
.lv-sidebar a.is-active,
.lv-mobile-nav a.is-active { font-weight: 700; }

/* ============================================================
   MODULE 02 — OBSERVATIONS
   ============================================================ */
.lv-observations-page { display:grid; gap:22px; }
.lv-observation-intro h1 { margin:6px 0 10px; }
.lv-observation-intro > p:not(.lv-kicker) { max-width:760px; margin:0; }
.lv-module-notice { margin-top:18px; padding:12px 14px; border:1px solid rgba(75,104,68,.18); border-radius:12px; background:rgba(255,255,255,.62); display:flex; gap:8px; flex-wrap:wrap; }
.lv-observation-records { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.lv-observation-record { display:grid; grid-template-columns:52px minmax(0,1fr); gap:14px; padding:16px; border:1px solid rgba(75,104,68,.13); border-radius:16px; background:rgba(255,255,255,.72); }
.lv-observation-record-icon { width:52px; height:52px; display:grid; place-items:center; border-radius:14px; background:#edf4e8; font-size:25px; }
.lv-observation-record h2 { margin:0 0 5px; font-size:1.05rem; }
.lv-observation-meta { margin:3px 0; font-size:.86rem; color:#687263; }
.lv-observation-notes { margin:10px 0 0; font-size:.9rem; line-height:1.5; }
.lv-empty-state { padding:32px 18px; text-align:center; border:1px dashed rgba(75,104,68,.22); border-radius:16px; background:rgba(255,255,255,.48); }
.lv-empty-state span { display:block; font-size:34px; margin-bottom:8px; }
.lv-empty-state strong { display:block; margin-bottom:4px; }
.lv-empty-state p { margin:0; color:#687263; }
.lv-observation-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:15px; }
.lv-observation-form label { display:grid; gap:7px; }
.lv-observation-form label:last-of-type { grid-column:1 / -1; }
.lv-observation-form input, .lv-observation-form textarea { width:100%; box-sizing:border-box; border:1px solid rgba(75,104,68,.2); border-radius:10px; padding:11px 12px; background:#fff; font:inherit; }
.lv-observation-form textarea { resize:vertical; min-height:120px; }
.lv-observation-form button { justify-self:start; }
@media (max-width:768px) {
  .lv-observation-records, .lv-observation-form { grid-template-columns:1fr; }
  .lv-observation-form label:last-of-type { grid-column:auto; }
}
@media (max-width:480px) {
  .lv-observation-record { grid-template-columns:1fr; }
  .lv-observation-form button { width:100%; }
}


/* ============================================================
   MODULE 03 — IDENTIFICATION
   ============================================================ */
.lv-identification-page { display:grid; gap:22px; }
.lv-identification-intro h1 { margin:6px 0 10px; }
.lv-identification-intro > p:not(.lv-kicker) { max-width:760px; margin:0; }

.lv-identification-search { display:grid; gap:9px; }
.lv-identification-search > label { font-weight:700; }
.lv-identification-search-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; }
.lv-identification-search-row input {
    width:100%;
    min-width:0;
    box-sizing:border-box;
    border:1px solid rgba(75,104,68,.2);
    border-radius:10px;
    padding:12px 13px;
    background:#fff;
    font:inherit;
}
.lv-identification-search-row button { white-space:nowrap; }

.lv-identification-results { display:grid; gap:12px; }
.lv-identification-result {
    display:grid;
    grid-template-columns:52px minmax(0,1fr);
    gap:14px;
    padding:16px;
    border:1px solid rgba(75,104,68,.13);
    border-radius:16px;
    background:rgba(255,255,255,.72);
}
.lv-identification-result-icon {
    width:52px;
    height:52px;
    display:grid;
    place-items:center;
    border-radius:14px;
    background:#edf4e8;
    font-size:24px;
}
.lv-identification-result h2 { margin:0 0 4px; font-size:1.05rem; }
.lv-identification-result p { margin:0 0 4px; color:#4f5e4b; }
.lv-identification-result small { color:#687263; }
.lv-identification-empty {
    padding:30px 18px;
    text-align:center;
    border:1px dashed rgba(75,104,68,.22);
    border-radius:16px;
    background:rgba(255,255,255,.48);
}
.lv-identification-empty span { display:block; font-size:34px; margin-bottom:8px; }
.lv-identification-empty strong { display:block; margin-bottom:4px; }
.lv-identification-empty p { margin:0; color:#687263; }

@media (max-width:480px) {
    .lv-identification-search-row { grid-template-columns:1fr; }
    .lv-identification-search-row button { width:100%; }
    .lv-identification-result { grid-template-columns:1fr; }
}


/* ============================================================
   MODULE 04 — MON JARDIN
   ============================================================ */
.lv-garden-page { display:grid; gap:22px; }
.lv-garden-intro h1 { margin:6px 0 10px; }
.lv-garden-intro > p:not(.lv-kicker) { max-width:760px; margin:0; }

.lv-garden-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.lv-garden-form label { display:grid; gap:7px; }
.lv-garden-form label:last-of-type { grid-column:1/-1; }
.lv-garden-form input,
.lv-garden-form textarea {
    width:100%;
    box-sizing:border-box;
    border:1px solid rgba(75,104,68,.2);
    border-radius:10px;
    padding:12px 13px;
    background:#fff;
    font:inherit;
}
.lv-garden-form textarea { resize:vertical; }
.lv-garden-form button { justify-self:start; }

.lv-garden-plots { display:grid; gap:12px; }
.lv-garden-plot {
    display:grid;
    grid-template-columns:52px minmax(0,1fr);
    gap:14px;
    padding:16px;
    border:1px solid rgba(75,104,68,.13);
    border-radius:16px;
    background:rgba(255,255,255,.72);
}
.lv-garden-plot-icon {
    width:52px;
    height:52px;
    display:grid;
    place-items:center;
    border-radius:14px;
    background:#edf4e8;
    font-size:24px;
}
.lv-garden-plot h2 { margin:0 0 4px; font-size:1.05rem; }
.lv-garden-plot p { margin:0; color:#566253; }
.lv-garden-notes { margin-top:7px !important; color:#687263 !important; }

@media (max-width:768px) {
    .lv-garden-form { grid-template-columns:1fr; }
    .lv-garden-form label:last-of-type { grid-column:auto; }
    .lv-garden-form button { width:100%; }
}

@media (max-width:480px) {
    .lv-garden-plot { grid-template-columns:1fr; }
}

/* ============================================================
   MODULE 05 — ÉLEVAGE
   ============================================================ */
.lv-livestock-page { display:grid; gap:22px; }
.lv-livestock-intro h1 { margin:6px 0 10px; }
.lv-livestock-intro > p:not(.lv-kicker) { max-width:820px; margin:0; }
.lv-livestock-form-card > header,
.lv-livestock-event-form-card > header,
.lv-livestock-page > .lv-module > header {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    margin-bottom:16px;
}
.lv-livestock-form-card > header span,
.lv-livestock-event-form-card > header span,
.lv-livestock-page > .lv-module > header span {
    color:#71806e;
    font-size:.84rem;
}
.lv-livestock-form,
.lv-livestock-event-form {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px;
}
.lv-livestock-form label,
.lv-livestock-event-form label { display:grid; gap:7px; }
.lv-livestock-form label > span,
.lv-livestock-event-form label > span { font-weight:700; color:#3d4b3a; font-size:.9rem; }
.lv-livestock-form input,
.lv-livestock-form select,
.lv-livestock-form textarea,
.lv-livestock-event-form input,
.lv-livestock-event-form select,
.lv-livestock-event-form textarea {
    width:100%;
    border:1px solid #d6dfd1;
    border-radius:12px;
    background:#fff;
    color:#243024;
    padding:11px 12px;
    font:inherit;
    box-sizing:border-box;
}
.lv-livestock-form textarea,
.lv-livestock-event-form textarea { resize:vertical; min-height:92px; }
.lv-livestock-form input:focus,
.lv-livestock-form select:focus,
.lv-livestock-form textarea:focus,
.lv-livestock-event-form input:focus,
.lv-livestock-event-form select:focus,
.lv-livestock-event-form textarea:focus {
    outline:2px solid rgba(79,125,72,.18);
    border-color:#7ca071;
}
.lv-livestock-full { grid-column:1/-1; }
.lv-livestock-form button,
.lv-livestock-event-form button { justify-self:start; }
.lv-livestock-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.lv-livestock-animal {
    display:grid;
    grid-template-columns:auto 1fr;
    gap:14px;
    align-items:start;
    padding:16px;
    border:1px solid #e0e7dc;
    border-radius:15px;
    background:#fbfdf9;
}
.lv-livestock-animal-icon {
    width:46px;
    height:46px;
    display:grid;
    place-items:center;
    border-radius:13px;
    background:#edf5e9;
    font-size:1.45rem;
}
.lv-livestock-category { margin:0 0 3px; color:#70806d; text-transform:uppercase; letter-spacing:.06em; font-size:.72rem; font-weight:800; }
.lv-livestock-animal h3 { margin:0 0 4px; font-size:1.05rem; }
.lv-livestock-meta,
.lv-livestock-details { margin:0; color:#5d695a; font-size:.9rem; }
.lv-livestock-details { margin-top:7px; }
.lv-livestock-events { display:grid; gap:10px; }
.lv-livestock-event {
    display:grid;
    grid-template-columns:100px 1fr;
    gap:14px;
    padding:14px 0;
    border-bottom:1px solid #e5ebe1;
}
.lv-livestock-event:last-child { border-bottom:0; }
.lv-livestock-event-date { color:#65735f; font-weight:800; font-size:.82rem; }
.lv-livestock-event strong { display:block; margin-bottom:3px; }
.lv-livestock-event span { color:#65735f; font-size:.86rem; }
.lv-livestock-event-notes { margin:6px 0 0; color:#727c6e; }

@media (max-width:768px) {
    .lv-livestock-form,
    .lv-livestock-event-form,
    .lv-livestock-grid { grid-template-columns:1fr; }
    .lv-livestock-full { grid-column:auto; }
    .lv-livestock-form button,
    .lv-livestock-event-form button { width:100%; }
    .lv-livestock-event { grid-template-columns:1fr; gap:4px; }
}

@media (max-width:480px) {
    .lv-livestock-animal { grid-template-columns:1fr; }
    .lv-livestock-animal-icon { width:42px; height:42px; }
}


/* Module 06 — Apiculture */
.lv-apiculture-page { display:grid; gap:22px; }
.lv-apiculture-intro h1 { margin:6px 0 10px; }
.lv-apiculture-intro > p:not(.lv-kicker) { max-width:900px; margin:0; }
.lv-apiculture-form-card > header,
.lv-apiculture-page > .lv-module > header { display:flex; align-items:baseline; justify-content:space-between; gap:16px; }
.lv-apiculture-form-card > header span,
.lv-apiculture-page > .lv-module > header span { color:#7a8577; font-size:.82rem; }
.lv-apiculture-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-top:16px; }
.lv-apiculture-form label { display:grid; gap:7px; }
.lv-apiculture-form label > span { font-weight:700; color:#3d4b3a; font-size:.9rem; }
.lv-apiculture-form input,
.lv-apiculture-form select,
.lv-apiculture-form textarea { width:100%; box-sizing:border-box; border:1px solid #d9e2d5; border-radius:10px; background:#fff; padding:11px 12px; font:inherit; color:#263326; }
.lv-apiculture-form input:focus,
.lv-apiculture-form select:focus,
.lv-apiculture-form textarea:focus { outline:2px solid rgba(74,128,72,.18); border-color:#86a983; }
.lv-apiculture-form textarea { resize:vertical; min-height:88px; }
.lv-apiculture-full { grid-column:1/-1; }
.lv-apiculture-form button { justify-self:start; }
.lv-apiculture-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.lv-apiary-card,
.lv-hive-card { display:grid; grid-template-columns:auto 1fr; gap:13px; align-items:start; border:1px solid #e1e8de; border-radius:13px; padding:14px; background:#fbfdf9; }
.lv-apiary-icon,
.lv-hive-icon { width:44px; height:44px; display:grid; place-items:center; border-radius:12px; background:#edf5e9; font-size:1.45rem; }
.lv-apiary-kicker,
.lv-hive-kicker { margin:0 0 3px; color:#70806d; text-transform:uppercase; letter-spacing:.06em; font-size:.72rem; font-weight:800; }
.lv-apiary-card h3,
.lv-hive-card h3 { margin:0 0 4px; font-size:1.05rem; }
.lv-apiary-meta,
.lv-hive-meta,
.lv-hive-details { margin:0; color:#5d695a; font-size:.9rem; }
.lv-apiary-notes { margin:7px 0 0; color:#687263; }
.lv-hive-details { margin-top:7px; }
.lv-apiculture-events,
.lv-apiculture-harvests { display:grid; gap:10px; }
.lv-apiculture-event,
.lv-apiculture-harvest { display:grid; grid-template-columns:100px 1fr; gap:14px; padding:14px 0; border-bottom:1px solid #e5ebe1; }
.lv-apiculture-event:last-child,
.lv-apiculture-harvest:last-child { border-bottom:0; }
.lv-apiculture-event-date,
.lv-apiculture-harvest-date { color:#65735f; font-weight:800; font-size:.82rem; }
.lv-apiculture-event strong,
.lv-apiculture-harvest strong { display:block; margin-bottom:3px; }
.lv-apiculture-event span,
.lv-apiculture-harvest span { color:#65735f; font-size:.86rem; }
.lv-apiculture-event-notes,
.lv-apiculture-harvest-notes { margin:6px 0 0; color:#727c6e; }
@media (max-width:768px) {
    .lv-apiculture-form,.lv-apiculture-grid { grid-template-columns:1fr; }
    .lv-apiculture-full { grid-column:auto; }
    .lv-apiculture-form button { width:100%; }
    .lv-apiculture-event,.lv-apiculture-harvest { grid-template-columns:1fr; gap:4px; }
    .lv-apiculture-form-card > header,.lv-apiculture-page > .lv-module > header { align-items:flex-start; flex-direction:column; gap:4px; }
}
@media (max-width:480px) {
    .lv-apiary-card,.lv-hive-card { grid-template-columns:1fr; }
    .lv-apiary-icon,.lv-hive-icon { width:42px; height:42px; }
}

/* Module 07 — Semences */
.lv-seeds-page { display:grid; gap:22px; }
.lv-seeds-intro h1 { margin:6px 0 10px; }
.lv-seeds-intro > p:not(.lv-kicker) { max-width:920px; margin:0; }
.lv-seeds-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.lv-seed-form-card > header,
.lv-seed-sowing-form-card > header,
.lv-seeds-section-header { display:flex; align-items:baseline; justify-content:space-between; gap:16px; }
.lv-seed-form-card > header span,
.lv-seed-sowing-form-card > header span,
.lv-seeds-section-header > span { color:#7a8577; font-size:.82rem; }
.lv-seed-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-top:16px; }
.lv-seed-form label { display:grid; gap:7px; }
.lv-seed-form label > span { font-weight:700; color:#3d4b3a; font-size:.9rem; }
.lv-seed-form input,
.lv-seed-form select,
.lv-seed-form textarea { width:100%; box-sizing:border-box; border:1px solid #d9e2d5; border-radius:10px; background:#fff; padding:11px 12px; font:inherit; color:#263326; }
.lv-seed-form input:focus,
.lv-seed-form select:focus,
.lv-seed-form textarea:focus { outline:2px solid rgba(74,128,72,.18); border-color:#86a983; }
.lv-seed-form textarea { resize:vertical; min-height:88px; }
.lv-seed-full { grid-column:1/-1; }
.lv-seed-form button { justify-self:start; }
.lv-seeds-lots { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:16px; }
.lv-seed-lot { display:grid; grid-template-columns:50px 1fr; gap:14px; padding:16px; border:1px solid #e2e9de; border-radius:14px; background:rgba(255,255,255,.72); }
.lv-seed-lot-icon { width:50px; height:50px; display:grid; place-items:center; border-radius:14px; background:#edf5e9; font-size:1.6rem; }
.lv-seed-kicker { margin:0 0 3px; color:#788474; text-transform:uppercase; letter-spacing:.06em; font-size:.7rem; font-weight:800; }
.lv-seed-lot h3 { margin:0 0 3px; font-size:1.05rem; }
.lv-seed-species { margin:0; color:#697566; font-size:.86rem; }
.lv-seed-meta { display:flex; flex-wrap:wrap; gap:6px 12px; margin-top:9px; color:#596657; font-size:.82rem; }
.lv-seed-storage { margin:8px 0 0; color:#65715f; font-size:.84rem; }
.lv-seed-notes,.lv-seed-sowing-notes { margin:6px 0 0; color:#727c6e; font-size:.84rem; }
.lv-seeds-sowings { display:grid; gap:10px; margin-top:16px; }
.lv-seed-sowing { display:grid; grid-template-columns:100px 1fr; gap:14px; padding:14px 0; border-bottom:1px solid #e5ebe1; }
.lv-seed-sowing:last-child { border-bottom:0; }
.lv-seed-sowing-date { color:#65735f; font-weight:800; font-size:.82rem; }
.lv-seed-sowing strong { display:block; margin-bottom:3px; }
.lv-seed-sowing span { color:#65735f; font-size:.86rem; }
@media (max-width: 760px) {
    .lv-seeds-grid,.lv-seeds-lots,.lv-seed-form { grid-template-columns:1fr; }
    .lv-seed-full { grid-column:auto; }
    .lv-seed-form button { width:100%; }
    .lv-seed-lot { grid-template-columns:1fr; }
    .lv-seed-lot-icon { width:42px; height:42px; }
    .lv-seed-sowing { grid-template-columns:1fr; gap:4px; }
    .lv-seed-form-card > header,.lv-seed-sowing-form-card > header,.lv-seeds-section-header { align-items:flex-start; flex-direction:column; gap:4px; }
}

/* ============================================================
   MODULE 08 — SOL, COMPOST & FERTILITÉ
   ============================================================ */

.lv-soil-page {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lv-soil-intro {
    padding: clamp(22px, 4vw, 38px);
    border-radius: 20px;
    background: rgba(253, 255, 250, 0.88);
    border: 1px solid var(--lv-border);
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(10px);
}

.lv-soil-intro h1 {
    margin: 4px 0 8px;
    color: var(--lv-green-dark);
    font-size: clamp(28px, 4vw, 42px);
}

.lv-soil-intro > p:not(.lv-kicker) {
    max-width: 850px;
    margin: 0;
    color: #5d6e63;
}

.lv-soil-forms-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

.lv-soil-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.lv-soil-form label {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-family: var(--font-sans);
    font-size: 12px;
    color: #4c5e52;
}

.lv-soil-form label > span {
    font-weight: 700;
}

.lv-soil-form input,
.lv-soil-form select,
.lv-soil-form textarea {
    width: 100%;
    border: 1px solid rgba(67, 96, 71, 0.18);
    border-radius: 10px;
    padding: 10px 11px;
    background: rgba(255,255,255,0.88);
    color: #2c3e35;
    outline: none;
}

.lv-soil-form input:focus,
.lv-soil-form select:focus,
.lv-soil-form textarea:focus {
    border-color: var(--lv-green-soft);
    box-shadow: 0 0 0 3px rgba(91,127,103,0.12);
}

.lv-soil-form textarea {
    min-height: 90px;
    resize: vertical;
}

.lv-soil-full {
    grid-column: 1 / -1;
}

.lv-soil-form .btn-green-cta {
    grid-column: 1 / -1;
    justify-self: start;
    border: 0;
    cursor: pointer;
}

.lv-soil-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.lv-soil-section-header > span {
    color: #718075;
    font: 11px var(--font-sans);
}

.lv-soil-cards,
.lv-compost-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.lv-soil-card,
.lv-compost-card {
    display: flex;
    gap: 14px;
    padding: 16px;
    border-radius: 14px;
    background: rgba(238,244,232,0.68);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-soil-card-icon,
.lv-compost-card-icon {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: #e4eddf;
    font-size: 22px;
}

.lv-soil-card-body,
.lv-compost-card > div:last-child {
    min-width: 0;
}

.lv-soil-kicker {
    margin: 0 0 3px;
    color: var(--lv-green-soft);
    font: 700 10px var(--font-sans);
    letter-spacing: 0.12em;
}

.lv-soil-card h3,
.lv-compost-card h3 {
    margin: 0 0 8px;
    color: var(--lv-green-dark);
    font-size: 17px;
}

.lv-soil-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    color: #64746a;
    font: 11px var(--font-sans);
}

.lv-soil-notes {
    margin: 9px 0 0;
    color: #596a5f;
    font: 11px/1.5 var(--font-sans);
}

.lv-compost-events {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lv-compost-event {
    display: grid;
    grid-template-columns: 92px minmax(0, 1fr);
    gap: 14px;
    padding: 12px 14px;
    border-radius: 12px;
    background: rgba(238,244,232,0.62);
    border: 1px solid rgba(67,96,71,0.08);
}

.lv-compost-event-date {
    color: var(--lv-green-soft);
    font: 700 11px var(--font-sans);
}

.lv-compost-event strong {
    display: block;
    color: var(--lv-green-dark);
    font-size: 14px;
}

.lv-compost-event span,
.lv-compost-event small {
    display: block;
    margin-top: 2px;
    color: #69796e;
    font: 11px var(--font-sans);
}

.lv-compost-event-notes {
    margin: 6px 0 0;
    color: #596a5f;
    font: 11px var(--font-sans);
}

@media (max-width: 900px) {
    .lv-soil-forms-grid,
    .lv-soil-cards,
    .lv-compost-cards {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 620px) {
    .lv-soil-form {
        grid-template-columns: 1fr;
    }

    .lv-soil-full {
        grid-column: auto;
    }

    .lv-soil-section-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .lv-compost-event {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .lv-soil-card,
    .lv-compost-card {
        padding: 13px;
    }
}


/* ============================================================
   MODULE 09 — EAU & IRRIGATION
   ============================================================ */

.lv-water-page {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lv-water-intro {
    padding: clamp(22px, 4vw, 38px);
    border-radius: 20px;
    background: rgba(253, 255, 250, 0.88);
    border: 1px solid var(--lv-border);
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(10px);
}

.lv-water-intro h1 {
    margin: 4px 0 8px;
    color: var(--lv-green-dark);
    font-size: clamp(28px, 4vw, 42px);
}

.lv-water-intro > p:not(.lv-kicker) {
    max-width: 850px;
    margin: 0;
    color: #5d6e63;
}

.lv-water-forms-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

.lv-water-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.lv-water-form label {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font: 12px var(--font-sans);
    color: #4c5e52;
}

.lv-water-form label > span {
    font-weight: 700;
}

.lv-water-form input,
.lv-water-form select,
.lv-water-form textarea {
    width: 100%;
    border: 1px solid rgba(67, 96, 71, 0.18);
    border-radius: 10px;
    padding: 10px 11px;
    background: rgba(255,255,255,0.88);
    color: #2c3e35;
    outline: none;
}

.lv-water-form input:focus,
.lv-water-form select:focus,
.lv-water-form textarea:focus {
    border-color: var(--lv-green-soft);
    box-shadow: 0 0 0 3px rgba(91,127,103,0.12);
}

.lv-water-form textarea {
    min-height: 90px;
    resize: vertical;
}

.lv-water-full {
    grid-column: 1 / -1;
}

.lv-water-form .btn-green-cta {
    grid-column: 1 / -1;
    justify-self: start;
    border: 0;
    cursor: pointer;
}

.lv-water-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.lv-water-section-header > span {
    color: #718075;
    font: 11px var(--font-sans);
}

.lv-water-cards,
.lv-irrigation-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.lv-water-card,
.lv-irrigation-card {
    display: flex;
    gap: 14px;
    padding: 16px;
    border-radius: 14px;
    background: rgba(238,244,232,0.68);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-water-card-icon,
.lv-irrigation-card-icon {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: #e4eddf;
    font-size: 22px;
}

.lv-water-card-body,
.lv-irrigation-card > div:last-child {
    min-width: 0;
}

.lv-water-kicker {
    margin: 0 0 3px;
    color: var(--lv-green-soft);
    font: 700 10px var(--font-sans);
    letter-spacing: 0.12em;
}

.lv-water-card h3,
.lv-irrigation-card h3 {
    margin: 0 0 8px;
    color: var(--lv-green-dark);
    font-size: 17px;
}

.lv-water-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    color: #64746a;
    font: 11px var(--font-sans);
}

.lv-water-notes,
.lv-water-event-notes {
    margin: 9px 0 0;
    color: #596a5f;
    font: 11px/1.5 var(--font-sans);
}

.lv-water-events {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lv-water-event {
    display: grid;
    grid-template-columns: 92px minmax(0, 1fr);
    gap: 14px;
    padding: 12px 14px;
    border-radius: 12px;
    background: rgba(238,244,232,0.62);
    border: 1px solid rgba(67,96,71,0.08);
}

.lv-water-event-date {
    color: var(--lv-green-soft);
    font: 700 11px var(--font-sans);
}

.lv-water-event strong {
    display: block;
    color: var(--lv-green-dark);
    font-size: 14px;
}

.lv-water-event span {
    display: block;
    margin-top: 2px;
    color: #69796e;
    font: 11px var(--font-sans);
}

@media (max-width: 900px) {
    .lv-water-forms-grid,
    .lv-water-cards,
    .lv-irrigation-cards {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 620px) {
    .lv-water-form {
        grid-template-columns: 1fr;
    }

    .lv-water-full {
        grid-column: auto;
    }

    .lv-water-section-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .lv-water-event {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .lv-water-card,
    .lv-irrigation-card {
        padding: 13px;
    }
}


/* ============================================================
   MODULE 10 — BIODIVERSITÉ
   ============================================================ */

.lv-biodiversity-page {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lv-bio-intro {
    padding: clamp(22px, 4vw, 38px);
    border-radius: 20px;
    background: rgba(253, 255, 250, 0.88);
    border: 1px solid var(--lv-border);
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(10px);
}

.lv-bio-intro h1 {
    margin: 4px 0 8px;
    color: var(--lv-green-dark);
    font-size: clamp(28px, 4vw, 42px);
}

.lv-bio-intro > p:not(.lv-kicker) {
    max-width: 850px;
    margin: 0;
    color: #5d6e63;
}

.lv-bio-forms-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

.lv-bio-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.lv-bio-form label {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font: 12px var(--font-sans);
    color: #4c5e52;
}

.lv-bio-form label > span {
    font-weight: 700;
}

.lv-bio-form input,
.lv-bio-form select,
.lv-bio-form textarea {
    width: 100%;
    border: 1px solid rgba(67, 96, 71, 0.18);
    border-radius: 10px;
    padding: 10px 11px;
    background: rgba(255,255,255,0.88);
    color: #2c3e35;
    outline: none;
}

.lv-bio-form input:focus,
.lv-bio-form select:focus,
.lv-bio-form textarea:focus {
    border-color: var(--lv-green-soft);
    box-shadow: 0 0 0 3px rgba(91,127,103,0.12);
}

.lv-bio-form textarea {
    min-height: 90px;
    resize: vertical;
}

.lv-bio-full {
    grid-column: 1 / -1;
}

.lv-bio-form .btn-green-cta {
    grid-column: 1 / -1;
    justify-self: start;
    border: 0;
    cursor: pointer;
}

.lv-bio-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.lv-bio-section-header > span {
    color: #718075;
    font: 11px var(--font-sans);
}

.lv-bio-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.lv-bio-card {
    display: flex;
    gap: 14px;
    padding: 16px;
    border-radius: 14px;
    background: rgba(238,244,232,0.68);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-bio-icon {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: #e4eddf;
    font-size: 22px;
}

.lv-bio-card-body {
    min-width: 0;
}

.lv-bio-kicker {
    margin: 0 0 3px;
    color: var(--lv-green-soft);
    font: 700 10px var(--font-sans);
    letter-spacing: 0.12em;
}

.lv-bio-card h3 {
    margin: 0 0 5px;
    color: var(--lv-green-dark);
    font-size: 17px;
}

.lv-bio-scientific {
    margin: 0 0 8px;
    color: #7a887e;
    font: italic 12px var(--font-sans);
}

.lv-bio-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    color: #64746a;
    font: 11px var(--font-sans);
}

.lv-bio-notes,
.lv-bio-observation-signs,
.lv-bio-observation-notes {
    margin: 9px 0 0;
    color: #596a5f;
    font: 11px/1.5 var(--font-sans);
}

.lv-bio-observations {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lv-bio-observation {
    display: grid;
    grid-template-columns: 92px minmax(0, 1fr);
    gap: 14px;
    padding: 12px 14px;
    border-radius: 12px;
    background: rgba(238,244,232,0.62);
    border: 1px solid rgba(67,96,71,0.08);
}

.lv-bio-observation-date {
    color: var(--lv-green-soft);
    font: 700 11px var(--font-sans);
}

.lv-bio-observation strong {
    display: block;
    color: var(--lv-green-dark);
    font-size: 14px;
}

.lv-bio-observation span {
    display: block;
    margin-top: 2px;
    color: #69796e;
    font: 11px var(--font-sans);
}

@media (max-width: 900px) {
    .lv-bio-forms-grid,
    .lv-bio-cards {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 620px) {
    .lv-bio-form {
        grid-template-columns: 1fr;
    }

    .lv-bio-full {
        grid-column: auto;
    }

    .lv-bio-section-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .lv-bio-observation {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .lv-bio-card {
        padding: 13px;
    }
}


/* ============================================================
   MODULE 11 — MÉTÉO & CLIMAT
   ============================================================ */

.lv-weather-page {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lv-weather-intro {
    padding: clamp(22px, 4vw, 38px);
    border-radius: 20px;
    background: rgba(253,255,250,0.88);
    border: 1px solid var(--lv-border);
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(10px);
}

.lv-weather-intro h1 {
    margin: 4px 0 8px;
    color: var(--lv-green-dark);
    font-size: clamp(28px,4vw,42px);
}

.lv-weather-intro > p:not(.lv-kicker) {
    max-width: 900px;
    margin: 0;
    color: #5d6e63;
}

.lv-weather-forms-grid {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 20px;
}

.lv-weather-form {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 12px;
}

.lv-weather-form label {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font: 12px var(--font-sans);
    color: #4c5e52;
}

.lv-weather-form label > span {
    font-weight: 700;
}

.lv-weather-form input,
.lv-weather-form select,
.lv-weather-form textarea {
    width: 100%;
    border: 1px solid rgba(67,96,71,0.18);
    border-radius: 10px;
    padding: 10px 11px;
    background: rgba(255,255,255,0.88);
    color: #2c3e35;
    outline: none;
}

.lv-weather-form input:focus,
.lv-weather-form select:focus,
.lv-weather-form textarea:focus {
    border-color: var(--lv-green-soft);
    box-shadow: 0 0 0 3px rgba(91,127,103,0.12);
}

.lv-weather-form textarea {
    min-height: 90px;
    resize: vertical;
}

.lv-weather-full {
    grid-column: 1 / -1;
}

.lv-weather-form .btn-green-cta {
    grid-column: 1 / -1;
    justify-self: start;
    border: 0;
    cursor: pointer;
}

.lv-weather-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.lv-weather-section-header > span {
    color: #718075;
    font: 11px var(--font-sans);
}

.lv-weather-cards {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 12px;
}

.lv-weather-card {
    display: flex;
    gap: 14px;
    padding: 16px;
    border-radius: 14px;
    background: rgba(238,244,232,0.68);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-weather-icon {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: #e4eddf;
    font-size: 22px;
}

.lv-weather-card-body {
    min-width: 0;
}

.lv-weather-kicker {
    margin: 0 0 3px;
    color: var(--lv-green-soft);
    font: 700 10px var(--font-sans);
    letter-spacing: .12em;
}

.lv-weather-card h3 {
    margin: 0 0 6px;
    color: var(--lv-green-dark);
    font-size: 17px;
}

.lv-weather-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    color: #64746a;
    font: 11px var(--font-sans);
}

.lv-weather-notes,
.lv-weather-observation-notes,
.lv-climate-event-notes {
    margin: 9px 0 0;
    color: #596a5f;
    font: 11px/1.5 var(--font-sans);
}

.lv-weather-observations,
.lv-climate-events {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lv-weather-observation,
.lv-climate-event {
    display: grid;
    grid-template-columns: 125px minmax(0,1fr);
    gap: 14px;
    padding: 12px 14px;
    border-radius: 12px;
    background: rgba(238,244,232,0.62);
    border: 1px solid rgba(67,96,71,0.08);
}

.lv-weather-observation-date,
.lv-climate-event-date {
    color: var(--lv-green-soft);
    font: 700 11px var(--font-sans);
}

.lv-weather-observation strong,
.lv-climate-event strong {
    display: block;
    color: var(--lv-green-dark);
    font-size: 14px;
}

.lv-weather-observation span,
.lv-climate-event span {
    display: block;
    margin-top: 2px;
    color: #69796e;
    font: 11px var(--font-sans);
}

@media (max-width: 900px) {
    .lv-weather-forms-grid,
    .lv-weather-cards {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 620px) {
    .lv-weather-form {
        grid-template-columns: 1fr;
    }

    .lv-weather-full {
        grid-column: auto;
    }

    .lv-weather-section-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .lv-weather-observation,
    .lv-climate-event {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .lv-weather-card {
        padding: 13px;
    }
}


/* ============================================================
   MODULE 12 — RECETTES & CUISINE
   ============================================================ */

.lv-recipes-page {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lv-recipes-intro {
    padding: clamp(22px, 4vw, 38px);
    border-radius: 20px;
    background: rgba(253,255,250,0.88);
    border: 1px solid var(--lv-border);
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(10px);
}

.lv-recipes-intro h1 {
    margin: 4px 0 8px;
    color: var(--lv-green-dark);
    font-size: clamp(28px,4vw,42px);
}

.lv-recipes-intro > p:not(.lv-kicker) {
    max-width: 900px;
    margin: 0;
    color: #5d6e63;
}

.lv-recipes-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.lv-recipes-section-header > span {
    color: #718075;
    font: 11px var(--font-sans);
}

.lv-recipes-grid {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 14px;
}

.lv-recipe-card {
    min-width: 0;
    padding: 18px;
    border-radius: 15px;
    background: rgba(238,244,232,0.68);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-recipe-card-head {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.lv-recipe-icon {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: #e4eddf;
    font-size: 21px;
}

.lv-recipe-card h3 {
    margin: 0;
    color: var(--lv-green-dark);
    font-size: 18px;
}

.lv-recipe-category,
.lv-recipe-description,
.lv-recipe-meta {
    margin: 5px 0 0;
    color: #68786d;
    font: 11px/1.5 var(--font-sans);
}

.lv-recipe-category {
    color: var(--lv-green-soft);
    font-weight: 700;
}

.lv-recipe-details {
    margin-top: 14px;
    border-top: 1px solid rgba(67,96,71,0.10);
    padding-top: 11px;
}

.lv-recipe-details summary {
    cursor: pointer;
    color: var(--lv-green-dark);
    font: 700 11px var(--font-sans);
}

.lv-recipe-content {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 16px;
    margin-top: 12px;
}

.lv-recipe-content strong {
    color: var(--lv-green-dark);
    font: 700 11px var(--font-sans);
}

.lv-recipe-content p {
    margin: 5px 0 0;
    color: #5e6f64;
    font: 12px/1.6 var(--font-sans);
    white-space: normal;
}

.lv-recipe-notes {
    grid-column: 1 / -1;
}

.lv-recipe-form {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 12px;
}

.lv-recipe-form label {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font: 12px var(--font-sans);
    color: #4c5e52;
}

.lv-recipe-form label > span {
    font-weight: 700;
}

.lv-recipe-form input,
.lv-recipe-form select,
.lv-recipe-form textarea {
    width: 100%;
    border: 1px solid rgba(67,96,71,0.18);
    border-radius: 10px;
    padding: 10px 11px;
    background: rgba(255,255,255,0.88);
    color: #2c3e35;
    outline: none;
}

.lv-recipe-form input:focus,
.lv-recipe-form select:focus,
.lv-recipe-form textarea:focus {
    border-color: var(--lv-green-soft);
    box-shadow: 0 0 0 3px rgba(91,127,103,0.12);
}

.lv-recipe-form textarea {
    min-height: 110px;
    resize: vertical;
}

.lv-recipe-full {
    grid-column: 1 / -1;
}

.lv-recipe-form .btn-green-cta {
    grid-column: 1 / -1;
    justify-self: start;
    border: 0;
    cursor: pointer;
}

@media (max-width: 900px) {
    .lv-recipes-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 620px) {
    .lv-recipe-form {
        grid-template-columns: 1fr;
    }

    .lv-recipe-full {
        grid-column: auto;
    }

    .lv-recipes-section-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .lv-recipe-content {
        grid-template-columns: 1fr;
    }

    .lv-recipe-notes {
        grid-column: auto;
    }
}


/* ============================================================
   MODULE 13 — ENCYCLOPÉDIE
   ============================================================ */

.lv-encyclopedia-page {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lv-encyclopedia-intro {
    padding: clamp(22px, 4vw, 38px);
    border-radius: 20px;
    background: rgba(253,255,250,0.88);
    border: 1px solid var(--lv-border);
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(10px);
}

.lv-encyclopedia-intro h1 {
    margin: 4px 0 8px;
    color: var(--lv-green-dark);
    font-size: clamp(28px, 4vw, 42px);
}

.lv-encyclopedia-intro > p:not(.lv-kicker) {
    max-width: 900px;
    margin: 0;
    color: #5d6e63;
}

.lv-encyclopedia-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.lv-encyclopedia-section-header > span {
    color: #718075;
    font: 11px var(--font-sans);
}

.lv-encyclopedia-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.lv-encyclopedia-card {
    min-width: 0;
    padding: 18px;
    border-radius: 15px;
    background: rgba(238,244,232,0.68);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-encyclopedia-card-head {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.lv-encyclopedia-icon {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: #e4eddf;
    font-size: 21px;
}

.lv-encyclopedia-card h3 {
    margin: 0;
    color: var(--lv-green-dark);
    font-size: 18px;
}

.lv-encyclopedia-category,
.lv-encyclopedia-summary {
    margin: 5px 0 0;
    color: #68786d;
    font: 11px/1.5 var(--font-sans);
}

.lv-encyclopedia-category {
    color: var(--lv-green-soft);
    font-weight: 700;
}

.lv-encyclopedia-details {
    margin-top: 14px;
    border-top: 1px solid rgba(67,96,71,0.10);
    padding-top: 11px;
}

.lv-encyclopedia-details summary {
    cursor: pointer;
    color: var(--lv-green-dark);
    font: 700 11px var(--font-sans);
}

.lv-encyclopedia-content {
    margin-top: 12px;
    color: #5e6f64;
    font: 12px/1.7 var(--font-sans);
}

.lv-encyclopedia-pillars {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.lv-encyclopedia-pillars article {
    display: flex;
    flex-direction: column;
    gap: 5px;
    min-width: 0;
    padding: 16px;
    border-radius: 14px;
    background: rgba(238,244,232,0.60);
    border: 1px solid rgba(67,96,71,0.09);
}

.lv-encyclopedia-pillars article > span {
    font-size: 22px;
}

.lv-encyclopedia-pillars strong {
    color: var(--lv-green-dark);
    font: 700 13px var(--font-sans);
}

.lv-encyclopedia-pillars small {
    color: #68786d;
    font: 11px/1.5 var(--font-sans);
}

@media (max-width: 1000px) {
    .lv-encyclopedia-pillars {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .lv-encyclopedia-grid {
        grid-template-columns: 1fr;
    }

    .lv-encyclopedia-section-header {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (max-width: 520px) {
    .lv-encyclopedia-pillars {
        grid-template-columns: 1fr;
    }
}


/* ============================================================
   MODULE 14 — AGENDA
   ============================================================ */

.lv-agenda-page {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lv-agenda-intro {
    padding: clamp(22px, 4vw, 38px);
    border-radius: 20px;
    background: rgba(253,255,250,0.88);
    border: 1px solid var(--lv-border);
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(10px);
}

.lv-agenda-intro h1 {
    margin: 4px 0 8px;
    color: var(--lv-green-dark);
    font-size: clamp(28px, 4vw, 42px);
}

.lv-agenda-intro > p:not(.lv-kicker) {
    max-width: 900px;
    margin: 0;
    color: #5d6e63;
}

.lv-agenda-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.lv-agenda-section-header > span {
    color: #718075;
    font: 11px var(--font-sans);
}

.lv-agenda-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.lv-agenda-event {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 14px;
    padding: 17px;
    border-radius: 15px;
    background: rgba(238,244,232,0.68);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-agenda-event-date {
    width: 48px;
    height: 48px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: #e4eddf;
    font-size: 21px;
}

.lv-agenda-event-body h3 {
    margin: 2px 0 4px;
    color: var(--lv-green-dark);
    font-size: 18px;
}

.lv-agenda-event-body time {
    color: var(--lv-green-soft);
    font: 700 11px var(--font-sans);
}

.lv-agenda-location,
.lv-agenda-description {
    margin: 7px 0 0;
    color: #68786d;
    font: 11px/1.55 var(--font-sans);
}

.lv-agenda-location::before {
    content: "⌖ ";
}

.lv-agenda-types > header {
    margin-bottom: 16px;
}

.lv-agenda-type-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.lv-agenda-type-grid article {
    display: flex;
    flex-direction: column;
    gap: 5px;
    min-width: 0;
    padding: 16px;
    border-radius: 14px;
    background: rgba(238,244,232,0.60);
    border: 1px solid rgba(67,96,71,0.09);
}

.lv-agenda-type-grid article > span {
    font-size: 22px;
}

.lv-agenda-type-grid strong {
    color: var(--lv-green-dark);
    font: 700 13px var(--font-sans);
}

.lv-agenda-type-grid small {
    color: #68786d;
    font: 11px/1.5 var(--font-sans);
}

@media (max-width: 1000px) {
    .lv-agenda-type-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .lv-agenda-section-header {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (max-width: 520px) {
    .lv-agenda-type-grid {
        grid-template-columns: 1fr;
    }

    .lv-agenda-event {
        grid-template-columns: 1fr;
    }
}


/* ============================================================
   MODULE 15 — CARTES & ZONES
   ============================================================ */

.lv-maps-page {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lv-maps-intro {
    padding: clamp(22px, 4vw, 38px);
    border-radius: 20px;
    background: rgba(253,255,250,0.88);
    border: 1px solid var(--lv-border);
    box-shadow: var(--lv-shadow);
    backdrop-filter: blur(10px);
}

.lv-maps-intro h1 {
    margin: 4px 0 8px;
    color: var(--lv-green-dark);
    font-size: clamp(28px, 4vw, 42px);
}

.lv-maps-intro > p:not(.lv-kicker) {
    max-width: 900px;
    margin: 0;
    color: #5d6e63;
}

.lv-maps-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.lv-maps-section-header > span {
    color: #718075;
    font: 11px var(--font-sans);
}

.lv-map-stage {
    position: relative;
    min-height: 310px;
    overflow: hidden;
    margin-top: 16px;
    border-radius: 17px;
    background:
        radial-gradient(circle at 22% 30%, rgba(137,171,126,.25) 0 2px, transparent 3px),
        radial-gradient(circle at 72% 62%, rgba(137,171,126,.20) 0 2px, transparent 3px),
        linear-gradient(135deg, #edf3e8, #e5eee0);
    border: 1px solid rgba(67,96,71,0.11);
}

.lv-map-stage-grid {
    position: absolute;
    inset: 0;
    opacity: .32;
    background-image:
        linear-gradient(rgba(67,96,71,.12) 1px, transparent 1px),
        linear-gradient(90deg, rgba(67,96,71,.12) 1px, transparent 1px);
    background-size: 42px 42px;
    transform: rotate(-3deg) scale(1.08);
}

.lv-map-stage-center {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 5px;
    text-align: center;
}

.lv-map-stage-center span {
    font-size: 36px;
}

.lv-map-stage-center strong {
    color: var(--lv-green-dark);
    font: 700 18px var(--font-sans);
}

.lv-map-stage-center small {
    color: #68786d;
    font: 11px var(--font-sans);
}

.lv-map-zones {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 14px;
}

.lv-map-zone {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 12px;
    min-width: 0;
    padding: 16px;
    border-radius: 14px;
    background: rgba(238,244,232,0.68);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-map-zone-icon {
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: #e4eddf;
    font-size: 21px;
}

.lv-map-zone h3 {
    margin: 2px 0 4px;
    color: var(--lv-green-dark);
    font-size: 17px;
}

.lv-map-zone-description,
.lv-map-coordinates {
    margin: 5px 0 0;
    color: #68786d;
    font: 11px/1.55 var(--font-sans);
}

.lv-map-coordinates {
    color: var(--lv-green-soft);
    font-weight: 700;
}

.lv-map-features > header {
    margin-bottom: 16px;
}

.lv-map-feature-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.lv-map-feature-grid article {
    display: flex;
    flex-direction: column;
    gap: 5px;
    min-width: 0;
    padding: 16px;
    border-radius: 14px;
    background: rgba(238,244,232,0.60);
    border: 1px solid rgba(67,96,71,0.09);
}

.lv-map-feature-grid article > span {
    font-size: 22px;
}

.lv-map-feature-grid strong {
    color: var(--lv-green-dark);
    font: 700 13px var(--font-sans);
}

.lv-map-feature-grid small {
    color: #68786d;
    font: 11px/1.5 var(--font-sans);
}

@media (max-width: 1000px) {
    .lv-map-feature-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .lv-maps-section-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .lv-map-zones {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 520px) {
    .lv-map-feature-grid {
        grid-template-columns: 1fr;
    }

    .lv-map-stage {
        min-height: 240px;
    }

    .lv-map-zone {
        grid-template-columns: 1fr;
    }
}


/* ============================================================
   MODULE 16 — ASSISTANT IA
   ============================================================ */

.lv-assistant-page{display:flex;flex-direction:column;gap:20px}
.lv-assistant-intro{padding:clamp(22px,4vw,38px);border-radius:20px;background:rgba(253,255,250,.88);border:1px solid var(--lv-border);box-shadow:var(--lv-shadow);backdrop-filter:blur(10px)}
.lv-assistant-intro h1{margin:4px 0 8px;color:var(--lv-green-dark);font-size:clamp(28px,4vw,42px)}
.lv-assistant-intro>p:not(.lv-kicker){max-width:900px;margin:0;color:#5d6e63}
.lv-assistant-section-header{display:flex;align-items:center;justify-content:space-between;gap:16px}
.lv-assistant-section-header>span{color:#718075;font:11px var(--font-sans)}
.lv-assistant-messages{display:flex;flex-direction:column;gap:12px;min-height:220px;max-height:520px;overflow-y:auto;margin-top:16px;padding:18px;border-radius:16px;background:rgba(244,248,241,.72);border:1px solid rgba(67,96,71,.09)}
.lv-assistant-message{display:flex;align-items:flex-start;gap:12px;max-width:820px;padding:15px;border-radius:14px}
.lv-assistant-message-system{background:rgba(255,255,255,.82);border:1px solid rgba(67,96,71,.09)}
.lv-assistant-message-icon{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border-radius:11px;background:#e4eddf}
.lv-assistant-message strong{display:block;color:var(--lv-green-dark);font:700 13px var(--font-sans)}
.lv-assistant-message p{margin:5px 0 0;color:#68786d;font:12px/1.65 var(--font-sans)}
.lv-assistant-form{margin-top:16px}
.lv-assistant-form>label{display:block;margin-bottom:7px;color:var(--lv-green-dark);font:700 11px var(--font-sans)}
.lv-assistant-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:stretch}
.lv-assistant-input-row textarea{width:100%;min-height:84px;resize:vertical;padding:13px 14px;border:1px solid rgba(67,96,71,.18);border-radius:13px;background:rgba(255,255,255,.90);color:#4d5f53;font:12px/1.5 var(--font-sans);outline:none}
.lv-assistant-input-row textarea:focus{border-color:rgba(67,96,71,.38);box-shadow:0 0 0 3px rgba(113,143,103,.10)}
.lv-assistant-submit{align-self:stretch;min-width:112px;padding:12px 18px;border:0;border-radius:13px;background:var(--lv-green-dark);color:#fff;cursor:pointer;font:700 11px var(--font-sans)}
.lv-assistant-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
.lv-assistant-suggestions button{padding:8px 11px;border:1px solid rgba(67,96,71,.12);border-radius:999px;background:rgba(238,244,232,.72);color:var(--lv-green-dark);cursor:pointer;font:600 10px var(--font-sans)}
.lv-assistant-principles>header{margin-bottom:16px}
.lv-assistant-principle-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.lv-assistant-principle-grid article{display:flex;flex-direction:column;gap:5px;min-width:0;padding:16px;border-radius:14px;background:rgba(238,244,232,.60);border:1px solid rgba(67,96,71,.09)}
.lv-assistant-principle-grid article>span{font-size:22px}
.lv-assistant-principle-grid strong{color:var(--lv-green-dark);font:700 13px var(--font-sans)}
.lv-assistant-principle-grid small{color:#68786d;font:11px/1.5 var(--font-sans)}
@media(max-width:1000px){.lv-assistant-principle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.lv-assistant-section-header{align-items:flex-start;flex-direction:column}.lv-assistant-input-row{grid-template-columns:1fr}.lv-assistant-submit{min-height:44px}}
@media(max-width:520px){.lv-assistant-principle-grid{grid-template-columns:1fr}.lv-assistant-messages{min-height:180px;padding:12px}.lv-assistant-suggestions{flex-direction:column}.lv-assistant-suggestions button{width:100%}}


/* ============================================================
   MODULE 17 — ENTRAIDE & FORUM DU VIVANT
   ============================================================ */

.lv-community-page{display:flex;flex-direction:column;gap:20px}
.lv-community-intro{padding:clamp(22px,4vw,38px);border-radius:20px;background:rgba(253,255,250,.88);border:1px solid var(--lv-border);box-shadow:var(--lv-shadow);backdrop-filter:blur(10px)}
.lv-community-intro h1{margin:4px 0 8px;color:var(--lv-green-dark);font-size:clamp(28px,4vw,42px)}
.lv-community-intro>p:not(.lv-kicker){max-width:900px;margin:0;color:#5d6e63}
.lv-community-section-header{display:flex;align-items:center;justify-content:space-between;gap:16px}
.lv-community-section-header>span,.lv-community-form-module header>span{color:#718075;font:11px var(--font-sans)}
.lv-community-form{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.lv-community-full{grid-column:1/-1}
.lv-community-form label{display:flex;flex-direction:column;gap:7px}
.lv-community-form label>span{color:var(--lv-green-dark);font:700 11px var(--font-sans)}
.lv-community-form input,.lv-community-form textarea{width:100%;box-sizing:border-box;padding:12px 13px;border:1px solid rgba(67,96,71,.16);border-radius:12px;background:rgba(255,255,255,.92);color:#4d5f53;font:12px/1.5 var(--font-sans);outline:none}
.lv-community-form input:focus,.lv-community-form textarea:focus{border-color:rgba(67,96,71,.38);box-shadow:0 0 0 3px rgba(113,143,103,.10)}
.lv-community-form input[type=file]{padding:10px;background:rgba(239,245,234,.72)}
.lv-community-upload-help{color:#718075;font:10px/1.5 var(--font-sans)}
.lv-community-image-info{min-height:18px;color:#607266;font:10px var(--font-sans)}
.lv-community-topics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}
.lv-community-topic{display:flex;min-width:0;overflow:hidden;border:1px solid rgba(67,96,71,.10);border-radius:16px;background:rgba(255,255,255,.78);box-shadow:0 8px 25px rgba(48,69,52,.06)}
.lv-community-topic-image{width:150px;height:150px;flex:0 0 150px;object-fit:cover;background:#edf2e9}
.lv-community-topic-content{display:flex;flex-direction:column;min-width:0;padding:15px}
.lv-community-topic-meta{display:flex;justify-content:space-between;gap:10px;color:#77857a;font:10px var(--font-sans)}
.lv-community-topic h3{margin:8px 0 6px;color:var(--lv-green-dark);font:700 16px/1.3 var(--font-sans)}
.lv-community-topic p{margin:0;color:#647368;font:12px/1.6 var(--font-sans)}
.lv-community-topic-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:12px;color:#78867c;font:10px var(--font-sans)}
.lv-community-topic-footer a,.lv-community-back{color:var(--lv-green-dark);font-weight:700;text-decoration:none}
.lv-community-topic-detail h1{margin:8px 0 16px;color:var(--lv-green-dark);font-size:clamp(24px,4vw,36px)}
.lv-community-topic-image-large{display:block;width:min(100%,900px);height:auto;max-height:620px;object-fit:contain;border-radius:14px;background:#eef3ea;margin:8px 0 20px}
.lv-community-topic-body{color:#59695e;font:13px/1.8 var(--font-sans)}
.lv-community-replies{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.lv-community-reply{padding:15px 17px;border-left:3px solid rgba(82,115,83,.35);border-radius:0 12px 12px 0;background:rgba(240,245,237,.72)}
.lv-community-reply p{margin:8px 0 0;color:#5f6f64;font:12px/1.7 var(--font-sans)}
.lv-community-reply-form{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.lv-community-reply-form textarea{width:100%;box-sizing:border-box;padding:13px;border:1px solid rgba(67,96,71,.16);border-radius:12px;background:#fff;font:12px/1.5 var(--font-sans);resize:vertical}
.lv-community-rule-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:16px}
.lv-community-rule-grid article{display:flex;flex-direction:column;gap:6px;padding:15px;border-radius:14px;background:rgba(238,244,232,.60);border:1px solid rgba(67,96,71,.09)}
.lv-community-rule-grid article>span{font-size:22px}
.lv-community-rule-grid strong{color:var(--lv-green-dark);font:700 12px var(--font-sans)}
.lv-community-rule-grid small{color:#68786d;font:11px/1.5 var(--font-sans)}
.lv-community-login-prompt{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.lv-community-login-prompt p{margin:0;color:#66756b;font:12px/1.6 var(--font-sans)}
@media(max-width:1050px){.lv-community-topics{grid-template-columns:1fr}.lv-community-rule-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.lv-community-form{grid-template-columns:1fr}.lv-community-full{grid-column:auto}.lv-community-section-header{align-items:flex-start;flex-direction:column}.lv-community-topic{flex-direction:column}.lv-community-topic-image{width:100%;height:210px;flex-basis:auto}.lv-community-rule-grid{grid-template-columns:1fr}}
@media(max-width:520px){.lv-community-topic-footer{align-items:flex-start;flex-direction:column}}


/* ============================================================
   MODULE 18 — CONTRIBUTION PARTICIPATIVE
   ============================================================ */

.lv-plant-contribution-page .lv-module-notice{margin-top:18px}
.lv-plant-photo-guide{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.lv-plant-photo-guide article{display:flex;flex-direction:column;gap:6px;padding:14px;border-radius:14px;background:rgba(238,244,232,.62);border:1px solid rgba(67,96,71,.09)}
.lv-plant-photo-guide article>span{font-size:22px}
.lv-plant-photo-guide strong{color:var(--lv-green-dark);font:700 11px var(--font-sans)}
.lv-plant-photo-guide small{color:#68786d;font:10px/1.5 var(--font-sans)}
.lv-plant-process{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:16px}
.lv-plant-process article{display:flex;flex-direction:column;gap:6px;padding:16px;border-radius:14px;background:rgba(255,255,255,.72);border:1px solid rgba(67,96,71,.10)}
.lv-plant-process b{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:rgba(79,113,79,.12);color:var(--lv-green-dark);font:700 10px var(--font-sans)}
.lv-plant-process strong{color:var(--lv-green-dark);font:700 12px var(--font-sans)}
.lv-plant-process span{color:#68786d;font:10px/1.5 var(--font-sans)}
@media(max-width:900px){.lv-plant-photo-guide,.lv-plant-process{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.lv-plant-photo-guide,.lv-plant-process{grid-template-columns:1fr}}


/* ============================================================
   MODULE 19 — VALIDATION DES CONTRIBUTIONS
   ============================================================ */

.lv-review-filters{display:flex;flex-wrap:wrap;gap:7px;padding:10px;border-radius:14px;background:rgba(238,244,232,.68);border:1px solid rgba(67,96,71,.09)}
.lv-review-filters a{padding:9px 12px;border-radius:10px;color:#68786d;text-decoration:none;font:700 10px var(--font-sans)}
.lv-review-filters a.is-active{background:rgba(79,113,79,.15);color:var(--lv-green-dark)}
.lv-review-list{display:flex;flex-direction:column;gap:14px}
.lv-review-card{display:grid;grid-template-columns:minmax(260px,380px) 1fr;overflow:hidden;border:1px solid rgba(67,96,71,.10);border-radius:18px;background:rgba(255,255,255,.78);box-shadow:0 8px 25px rgba(48,69,52,.06)}
.lv-review-card>img{width:100%;height:100%;min-height:280px;object-fit:cover;background:#edf2e9}
.lv-review-card-content{display:flex;flex-direction:column;gap:9px;padding:18px}
.lv-review-card-content h3{margin:0;color:var(--lv-green-dark);font:700 19px/1.3 var(--font-sans)}
.lv-review-card-content>p{margin:0;color:#607066;font:12px/1.65 var(--font-sans)}
.lv-review-place{color:#718075!important}
.lv-review-form{display:grid;grid-template-columns:180px 1fr;gap:10px;margin-top:auto;padding-top:8px}
.lv-review-form label{display:flex;flex-direction:column;gap:6px}
.lv-review-form label>span{color:var(--lv-green-dark);font:700 10px var(--font-sans)}
.lv-review-form select,.lv-review-form textarea{width:100%;box-sizing:border-box;padding:10px;border:1px solid rgba(67,96,71,.16);border-radius:10px;background:#fff;color:#5d6d62;font:11px/1.5 var(--font-sans)}
.lv-review-form button{grid-column:1/-1;justify-self:start}
@media(max-width:800px){.lv-review-card{grid-template-columns:1fr}.lv-review-card>img{height:250px;min-height:0}.lv-review-form{grid-template-columns:1fr}.lv-review-form button{grid-column:auto}}


/* ============================================================
   MODULE 20 — ASSISTANCE IA
   ============================================================ */

.lv-ai-photo-check{padding:16px;border-radius:15px;background:rgba(238,244,232,.58);border:1px solid rgba(67,96,71,.09)}
.lv-ai-photo-check h3{margin:0 0 12px;color:var(--lv-green-dark);font:700 13px var(--font-sans)}
.lv-ai-photo-check>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.lv-ai-photo-check article{display:flex;flex-direction:column;gap:5px;padding:11px;border-radius:11px;background:rgba(255,255,255,.72)}
.lv-ai-photo-check b{color:var(--lv-green-dark);font:700 9px var(--font-sans)}
.lv-ai-photo-check strong{color:var(--lv-green-dark);font:700 10px var(--font-sans)}
.lv-ai-photo-check span{color:#68786d;font:10px/1.45 var(--font-sans)}
.lv-ai-output-contract{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin-top:14px}
.lv-ai-output-contract article{display:flex;flex-direction:column;gap:6px;padding:15px;border-radius:14px;background:rgba(255,255,255,.72);border:1px solid rgba(67,96,71,.10)}
.lv-ai-output-contract strong{color:var(--lv-green-dark);font:700 11px var(--font-sans)}
.lv-ai-output-contract span{color:#68786d;font:10px/1.5 var(--font-sans)}
@media(max-width:850px){.lv-ai-photo-check>div{grid-template-columns:repeat(2,minmax(0,1fr))}.lv-ai-output-contract{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.lv-ai-photo-check>div,.lv-ai-output-contract{grid-template-columns:1fr}}


/* ============================================================
   MODULE 21 — CARNET D’OBSERVATIONS
   ============================================================ */

.lv-observation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}
.lv-observation-card{display:grid;grid-template-columns:150px 1fr;overflow:hidden;border:1px solid rgba(67,96,71,.10);border-radius:16px;background:rgba(255,255,255,.78);box-shadow:0 8px 25px rgba(48,69,52,.06)}
.lv-observation-card>img,.lv-observation-no-image{width:150px;height:100%;min-height:180px;object-fit:cover;background:#edf2e9}
.lv-observation-no-image{display:flex;align-items:center;justify-content:center;font-size:38px}
.lv-observation-card-body{display:flex;flex-direction:column;gap:8px;padding:15px;min-width:0}
.lv-observation-card-body h3{margin:0;color:var(--lv-green-dark);font:700 16px/1.3 var(--font-sans)}
.lv-observation-card-body>p{margin:0;color:#65746a;font:11px/1.6 var(--font-sans)}
.lv-observation-identification{display:flex;flex-direction:column;gap:4px;padding:9px 10px;border-radius:10px;background:rgba(238,244,232,.72)}
.lv-observation-identification strong{color:var(--lv-green-dark);font:700 11px var(--font-sans)}
.lv-observation-identification span{color:#718075;font:9px var(--font-sans)}
.lv-observation-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:auto;color:#78867c;font:9px var(--font-sans)}
.lv-observation-footer form{margin:0}
.lv-observation-footer button{border:0;background:none;padding:0;color:#9a6d6d;cursor:pointer;font:9px var(--font-sans)}
@media(max-width:850px){.lv-observation-grid{grid-template-columns:1fr}}
@media(max-width:520px){.lv-observation-card{grid-template-columns:1fr}.lv-observation-card>img,.lv-observation-no-image{width:100%;height:210px;min-height:0}}


/* ============================================================
   MODULE 22 — CALENDRIER DU VIVANT / PHÉNOLOGIE
   ============================================================ */

.lv-phenology-header{display:flex;align-items:center;justify-content:space-between;gap:14px}
.lv-phenology-navigation{display:flex;align-items:center;gap:6px}
.lv-phenology-navigation a{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:32px;padding:0 9px;border-radius:9px;background:rgba(238,244,232,.72);color:var(--lv-green-dark);text-decoration:none;font:700 10px var(--font-sans)}
.lv-phenology-navigation a:first-child,.lv-phenology-navigation a:last-child{font-size:20px}
.lv-phenology-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-top:16px}
.lv-phenology-weekday{padding:8px 5px;text-align:center;color:#718075;font:700 9px var(--font-sans)}
.lv-phenology-day{min-height:112px;padding:8px;border-radius:11px;background:rgba(255,255,255,.72);border:1px solid rgba(67,96,71,.09)}
.lv-phenology-day.is-empty{background:rgba(238,244,232,.30);border-color:transparent}
.lv-phenology-day.is-today{box-shadow:inset 0 0 0 2px rgba(79,113,79,.22)}
.lv-phenology-day>b{display:block;margin-bottom:6px;color:var(--lv-green-dark);font:700 11px var(--font-sans)}
.lv-phenology-event{display:block;margin-top:4px;padding:4px 5px;border-radius:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#607066;background:rgba(238,244,232,.72);font:9px var(--font-sans)}
.lv-phenology-event.is-flowering{background:rgba(238,221,231,.68)}
.lv-phenology-event.is-fruiting{background:rgba(246,232,206,.72)}
.lv-phenology-event.is-germination{background:rgba(224,237,217,.75)}
.lv-phenology-event.is-growth{background:rgba(219,234,232,.72)}
.lv-phenology-event.is-migration{background:rgba(226,225,241,.72)}
@media(max-width:760px){.lv-phenology-calendar{gap:3px}.lv-phenology-day{min-height:90px;padding:6px}.lv-phenology-event{font-size:8px}}
@media(max-width:520px){.lv-phenology-header{align-items:flex-start;flex-direction:column}.lv-phenology-day{min-height:64px}.lv-phenology-event{display:block;font-size:7px;padding:3px 4px}.lv-phenology-day b{font-size:10px}.lv-phenology-weekday{font-size:8px}}


/* ============================================================
   MODULE 23 — ALERTES SAISONNIÈRES
   ============================================================ */

.lv-alert-list{display:flex;flex-direction:column;gap:11px;margin-top:16px}
.lv-alert-card{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:13px;padding:14px;border:1px solid rgba(67,96,71,.10);border-radius:15px;background:rgba(255,255,255,.76)}
.lv-alert-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:rgba(238,244,232,.82);font-size:19px}
.lv-alert-body{min-width:0}
.lv-alert-body h3{margin:3px 0 5px;color:var(--lv-green-dark);font:700 14px/1.35 var(--font-sans)}
.lv-alert-body p{margin:3px 0;color:#68786d;font:10px/1.5 var(--font-sans)}
.lv-alert-actions{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.lv-alert-state{padding:4px 7px;border-radius:8px;background:rgba(238,244,232,.75);color:#718075;font:700 8px var(--font-sans);text-transform:uppercase}
.lv-alert-state.is-active{color:var(--lv-green-dark);background:rgba(221,237,218,.80)}
.lv-alert-actions form{margin:0}
.lv-alert-actions button{border:0;background:none;padding:2px;color:var(--lv-green-dark);cursor:pointer;font:700 9px var(--font-sans)}
.lv-alert-actions button.is-danger{color:#9a6d6d}
@media(max-width:650px){.lv-alert-card{grid-template-columns:42px 1fr}.lv-alert-actions{grid-column:1/-1;flex-direction:row;align-items:center;justify-content:flex-end}}


/* ============================================================
   MODULE 24 — CENTRE DE NOTIFICATIONS
   ============================================================ */

.lv-notification-summary{display:flex;align-items:baseline;gap:8px;margin-top:14px;padding:13px 15px;border-radius:13px;background:rgba(238,244,232,.70);width:max-content}
.lv-notification-summary strong{color:var(--lv-green-dark);font:700 24px var(--font-sans)}
.lv-notification-summary span{color:#718075;font:10px var(--font-sans)}
.lv-notification-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.lv-notification-card{display:grid;grid-template-columns:46px 1fr;gap:12px;padding:14px;border:1px solid rgba(67,96,71,.10);border-radius:15px;background:rgba(255,255,255,.76)}
.lv-notification-card.is-unread{box-shadow:inset 3px 0 0 rgba(79,113,79,.55);background:rgba(247,250,245,.88)}
.lv-notification-mark{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:rgba(238,244,232,.82);font-size:18px}
.lv-notification-body{min-width:0}
.lv-notification-body h3{margin:3px 0 5px;color:var(--lv-green-dark);font:700 14px/1.35 var(--font-sans)}
.lv-notification-body p{margin:0;color:#68786d;font:10px/1.55 var(--font-sans)}
.lv-notification-links{display:flex;align-items:center;gap:10px;margin-top:9px}
.lv-notification-links form{margin:0}
.lv-notification-links button,.lv-notification-links a,.lv-notification-read-all{border:0;background:none;padding:2px;color:var(--lv-green-dark);cursor:pointer;text-decoration:none;font:700 9px var(--font-sans)}
@media(max-width:520px){.lv-notification-summary{width:auto}.lv-notification-card{grid-template-columns:1fr}.lv-notification-mark{width:36px;height:36px}}


/* ============================================================
   MODULE 25 — PRÉFÉRENCES DE NOTIFICATIONS
   ============================================================ */

.lv-preferences-table-wrap{overflow-x:auto;margin-top:16px}
.lv-preferences-table{width:100%;border-collapse:separate;border-spacing:0;min-width:640px}
.lv-preferences-table th,.lv-preferences-table td{padding:13px 11px;border-bottom:1px solid rgba(67,96,71,.09);text-align:left;color:#68786d;font:10px var(--font-sans)}
.lv-preferences-table thead th{color:var(--lv-green-dark);font-weight:700;background:rgba(238,244,232,.58)}
.lv-preferences-table thead th:first-child{border-radius:10px 0 0 10px}
.lv-preferences-table thead th:last-child{border-radius:0 10px 10px 0}
.lv-preferences-table tbody th{color:var(--lv-green-dark);font-weight:700}
.lv-pref-check{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.lv-pref-check input{accent-color:var(--lv-green-dark)}
.lv-preferences-form{display:flex;flex-direction:column;gap:15px}
@media(max-width:700px){.lv-preferences-table{min-width:590px}}


/* ============================================================
   MODULE 29 — TRANSPORT PUSH
   ============================================================ */

.lv-push-device-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.lv-push-device{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;padding:13px;border:1px solid rgba(67,96,71,.10);border-radius:14px;background:rgba(255,255,255,.76)}
.lv-push-device-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:rgba(238,244,232,.82);font-size:17px}
.lv-push-device-body{display:flex;flex-direction:column;gap:3px;min-width:0}
.lv-push-device-body strong{color:var(--lv-green-dark);font:700 11px var(--font-sans)}
.lv-push-device-body span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#718075;font:9px var(--font-sans)}
.lv-push-device-body small{color:#8a978e;font:8px var(--font-sans);text-transform:uppercase}
.lv-push-device form{margin:0}
.lv-push-device button{border:0;background:none;color:#9a6d6d;cursor:pointer;font:700 9px var(--font-sans)}
.lv-push-explanation{color:#68786d;font:10px/1.6 var(--font-sans)}
@media(max-width:560px){.lv-push-device{grid-template-columns:38px 1fr}.lv-push-device form{grid-column:2}}


/* ============================================================
   MODULE 30 — ADMINISTRATION DES NOTIFICATIONS
   ============================================================ */

.lv-admin-stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:0 0 15px}
.lv-admin-stat-grid article{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid rgba(67,96,71,.10);border-radius:14px;background:rgba(255,255,255,.76)}
.lv-admin-stat-grid strong{color:var(--lv-green-dark);font:700 22px var(--font-sans)}
.lv-admin-stat-grid span{color:#718075;font:9px var(--font-sans)}
.lv-admin-table-wrap{overflow-x:auto;margin-top:15px}
.lv-admin-table{width:100%;min-width:900px;border-collapse:separate;border-spacing:0}
.lv-admin-table th,.lv-admin-table td{padding:9px 8px;border-bottom:1px solid rgba(67,96,71,.08);text-align:left;vertical-align:top;color:#68786d;font:9px/1.4 var(--font-sans)}
.lv-admin-table thead th{color:var(--lv-green-dark);font-weight:700;background:rgba(238,244,232,.58)}
.lv-admin-table td:nth-child(8){max-width:240px;word-break:break-word}
.lv-admin-table form{margin:0}
.lv-admin-table button{border:0;background:none;color:var(--lv-green-dark);cursor:pointer;font:700 9px var(--font-sans)}
.lv-admin-status{display:inline-block;padding:4px 6px;border-radius:7px;background:rgba(238,244,232,.75);font:700 8px var(--font-sans);text-transform:uppercase}
.lv-admin-status.is-failed{color:#9a6d6d;background:rgba(247,235,235,.82)}
.lv-admin-status.is-sent{color:var(--lv-green-dark);background:rgba(221,237,218,.80)}
.lv-admin-status.is-processing{color:#8b7755;background:rgba(246,239,222,.82)}
@media(max-width:850px){.lv-admin-stat-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:520px){.lv-admin-stat-grid{grid-template-columns:repeat(2,1fr)}}


/* ============================================================
   NAVIGATION UNIFIÉE — regroupement sans modification graphique
   ============================================================ */
.lv-nav-group{margin:2px 0}
.lv-nav-group summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:11px;color:inherit}
.lv-nav-group summary::-webkit-details-marker{display:none}
.lv-nav-group summary::after{content:'›';margin-left:auto;opacity:.55;transition:transform .15s ease}
.lv-nav-group[open] summary::after{transform:rotate(90deg)}
.lv-nav-group summary strong{font:inherit}
.lv-nav-group-links{display:flex;flex-direction:column;gap:2px;padding:2px 0 5px 12px}
.lv-nav-group-links a{padding-left:11px}
.lv-nav-group-links a .lv-nav-icon{min-width:18px}

/* ============================================================
   PHASE 4 — CONTRATS INTER-MODULES
   ============================================================ */
.lv-health-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:15px}
.lv-health-card{display:flex;flex-direction:column;gap:5px;padding:14px;border:1px solid rgba(67,96,71,.10);border-radius:14px;background:rgba(255,255,255,.76)}
.lv-health-card strong{color:var(--lv-green-dark);font:700 11px var(--font-sans);text-transform:capitalize}
.lv-health-card span{color:#718075;font:9px var(--font-sans)}
@media(max-width:760px){.lv-health-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.lv-health-grid{grid-template-columns:1fr}}

/* ============================================================
   CONNEXION — FENÊTRE MODALE
   ============================================================ */

.lv-login[hidden] {
    display: none;
}

.lv-login {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: grid;
    place-items: center;
    padding: 20px;
}

.lv-login-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(25, 38, 28, .42);
    backdrop-filter: blur(5px);
}

.lv-login-box {
    position: relative;
    z-index: 1;
    width: min(100%, 420px);
    padding: 34px 30px 30px;
    border: 1px solid rgba(67, 96, 71, .12);
    border-radius: 24px;
    background: #fff;
    box-shadow: 0 24px 70px rgba(35, 55, 40, .18);
}

.lv-login-close {
    position: absolute;
    top: 14px;
    right: 16px;
    width: 32px;
    height: 32px;
    border: 0;
    border-radius: 50%;
    background: rgba(238, 244, 232, .75);
    color: var(--lv-green-dark);
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
}

.lv-login-close:hover {
    background: rgba(221, 237, 218, .95);
}

.lv-login-logo {
    display: block;
    width: 74px;
    height: 74px;
    margin: 0 auto 18px;
    object-fit: contain;
}

.lv-login-box h2 {
    margin: 0 0 26px;
    color: var(--lv-green-dark);
    text-align: center;
    font: 700 24px/1.2 var(--font-sans);
}

.lv-login-form {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.lv-login-form label {
    display: flex;
    flex-direction: column;
    gap: 7px;
    color: var(--lv-green-dark);
    font: 600 13px/1.4 var(--font-sans);
}

.lv-login-form input {
    width: 100%;
    box-sizing: border-box;
    padding: 13px 14px;
    border: 1px solid rgba(67, 96, 71, .18);
    border-radius: 12px;
    background: #fbfcfa;
    color: var(--lv-green-dark);
    font: 14px var(--font-sans);
    outline: none;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.lv-login-form input:focus {
    border-color: var(--lv-green-dark);
    box-shadow: 0 0 0 3px rgba(67, 96, 71, .10);
}

.lv-login-form button[type="submit"] {
    margin-top: 4px;
    padding: 14px 18px;
    border: 0;
    border-radius: 12px;
    background: var(--lv-green-dark);
    color: #fff;
    font: 700 14px var(--font-sans);
    cursor: pointer;
    transition: opacity .15s ease, transform .15s ease;
}

.lv-login-form button[type="submit"]:hover {
    opacity: .9;
}

.lv-login-form button[type="submit"]:active {
    transform: translateY(1px);
}

@media (max-width: 480px) {
    .lv-login {
        padding: 14px;
    }

    .lv-login-box {
        padding: 30px 22px 24px;
        border-radius: 20px;
    }
}


/* ============================================================
   MODULE 22 — CONSULTATION D'UNE OBSERVATION
   ============================================================ */

.lv-phenology-event {
    width: 100%;
    box-sizing: border-box;
    border: 0;
    text-align: left;
    cursor: pointer;
}

.lv-phenology-event:hover,
.lv-phenology-event:focus-visible {
    outline: 2px solid rgba(67,96,71,.28);
    outline-offset: 1px;
}

.lv-phenology-modal[hidden] {
    display: none;
}

.lv-phenology-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: grid;
    place-items: center;
    padding: 20px;
}

.lv-phenology-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(25,38,28,.42);
    backdrop-filter: blur(5px);
}

.lv-phenology-modal-box {
    position: relative;
    z-index: 1;
    width: min(100%, 560px);
    max-height: min(720px, calc(100vh - 40px));
    overflow-y: auto;
    padding: 32px 30px 30px;
    border: 1px solid rgba(67,96,71,.12);
    border-radius: 24px;
    background: #fff;
    box-shadow: 0 24px 70px rgba(35,55,40,.18);
}

.lv-phenology-modal-close {
    position: absolute;
    top: 14px;
    right: 16px;
    width: 32px;
    height: 32px;
    border: 0;
    border-radius: 50%;
    background: rgba(238,244,232,.75);
    color: var(--lv-green-dark);
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
}

.lv-phenology-modal-close:hover,
.lv-phenology-modal-close:focus-visible {
    background: rgba(221,237,218,.95);
    outline: 2px solid rgba(67,96,71,.22);
}

.lv-phenology-modal-kicker {
    margin-bottom: 8px;
    color: #718075;
    font: 700 9px var(--font-sans);
    letter-spacing: .12em;
}

.lv-phenology-modal-box h2 {
    margin: 0 38px 22px 0;
    color: var(--lv-green-dark);
    font: 700 24px/1.25 var(--font-sans);
}

.lv-phenology-detail-grid {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 10px;
}

.lv-phenology-detail {
    padding: 12px 13px;
    border: 1px solid rgba(67,96,71,.10);
    border-radius: 12px;
    background: rgba(238,244,232,.45);
}

.lv-phenology-detail span,
.lv-phenology-modal-notes-wrap > span {
    display: block;
    margin-bottom: 5px;
    color: #718075;
    font: 700 9px var(--font-sans);
    text-transform: uppercase;
    letter-spacing: .06em;
}

.lv-phenology-detail strong {
    display: block;
    color: #455449;
    font: 500 13px/1.4 var(--font-sans);
    overflow-wrap: anywhere;
}

.lv-phenology-modal-notes-wrap {
    margin-top: 14px;
    padding: 14px;
    border: 1px solid rgba(67,96,71,.10);
    border-radius: 14px;
    background: rgba(255,255,255,.72);
}

.lv-phenology-modal-notes-wrap p {
    margin: 0;
    color: #536057;
    font: 400 13px/1.6 var(--font-sans);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

@media(max-width:520px) {
    .lv-phenology-modal {
        padding: 10px;
    }

    .lv-phenology-modal-box {
        max-height: calc(100vh - 20px);
        padding: 28px 18px 20px;
        border-radius: 20px;
    }

    .lv-phenology-modal-box h2 {
        font-size: 20px;
    }

    .lv-phenology-detail-grid {
        grid-template-columns: 1fr;
    }
}

/* ============================================================
   MODULE 13 — RECHERCHE ENCYCLOPÉDIE
   ============================================================ */

.lv-encyclopedia-search {
    margin-top: 24px;
    padding: 18px;
    border-radius: 16px;
    background: rgba(238,244,232,0.72);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-encyclopedia-search > label {
    display: block;
    margin-bottom: 9px;
    color: var(--lv-green-dark);
    font: 700 13px var(--font-sans);
}

.lv-encyclopedia-search-row {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 50px;
    padding: 5px 6px 5px 15px;
    background: #fff;
    border: 1px solid rgba(67,96,71,0.16);
    border-radius: 14px;
    box-shadow: 0 6px 18px rgba(38,61,43,0.06);
}

.lv-encyclopedia-search-row:focus-within {
    border-color: var(--lv-green-soft);
    box-shadow: 0 0 0 3px rgba(67,96,71,0.09);
}

.lv-encyclopedia-search-icon {
    flex: 0 0 auto;
    font-size: 18px;
}

.lv-encyclopedia-search-row input {
    min-width: 0;
    flex: 1;
    height: 40px;
    border: 0;
    outline: 0;
    background: transparent;
    color: var(--lv-green-dark);
    font: 14px var(--font-sans);
}

.lv-encyclopedia-search-row button {
    flex: 0 0 auto;
    min-height: 40px;
    padding: 0 18px;
    border: 0;
    border-radius: 10px;
    background: var(--lv-green-dark);
    color: #fff;
    cursor: pointer;
    font: 700 12px var(--font-sans);
}

.lv-encyclopedia-search-row button:hover {
    opacity: 0.92;
}

.lv-encyclopedia-search-hints {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 11px;
}

.lv-encyclopedia-search-hints span {
    padding: 5px 9px;
    border-radius: 999px;
    background: rgba(255,255,255,0.72);
    color: #68786d;
    font: 10px var(--font-sans);
}

.lv-encyclopedia-results {
    display: grid;
    gap: 9px;
}

.lv-encyclopedia-result {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
    padding: 14px 15px;
    border-radius: 14px;
    background: rgba(238,244,232,0.60);
    border: 1px solid rgba(67,96,71,0.09);
    text-decoration: none;
    transition: transform 120ms ease, box-shadow 120ms ease, background 120ms ease;
}

.lv-encyclopedia-result:hover {
    transform: translateY(-1px);
    background: rgba(238,244,232,0.86);
    box-shadow: 0 8px 20px rgba(38,61,43,0.07);
}

.lv-encyclopedia-result-icon {
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: #e4eddf;
    font-size: 20px;
}

.lv-encyclopedia-result-body {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.lv-encyclopedia-result-body strong {
    overflow: hidden;
    color: var(--lv-green-dark);
    text-overflow: ellipsis;
    white-space: nowrap;
    font: 700 14px var(--font-sans);
}

.lv-encyclopedia-result-body small,
.lv-encyclopedia-result-scientific {
    margin-top: 3px;
    color: #68786d;
    font: 10px/1.45 var(--font-sans);
}

.lv-encyclopedia-result-scientific {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lv-encyclopedia-result-arrow {
    color: var(--lv-green-soft);
    font-size: 18px;
}

.lv-encyclopedia-detail {
    padding: clamp(20px, 4vw, 34px);
    border-radius: 17px;
    background: rgba(238,244,232,0.62);
    border: 1px solid rgba(67,96,71,0.10);
}

.lv-encyclopedia-detail-badge {
    display: inline-flex;
    padding: 5px 9px;
    border-radius: 999px;
    background: #e4eddf;
    color: var(--lv-green-soft);
    font: 700 10px var(--font-sans);
}

.lv-encyclopedia-detail h3 {
    margin: 12px 0 4px;
    color: var(--lv-green-dark);
    font-size: clamp(22px, 3vw, 32px);
}

.lv-encyclopedia-detail-scientific {
    margin: 0 0 18px;
    color: #68786d;
    font-style: italic;
}

.lv-encyclopedia-detail dl {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin: 0;
}

.lv-encyclopedia-detail dl > div {
    padding: 12px;
    border-radius: 12px;
    background: rgba(255,255,255,0.60);
}

.lv-encyclopedia-detail dt {
    color: #718075;
    font: 10px var(--font-sans);
}

.lv-encyclopedia-detail dd {
    margin: 4px 0 0;
    color: var(--lv-green-dark);
    font: 700 12px var(--font-sans);
}

.lv-encyclopedia-detail-description,
.lv-encyclopedia-detail-names {
    margin-top: 20px;
}

.lv-encyclopedia-detail h4 {
    margin: 0 0 8px;
    color: var(--lv-green-dark);
    font: 700 13px var(--font-sans);
}

.lv-encyclopedia-detail-description p {
    margin: 0;
    color: #5e6f64;
    font: 12px/1.7 var(--font-sans);
}

.lv-encyclopedia-detail-names ul {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    padding: 0;
    margin: 0;
    list-style: none;
}

.lv-encyclopedia-detail-names li {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 10px 12px;
    border-radius: 11px;
    background: rgba(255,255,255,0.58);
}

.lv-encyclopedia-detail-names li strong {
    color: var(--lv-green-dark);
    font: 700 12px var(--font-sans);
}

.lv-encyclopedia-detail-names li small {
    color: #718075;
    font: 10px var(--font-sans);
}

.lv-encyclopedia-detail a {
    display: inline-block;
    margin-top: 18px;
    color: var(--lv-green-soft);
    font: 700 11px var(--font-sans);
    text-decoration: none;
}

@media (max-width: 680px) {
    .lv-encyclopedia-search-row {
        align-items: stretch;
        flex-wrap: wrap;
        padding: 7px;
    }

    .lv-encyclopedia-search-icon {
        display: none;
    }

    .lv-encyclopedia-search-row input {
        flex-basis: calc(100% - 8px);
    }

    .lv-encyclopedia-search-row button {
        width: 100%;
    }

    .lv-encyclopedia-detail dl,
    .lv-encyclopedia-detail-names ul {
        grid-template-columns: 1fr;
    }
}
