/* Dostępny i responsywny układ interfejsu użytkownika EnviAgri. */
:root {
    --green-900: #124b1f;
    --green-800: #1f6b2a;
    --green-700: #216b31;
    --gray-400: #5f6f77;
    --gray-300: #74858d;
    --gray-500: #52636c;
    --topbar-h: 76px;
}

html {
    font-size: 16px;
    scroll-behavior: smooth;
}

body {
    line-height: 1.5;
}

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

.auth-accessibility {
    position: fixed;
    z-index: 50;
    top: 1rem;
    right: 1rem;
}

.auth-accessibility .calculator-header-controls {
    display: flex;
}

.login-body .login-panel {
    padding-top: 6.5rem;
}

.login-body .login-card {
    opacity: 1;
    transform: none;
}

.login-body .form-label {
    color: #394b54;
    font-size: 0.875rem;
}

.login-body .form-help,
.login-body .form-error,
.login-body .terms-row,
.login-body .auth-switch,
.login-body .back-link {
    font-size: 0.8125rem;
    line-height: 1.5;
}

.login-body .login-form input,
.login-body .btn-login,
.login-body .toggle-password {
    min-height: 2.75rem;
}

.login-body .toggle-password {
    min-width: 2.75rem;
    right: 0.25rem;
    justify-content: center;
}

.login-body .account-type-fieldset label,
.login-body .terms-row {
    min-height: 2.75rem;
}

.page-content {
    padding: clamp(1rem, 2.2vw, 2rem);
}

.page-content > * {
    width: 100%;
    margin-inline: auto;
}

.topbar {
    min-height: var(--topbar-h);
    height: auto;
    padding: 0.6rem clamp(1rem, 2vw, 1.75rem);
}

.topbar-title {
    font-size: 1.125rem;
    line-height: 1.3;
}

