/* Platform app shell — extends design-system.css */
.app-shell { background: var(--color-bg, #F5F7F4); min-height: 100vh; }
.app-header { background: #fff; border-bottom: 1px solid rgba(10,41,26,.08); padding: .75rem 0; }
.app-header__inner, .app-layout { max-width: 1200px; margin: 0 auto; padding: 0 1.25rem; }
.app-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.app-header__meta { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.app-header__user { font-size: .875rem; color: var(--color-text-muted); }
.app-layout { display: grid; grid-template-columns: 220px 1fr; gap: 1.5rem; padding-top: 1.5rem; padding-bottom: 3rem; }
.app-sidebar { position: sticky; top: 1rem; align-self: start; }
.app-nav { display: flex; flex-direction: column; gap: .25rem; }
.app-nav__link { display: block; padding: .625rem .875rem; border-radius: 8px; color: var(--color-text); text-decoration: none; font-weight: 500; }
.app-nav__link.is-active, .app-nav__link:hover { background: rgba(125,184,68,.12); color: var(--color-dark); }
.app-main { min-width: 0; }
.app-page__header { margin-bottom: 1.5rem; }
.app-page__header h1 { margin: 0 0 .5rem; font-size: 1.75rem; }
.app-section { margin-top: 1.5rem; }
.app-section--card, .app-form--card, .auth-card, .kpi-card, .listing-card {
  background: #fff; border-radius: 12px; padding: 1.25rem; box-shadow: 0 4px 24px rgba(10,41,26,.06);
}
.auth-page {
  padding: 2.5rem 0 3rem;
  min-height: 50vh;
}
.auth-page h1 {
  color: var(--color-dark);
}
.auth-card h1 {
  margin-bottom: 0.5rem;
}
.auth-card { max-width: 440px; margin: 0 auto; }
.auth-card--wide { max-width: 560px; }
.auth-footer { margin-top: 1.25rem; font-size: .9375rem; }
.app-form { display: flex; flex-direction: column; gap: 1rem; }
.form-field { display: flex; flex-direction: column; gap: .375rem; }
.form-field input, .form-field select, .form-field textarea {
  padding: .625rem .75rem; border: 1px solid rgba(10,41,26,.15); border-radius: 8px; font: inherit;
}
.form-check { display: flex; align-items: center; gap: .5rem; font-size: .9375rem; }
.form-actions { display: flex; gap: .75rem; margin-top: .5rem; }
.btn--block { width: 100%; justify-content: center; }
.btn--sm { padding: .375rem .75rem; font-size: .8125rem; }
.kpi-grid, .listing-grid, .admin-grid { display: grid; gap: 1rem; }
.kpi-grid { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.listing-grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.admin-grid { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.kpi-card__label { display: block; font-size: .8125rem; color: var(--color-text-muted); margin-bottom: .25rem; }
.role-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.role-option { display: flex; align-items: center; gap: .5rem; padding: .625rem; border: 1px solid rgba(10,41,26,.12); border-radius: 8px; cursor: pointer; }
.role-option:has(input:checked) { border-color: var(--color-accent); background: rgba(125,184,68,.08); }
.step-indicator { display: flex; gap: .5rem; list-style: none; padding: 0; margin: 1rem 0 0; }
.step-indicator li { width: 2rem; height: 2rem; border-radius: 999px; display: grid; place-items: center; background: rgba(10,41,26,.08); font-size: .875rem; font-weight: 600; }
.step-indicator li.is-done { background: var(--color-accent); color: #fff; }
.tab-nav { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.tab-nav__link { padding: .5rem .875rem; border-radius: 999px; text-decoration: none; color: var(--color-text-muted); background: #fff; border: 1px solid rgba(10,41,26,.1); font-size: .875rem; }
.tab-nav__link.is-active { background: var(--color-dark); color: #fff; border-color: var(--color-dark); }
.farm-map { height: 280px; border-radius: 12px; background: #e8ede9; margin: 1rem 0; }
.farm-map--tall { height: 420px; }
.earnings-preview { text-align: center; padding: 1.5rem; background: rgba(125,184,68,.08); border-radius: 12px; }
.earnings-preview strong { display: block; font-size: 2rem; margin: .5rem 0; color: var(--color-dark); }
.detail-list { display: grid; grid-template-columns: auto 1fr; gap: .5rem 1.5rem; }
.detail-list dt { color: var(--color-text-muted); }
.alert { padding: .75rem 1rem; border-radius: 8px; margin-bottom: 1rem; }
.alert--error { background: #fef2f2; color: #991b1b; }
.alert--success { background: #ecfdf5; color: #065f46; }
.evidence-list { list-style: none; padding: 0; margin-top: 1.5rem; }
.evidence-list__item { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; align-items: center; padding: 0.75rem 0; border-bottom: 1px solid rgba(10,41,26,.08); }
.evidence-list__type { font-weight: 600; }
.evidence-list__date { color: var(--color-text-muted); font-size: 0.875rem; }
.baseline-card { padding: 1rem 0; border-bottom: 1px solid rgba(10,41,26,.08); }
.baseline-card:last-child { border-bottom: 0; }
.baseline-card__header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.75rem; }
.badge { font-size: 0.75rem; padding: 0.25rem 0.625rem; border-radius: 999px; text-transform: uppercase; font-weight: 600; }
.badge--draft { background: #fef3c7; color: #92400e; }
.badge--submitted { background: #dbeafe; color: #1e40af; }
.badge--locked { background: #e5e7eb; color: #374151; }
.badge--vvb_review { background: #ede9fe; color: #5b21b6; }
.badge--pending { background: #fef3c7; color: #92400e; }
.badge--approved { background: #ecfdf5; color: #065f46; }
.badge--rejected { background: #fef2f2; color: #991b1b; }
.badge--needs_info { background: #dbeafe; color: #1e40af; }
.badge--active { background: #ecfdf5; color: #065f46; }
.badge--paid { background: #ecfdf5; color: #065f46; }
.badge--failed { background: #fef2f2; color: #991b1b; }
.marketplace-filters { display: flex; flex-wrap: wrap; gap: .75rem; align-items: flex-end; margin-bottom: 1.25rem; }
.marketplace-filters .form-field { min-width: 160px; margin: 0; }
.marketplace-note { margin-top: 2rem; }
.listing-card__price { margin: .75rem 0; }
.listing-card__form { margin-top: 1rem; }
.purchase-list { list-style: none; padding: 0; margin: 0; }
.purchase-list__item { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .875rem 0; border-bottom: 1px solid rgba(10,41,26,.08); }
.purchase-detail__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.25rem; }
.mono { font-family: ui-monospace, monospace; font-size: .875rem; }
.alert--pending { background: #fffbeb; color: #92400e; padding: .75rem 1rem; border-radius: 8px; margin-bottom: 1rem; }
.app-page--coordinator { font-family: var(--font-coordinator, var(--font-sans)); }
.app-form--touch .form-field input,
.app-form--touch .form-field select,
.app-form--touch .form-field textarea,
.btn--touch,
.tab-nav__link--touch { min-height: 44px; }
.btn--touch { display: inline-flex; align-items: center; justify-content: center; padding: .625rem 1.125rem; }
.tab-nav__link--touch { min-height: 44px; display: inline-flex; align-items: center; }
.coordinator-tabs { margin-bottom: 1.25rem; }
.farmer-list, .evidence-inbox, .approval-list { list-style: none; padding: 0; margin: 0; }
.farmer-list__item, .approval-list__item { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .875rem 0; border-bottom: 1px solid rgba(10,41,26,.08); }
.approval-list__item--stack { flex-wrap: wrap; align-items: flex-start; }
.inline-actions { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.data-table-wrap { overflow-x: auto; margin-top: 1rem; }
.data-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.data-table th, .data-table td { padding: .625rem .75rem; text-align: start; border-bottom: 1px solid rgba(10,41,26,.08); }
.data-table th { color: var(--color-text-muted); font-weight: 600; }
.data-table .mono { font-family: ui-monospace, monospace; font-size: .8125rem; }
.data-table .truncate { max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.audit-chain-status { padding: .625rem .875rem; border-radius: 8px; font-size: .875rem; margin: 1rem 0; }
.audit-chain-status--valid { background: #ecfdf5; color: #065f46; }
.audit-chain-status--invalid { background: #fef2f2; color: #991b1b; }
.admin-search { display: flex; flex-wrap: wrap; gap: .75rem; align-items: flex-end; margin: 1rem 0; }
.admin-search .form-field { flex: 1; min-width: 200px; margin: 0; }
.admin-user-detail { margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid rgba(10,41,26,.08); }
.admin-user-detail h3 { margin: 0 0 .25rem; }
.admin-user-detail h4 { margin: 1.25rem 0 .5rem; font-size: 1rem; }
.admin-role-form { max-width: 420px; margin-top: 1rem; }
.manager-scope { margin-top: .5rem; font-size: .9375rem; }
.partner-org { margin-top: .5rem; font-size: .9375rem; }
.partner-type-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: .75rem; margin-top: 1rem; }
.partner-type-card { display: flex; flex-direction: column; gap: .25rem; padding: 1rem; border: 1px solid rgba(10,41,26,.12); border-radius: 12px; text-decoration: none; color: inherit; }
.partner-type-card:hover { border-color: var(--color-accent); background: rgba(125,184,68,.06); }
.pdd-list { list-style: none; padding: 0; margin: 0; }
.pdd-list__item { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .875rem 0; border-bottom: 1px solid rgba(10,41,26,.08); }
.transparency-kpis { margin-bottom: 1rem; }
.transparency-country-list { margin-top: 1rem; }
.evidence-inbox__item { margin-bottom: 1rem; padding: 1rem; }
.evidence-inbox__header { display: flex; justify-content: space-between; align-items: center; margin-bottom: .5rem; }
.inline-form { display: inline; }
.review-thread { list-style: none; padding: .75rem 0 0; margin: .75rem 0 0; border-top: 1px solid rgba(10,41,26,.08); font-size: .9375rem; }
.review-thread li { padding: .375rem 0; }
.proxy-dialog { border: none; border-radius: 12px; padding: 0; max-width: 520px; width: calc(100% - 2rem); box-shadow: var(--shadow-lg); }
.proxy-dialog::backdrop { background: rgba(10,41,26,.45); }
.proxy-dialog form { padding: 1.5rem; }
.coordinator-org { margin-top: .5rem; font-size: .9375rem; }
.input-touch { min-height: 120px; }
.contract-status-list { list-style: none; padding: 0; margin: 1rem 0; }
.contract-status-list li { padding: 0.375rem 0; }
.satellite-preview { margin-top: 1rem; padding: 1rem; background: var(--color-bg-alt, #F4F7F2); border-radius: 8px; }
.map-hint { font-size: 0.875rem; margin-top: 0.5rem; }
.offline-badge { margin-top: 1rem; padding: .625rem .75rem; background: #fff7ed; border-radius: 8px; font-size: .8125rem; color: #9a3412; }
.text-muted { color: var(--color-text-muted); }
.app-list { list-style: none; padding: 0; }
.app-list li { padding: .5rem 0; border-bottom: 1px solid rgba(10,41,26,.08); }
@media (max-width: 768px) {
  .app-layout { grid-template-columns: 1fr; }
  .app-sidebar { position: static; }
  .role-grid { grid-template-columns: 1fr; }
}