.topbar-right,
.calculator-header-controls {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.topbar-right {
    flex-wrap: wrap;
    justify-content: flex-end;
}

.topbar .a11y-toolbar {
    flex-wrap: nowrap;
    padding: 0.25rem;
}

.topbar .a11y-toolbar button.a11y-toolbar-button,
.sidebar-toggle,
.topbar-btn,
.user-menu-toggle {
    min-width: 2.75rem;
    min-height: 2.75rem;
}

.sidebar-toggle {
    justify-content: center;
}

.user-menu {
    padding: 0;
}

.user-menu-toggle {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.35rem 0.65rem;
    border: 0;
    border-radius: var(--radius-md);
    background: transparent;
    color: var(--gray-800);
}

.user-menu-toggle:hover,
.user-menu-toggle[aria-expanded="true"] {
    background: var(--gray-100);
}

.user-menu.open .user-chevron {
    transform: rotate(180deg);
}

.user-dropdown[hidden] {
    display: none !important;
}

.user-menu.open .user-dropdown {
    display: flex;
}

.user-name,
.nav-item,
.nav-label,
.dropdown-item {
    font-size: 0.875rem;
}

.dropdown-context-label,
.dropdown-context-label strong {
    font-size: 0.75rem;
}

.nav-item {
    min-height: 2.75rem;
    color: rgba(255, 255, 255, 0.9);
}

.nav-item[aria-disabled="true"] {
    cursor: not-allowed;
    opacity: 0.72;
}

.nav-section-label,
.weather-label,
.weather-details,
.sidebar-version {
    font-size: 0.75rem;
}

.messages-container {
    padding: 0.75rem clamp(1rem, 2vw, 1.75rem) 0;
}

.alert {
    gap: 1rem;
    min-height: 2.75rem;
    font-size: 0.875rem;
    line-height: 1.45;
}

.alert-close {
    min-width: 2.75rem;
    min-height: 2.75rem;
    margin: -0.55rem -0.65rem -0.55rem 0;
    padding: 0;
}

.card {
    border-color: #d7e0e3;
}

.card-header {
    gap: 1rem;
    padding: 1.15rem 1.25rem;
}

.card-title,
.subsection-title {
    font-size: 1rem;
}

.card-kicker,
.detail-label,
.campaign-filter label,
.form-section-divider,
.context-pill,
.permission-badge,
.verified-badge,
.status-chip {
    font-size: 0.75rem;
}

.btn-primary,
.btn-secondary,
.btn-danger,
.btn-action,
.btn-icon {
    min-height: 2.75rem;
    font-size: 0.875rem;
    justify-content: center;
}

.btn-icon,
.btn-action {
    min-width: 2.75rem;
}

.form-page {
    max-width: 56rem;
}

.onboarding-page {
    max-width: 52rem;
}

.data-form {
    gap: 1.25rem;
    padding: clamp(1rem, 2vw, 1.5rem);
}

.form-label {
    color: #394b54;
    font-size: 0.875rem;
    line-height: 1.4;
}

.form-help,
.form-error,
.form-note {
    font-size: 0.8125rem;
    line-height: 1.5;
}

.form-help {
    color: #52636c;
}

.form-input,
.data-form input[type="text"],
.data-form input[type="email"],
.data-form input[type="password"],
.data-form input[type="number"],
.data-form input[type="date"],
.data-form select,
.data-form textarea,
.campaign-filter select,
.advisor-search input,
.permission-form select {
    min-height: 2.75rem;
    font-size: 1rem;
}

.data-form textarea {
    min-height: 7rem;
    resize: vertical;
}

.production-picker label {
    min-height: 3.5rem;
    font-size: 0.875rem;
}

.production-picker input[type="radio"],
.data-form input[type="checkbox"],
.data-form input[type="radio"] {
    min-width: 1.25rem;
    min-height: 1.25rem;
}

.form-actions,
.card-actions,
.campaign-toolbar,
.empty-farm-actions {
    flex-wrap: wrap;
}

.farm-page {
    max-width: 90rem;
}

.farm-heading,
.parcel-toolbar,
.page-intro {
    gap: 1rem;
}

.farm-heading h2,
.parcel-toolbar h2,
.page-intro h2 {
    font-size: clamp(1.5rem, 2.4vw, 2rem);
}

.farm-heading p,
.parcel-toolbar p,
.page-intro p,
.empty-state-card {
    color: var(--gray-500);
    font-size: 0.875rem;
}

.empty-state-card h3 {
    color: var(--gray-800);
    font-size: 1.125rem;
    margin-bottom: 0.35rem;
}

.data-table {
    font-size: 0.875rem;
}

.data-table th {
    color: #4d5e66;
    font-size: 0.75rem;
}

.data-table th,
.data-table td {
    padding: 0.85rem 1rem;
}

.admin-grid,
.advisor-page {
    max-width: 90rem;
}

.advisor-card h3 {
    font-size: 1rem;
}

.advisor-card-head p,
.advisor-meta dd,
.permission-form label,
.btn-link-danger,
.btn-link {
    font-size: 0.8125rem;
}

.parcel-page {
    max-width: 92rem;
}

.parcel-layout {
    grid-template-columns: minmax(20rem, 25rem) minmax(0, 1fr);
    gap: 1.25rem;
}

.method-tab,
.method-help,
.map-instruction p,
.lookup-status,
.lookup-result strong,
.selected-parcel strong,
.map-header strong {
    font-size: 0.875rem;
}

.compact-form .form-help,
.lookup-result span,
.selected-label,
.selected-parcel span:not(.selected-label),
.map-header span,
.map-legend-inline,
.map-attribution-note {
    font-size: 0.75rem;
}

.method-tab {
    min-height: 3rem;
}

.lookup-result {
    min-height: 3.25rem;
}

/* Panel danych działki */
.field-panel-page {
    max-width: 92rem;
}

.field-panel-heading {
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.field-panel-heading h2 {
    font-size: clamp(1.5rem, 2.3vw, 2rem);
    line-height: 1.2;
}

.field-panel-heading > div > p:last-child {
    max-width: 52rem;
    color: var(--gray-500);
    font-size: 0.9375rem;
    line-height: 1.55;
}

.parcel-context-strip {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-bottom: 1.25rem;
}

.parcel-context-strip > div {
    min-height: 5.2rem;
    padding: 1rem 1.15rem;
}

.parcel-context-strip span,
.module-tags,
.row-eyebrow,
.derived-acidity-label,
.availability-head span {
    font-size: 0.75rem;
}

.parcel-context-strip strong {
    font-size: 1rem;
    overflow-wrap: anywhere;
}

.field-section-nav {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 0.5rem;
    margin-bottom: 1.25rem;
}

.field-section-nav a {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    min-height: 2.75rem;
    padding: 0.55rem 0.7rem;
    border: 1px solid #c9d6da;
    border-radius: 0.55rem;
    background: #fff;
    color: #33464f;
    font-size: 0.8125rem;
    font-weight: 650;
}

.field-section-nav a:hover {
    border-color: var(--green-700);
    background: var(--green-50);
    color: var(--green-900);
}

.field-section-nav a span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    flex: 0 0 1.75rem;
    border-radius: 50%;
    background: var(--green-100);
    color: var(--green-900);
    font-size: 0.6875rem;
}

.field-form-section {
    scroll-margin-top: calc(var(--topbar-h) + 1rem);
}

.field-details-form {
    padding: 0;
}

.field-details-form fieldset {
    gap: 1.25rem;
}

.field-form-section,
.future-inputs {
    padding: clamp(1rem, 2vw, 1.5rem);
}

.field-section-heading {
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 0.85rem;
    margin-bottom: 1.25rem;
}

.section-icon {
    width: 2.5rem;
    height: 2.5rem;
    font-size: 0.8125rem;
}

.field-section-heading h3 {
    font-size: 1.25rem;
    line-height: 1.25;
}

.field-section-heading p,
.form-subsection-heading p,
.automatic-data-note,
.derived-value,
.inline-warning,
.empty-formset,
.form-row-error,
.advanced-mapping-head span,
.derived-acidity small {
    font-size: 0.8125rem;
    line-height: 1.55;
}

.field-form-grid,
.field-form-grid.two,
.field-form-grid.three {
    align-items: start;
    column-gap: 1rem;
    row-gap: 0;
}

.field-form-grid.two {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.field-form-grid.three {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.field-form-grid > [data-herd-fields]:not([hidden]),
.field-form-grid > [data-operation-fields]:not([hidden]),
.field-form-grid > [data-byproduct-secondary]:not([hidden]),
.field-form-grid > [data-byproduct-collected]:not([hidden]),
.field-form-grid > [data-byproduct-sold]:not([hidden]),
.field-form-grid > [data-crop-fields]:not([hidden]),
.field-form-grid > [data-crop-role-section]:not([hidden]) {
    display: contents;
}

.field-form-grid [hidden] {
    display: none !important;
}

.field-form-grid .form-group {
    display: grid;
    gap: 0.35rem 0;
    grid-template-rows: auto auto auto;
    min-width: 0;
    padding-bottom: 0.85rem;
}

.field-form-grid .form-label-row {
    align-items: flex-start;
    grid-row: 1;
    min-height: 2.5rem;
}

.field-form-grid .form-control {
    grid-row: 2;
}

.field-form-grid .form-hint {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    grid-row: 3;
    min-height: 1.15em;
}

@supports (grid-template-rows: subgrid) {
    .field-form-grid .form-group {
        grid-row: span 3;
        grid-template-rows: subgrid;
    }
}

.form-subsection {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
}

.form-subsection-heading h4,
.form-subsection-heading h5,
.analysis-group h5 {
    font-size: 1rem;
}

.rainfall-norms-panel {
    margin-top: 1.25rem;
    padding: 1rem;
}

.rainfall-norms-table {
    min-width: 42rem;
    font-size: 0.8125rem;
}

.rainfall-norms-table th,
.rainfall-norms-table td {
    padding: 0.65rem 0.75rem;
}

.crop-picker-input,
.crop-picker-native,
.crop-picker-option {
    min-height: 2.75rem;
    font-size: 0.9375rem;
}

.crop-picker-option {
    padding: 0.65rem 0.75rem;
}

.derived-acidity {
    min-height: 5rem;
    padding: 0.9rem 1rem;
}

.derived-acidity strong,
.advanced-mapping-head strong {
    font-size: 0.9375rem;
}

.repeatable-card {
    padding: 1.15rem;
}

.repeatable-card-head {
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.repeatable-card-head h4 {
    font-size: 1.125rem;
}

.remove-row,
.btn-secondary.compact {
    min-height: 2.75rem;
    font-size: 0.8125rem;
    padding: 0.55rem 0.8rem;
}

.analysis-groups {
    gap: 1rem;
}

.analysis-group,
.advanced-mapping {
    padding: 1rem;
}

.readiness-summary {
    padding: 1rem;
}

.readiness-summary strong {
    font-size: 1.35rem;
}

.readiness-summary span,
.availability-card p,
.availability-card li {
    font-size: 0.8125rem;
    line-height: 1.5;
}

.availability-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
    gap: 0.85rem;
}

.availability-card {
    padding: 1rem;
}

.availability-head strong {
    font-size: 1rem;
}

.availability-card h4 {
    font-size: 0.9375rem;
}

.field-sticky-actions {
    gap: 1rem;
    padding: 1rem 1.25rem;
}

.field-sticky-actions strong {
    font-size: 0.9375rem;
}

.field-sticky-actions span {
    font-size: 0.8125rem;
}

/* Tryb wysokiego kontrastu: elementy nawigacyjne spoza wspólnego arkusza. */
html.a11y-high-contrast .sidebar,
html.a11y-high-contrast .topbar,
html.a11y-high-contrast .user-dropdown,
html.a11y-high-contrast .main-wrapper,
html.a11y-high-contrast .page-content,
html.a11y-high-contrast .parcel-context-strip,
html.a11y-high-contrast .parcel-context-strip > div,
html.a11y-high-contrast .repeatable-card,
html.a11y-high-contrast .form-subsection,
html.a11y-high-contrast .analysis-group,
html.a11y-high-contrast .rainfall-norms-panel,
html.a11y-high-contrast .field-tooltip-popup,
html.a11y-high-contrast .compact-override-control,
html.a11y-high-contrast .field-sticky-actions {
    border-color: #fff !important;
    background: #000 !important;
    color: #fff !important;
    box-shadow: none !important;
}

html.a11y-high-contrast .field-help-button {
    border-color: #ffff00 !important;
    background: #000 !important;
    color: #ffff00 !important;
}

html.a11y-high-contrast .field-tooltip-popup > strong,
html.a11y-high-contrast .tooltip-reference-list dt,
html.a11y-high-contrast .compact-override-control label {
    color: #fff !important;
}

html.a11y-high-contrast .rainfall-norms-table thead th,
html.a11y-high-contrast .rainfall-norms-table .current-voivodeship th,
html.a11y-high-contrast .rainfall-norms-table .current-voivodeship td {
    border-color: #fff !important;
    background: #000 !important;
    color: #ffff00 !important;
}

html.a11y-high-contrast .field-section-nav a,
html.a11y-high-contrast .field-section-nav a span {
    border-color: #fff !important;
    background: #000 !important;
    color: #ffff00 !important;
}

html.a11y-high-contrast .nav-item,
html.a11y-high-contrast .nav-item.active,
html.a11y-high-contrast .dropdown-item {
    color: #ffff00 !important;
}

html.a11y-high-contrast .nav-item.active {
    outline: 2px solid #ffff00;
    outline-offset: -2px;
}

html.a11y-high-contrast .project-funding-footer,
html.a11y-high-contrast .project-funding-footer__inner {
    border-color: #fff !important;
    background: #000 !important;
    color: #fff !important;
}

html.a11y-high-contrast .login-body,
html.a11y-high-contrast .login-brand,
html.a11y-high-contrast .login-panel,
html.a11y-high-contrast .login-card,
html.a11y-high-contrast .advisor-fields,
html.a11y-high-contrast .account-type-fieldset label {
    border-color: #fff !important;
    background: #000 !important;
    color: #fff !important;
    box-shadow: none !important;
}

/* Przy dużym powiększeniu ograniczamy wyłącznie dekoracyjne odstępy.
   Treść i kontrolki zachowują pełny rozmiar oraz pozostają dostępne. */
html[data-a11y-font-scale="175"] .page-content,
html[data-a11y-font-scale="200"] .page-content,
html[data-a11y-font-scale="175"] .login-body .login-panel,
html[data-a11y-font-scale="200"] .login-body .login-panel {
    padding-inline: 0.5rem;
}

html[data-a11y-font-scale="175"] .login-body .login-card,
html[data-a11y-font-scale="200"] .login-body .login-card,
html[data-a11y-font-scale="175"] .field-form-section,
html[data-a11y-font-scale="200"] .field-form-section,
html[data-a11y-font-scale="175"] .repeatable-card,
html[data-a11y-font-scale="200"] .repeatable-card {
    padding-inline: 0.75rem;
}

html[data-a11y-font-scale="175"] .auth-accessibility .a11y-toolbar,
html[data-a11y-font-scale="200"] .auth-accessibility .a11y-toolbar,
html[data-a11y-font-scale="175"] .topbar .a11y-toolbar,
html[data-a11y-font-scale="200"] .topbar .a11y-toolbar {
    flex-wrap: nowrap;
    gap: 0.1rem;
    padding: 0.15rem;
}

html[data-a11y-font-scale="175"] .auth-accessibility,
html[data-a11y-font-scale="200"] .auth-accessibility {
    padding-inline: 0.25rem;
}

html[data-a11y-font-scale="175"] .a11y-toolbar button.a11y-toolbar-button,
html[data-a11y-font-scale="200"] .a11y-toolbar button.a11y-toolbar-button {
    min-width: 2rem;
    min-height: 2rem;
    padding: 0.2rem;
}

html[data-a11y-font-scale="175"] .a11y-toolbar button span,
html[data-a11y-font-scale="200"] .a11y-toolbar button span {
    display: none;
}

html[data-a11y-font-scale="175"] .a11y-font-status,
html[data-a11y-font-scale="200"] .a11y-font-status {
    min-width: 2.15rem;
    font-size: 0.75rem;
}

@media (max-width: 1180px) {
    .topbar {
        align-items: flex-start;
        flex-wrap: wrap;
    }

    .topbar-left {
        min-height: 2.75rem;
    }

    .topbar-right {
        width: 100%;
    }

    .parcel-context-strip {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .field-section-nav {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .sidebar {
        width: min(21rem, 88vw);
    }

    .page-content {
        padding: 1rem;
    }

    .farm-heading,
    .parcel-toolbar,
    .field-panel-heading,
    .page-intro {
        align-items: stretch;
        flex-direction: column;
    }

    .parcel-layout {
        grid-template-columns: minmax(0, 1fr);
    }

    .parcel-panel {
        order: 1;
    }

    .map-card {
        order: 2;
    }

    .admin-stats-row,
    .format-cards {
        flex-direction: column;
    }
}

@media (max-width: 700px) {
    .auth-accessibility {
        position: relative;
        top: auto;
        right: auto;
        display: flex;
        justify-content: center;
        padding: 0.75rem 0.75rem 0;
    }

    .login-body .login-panel {
        padding: 1rem;
    }

    .auth-accessibility .a11y-toolbar {
        flex-wrap: nowrap;
    }

    .auth-accessibility .a11y-toolbar button span {
        display: none;
    }

    .topbar {
        padding: 0.5rem 0.75rem;
        gap: 0.35rem;
    }

    .topbar-right {
        justify-content: space-between;
        gap: 0.35rem;
    }

    .topbar .a11y-toolbar button span {
        display: none;
    }

    .topbar .a11y-toolbar button.a11y-toolbar-button {
        min-width: 2.5rem;
        padding-inline: 0.45rem;
    }

    .topbar .a11y-font-status {
        min-width: 2.85rem;
        font-size: 0.75rem;
    }

    .topbar-btn {
        display: none;
    }

    .user-info,
    .user-chevron {
        display: none;
    }

    .user-menu-toggle {
        padding: 0.25rem;
    }

    .user-dropdown {
        position: fixed;
        top: auto;
        right: 0.75rem;
        left: 0.75rem;
        min-width: 0;
    }

    .card-header,
    .field-section-heading,
    .repeatable-card-head,
    .field-sticky-actions {
        align-items: stretch;
        display: flex;
        flex-direction: column;
    }

    .field-section-heading .module-tags {
        align-self: flex-start;
    }

    .parcel-context-strip,
    .farm-details-grid,
    .form-grid-two,
    .production-picker > div,
    .advisor-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .field-section-nav {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .field-form-grid.two,
    .field-form-grid.three {
        grid-template-columns: minmax(0, 1fr);
    }

    .field-form-section,
    .future-inputs,
    .repeatable-card {
        padding: 1rem;
    }

    .field-sticky-actions {
        position: static;
    }

    .field-sticky-actions .btn-primary,
    .form-actions > *,
    .card-actions > *,
    .campaign-toolbar > *,
    .empty-farm-actions > * {
        width: 100%;
    }

    .campaign-filter {
        align-items: stretch;
        flex-direction: column;
    }

    .parcel-map {
        height: min(28rem, 62vh);
    }

    .onboarding-progress {
        align-items: stretch;
        flex-direction: column;
        gap: 0.4rem;
        margin-inline: 0;
    }

    .progress-line {
        display: none;
    }
}

@media (max-width: 420px) {
    .topbar .a11y-toolbar {
        gap: 0.2rem;
    }

    .topbar .a11y-toolbar button.a11y-toolbar-button {
        min-width: 2.35rem;
        min-height: 2.5rem;
        padding: 0.35rem;
    }

    .topbar .a11y-font-status {
        min-width: 2.5rem;
    }

    .parcel-context-strip > div {
        min-height: auto;
    }

    .rainfall-norms-panel {
        padding: 0.75rem;
    }
}
