/* =========================================================
   BULK SITE + BULK SAMPLE PAGES
   Complete replacement stylesheet

   Used by:
   - Bulk Site HTML
   - Bulk Sample HTML
========================================================= */


/* =========================================================
   DESIGN TOKENS
========================================================= */

:root {
	--bulk-green: #2c4d34;
	--bulk-green-hover: #3b6345;
	--bulk-maroon: #7a2c37;
	--bulk-maroon-hover: #963b49;

	--bulk-page: #f7f4eb;
	--bulk-card: #ffffff;
	--bulk-entry: #f3f3ef;
	--bulk-entry-header: #f1eee5;
	--bulk-field: #ffffff;

	--bulk-text: #3f443f;
	--bulk-label: #545a55;
	--bulk-muted: #747a75;
	--bulk-unit: #6f7f8f;

	--bulk-border: #dddcd5;
	--bulk-border-light: #e5e4de;
	--bulk-input-border: #d2d4cf;

	--bulk-font: Roboto, Arial, sans-serif;
}


/* =========================================================
   PAGE FOUNDATION + ROBOTO
========================================================= */

.bulkSamplePage,
.bulkEntryPage {
	min-height: 100%;
	padding: 2rem 1.5rem 3rem;
	color: var(--bulk-text);
	background: var(--bulk-page);
	font-family: var(--bulk-font);
	font-size: 14px;
}

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

/*
   Apply Roboto to normal text elements only.
   Font Awesome is explicitly preserved farther below.
*/
.bulkSamplePage h1,
.bulkSamplePage h2,
.bulkSamplePage h3,
.bulkSamplePage h4,
.bulkSamplePage h5,
.bulkSamplePage h6,
.bulkSamplePage p,
.bulkSamplePage strong,
.bulkSamplePage label,
.bulkSamplePage small,
.bulkSamplePage span:not(.fa):not(.fas):not(.far):not(.fal):not(.fab),
.bulkSamplePage input,
.bulkSamplePage select,
.bulkSamplePage option,
.bulkSamplePage textarea,
.bulkSamplePage button,
.bulkSamplePage summary,
.bulkSamplePage li,
.bulkEntryPage h1,
.bulkEntryPage h2,
.bulkEntryPage h3,
.bulkEntryPage h4,
.bulkEntryPage h5,
.bulkEntryPage h6,
.bulkEntryPage p,
.bulkEntryPage strong,
.bulkEntryPage label,
.bulkEntryPage small,
.bulkEntryPage span:not(.fa):not(.fas):not(.far):not(.fal):not(.fab),
.bulkEntryPage input,
.bulkEntryPage select,
.bulkEntryPage option,
.bulkEntryPage textarea,
.bulkEntryPage button,
.bulkEntryPage summary,
.bulkEntryPage li {
	font-family: var(--bulk-font);
}


/* =========================================================
   FONT AWESOME PRESERVATION
========================================================= */

.bulkSamplePage .fa,
.bulkEntryPage .fa {
	font-family: FontAwesome !important;
	font-style: normal;
	font-weight: normal;
}

.bulkSamplePage .fas,
.bulkEntryPage .fas {
	font-family:
		"Font Awesome 6 Free",
		"Font Awesome 5 Free" !important;
	font-style: normal;
	font-weight: 900;
}

.bulkSamplePage .far,
.bulkEntryPage .far {
	font-family:
		"Font Awesome 6 Free",
		"Font Awesome 5 Free" !important;
	font-style: normal;
	font-weight: 400;
}

.bulkSamplePage .fab,
.bulkEntryPage .fab {
	font-family:
		"Font Awesome 6 Brands",
		"Font Awesome 5 Brands" !important;
	font-style: normal;
}


/* =========================================================
   OUTER PAGE CARD
========================================================= */

.bulkSampleCard {
	width: 100%;
	max-width: 1100px;
	margin: 2rem auto 0;
	overflow: hidden;
	background: var(--bulk-card);
	border: 1px solid #e0ded7;
	border-radius: 18px;
	box-shadow: 0 12px 34px rgba(38, 45, 39, 0.08);
}


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

.bulkSampleHeader {
	padding: 1.75rem 2rem 1.5rem;
	background: var(--bulk-card);
	border-bottom: 1px solid #ece9e2;
}

.bulkSampleHeaderText {
	max-width: 1000px;
}

.bulkSampleHeader h1 {
	margin: 0 0 0.5rem;
	color: var(--bulk-green);
	font-family: var(--bulk-font) !important;
	font-size: clamp(1.65rem, 2.4vw, 2rem);
	font-style: normal;
	font-weight: 700;
	letter-spacing: 0;
	line-height: 1.2;
	text-transform: none;
	text-align: center;
}

.bulkSampleHeader p {
	margin: 0;
	color: #6e746f;
	font-size: 0.92rem;
	font-weight: 400;
	line-height: 1.6;
	text-align: center;
	margin-left: 50px;
}

.bulkSampleHeader strong {
	color: #555b56;
	font-weight: 700;
}


/* =========================================================
   ENTRY LIST
========================================================= */

.bulkSiteList,
.bulkSampleList {
	display: flex;
	flex-direction: column;
	gap: 1.4rem;
	padding: 1.5rem 2rem 2rem;
	background: var(--bulk-card);
}


/* =========================================================
   SITE / SAMPLE ENTRY CARD
========================================================= */

.bulkSiteEntry,
.bulkSampleEntry {
	position: relative;
	overflow: hidden;

	background: var(--bulk-entry);
	border: 1px solid var(--bulk-border);
	border-radius: 20px;
	box-shadow: 0 6px 18px rgba(36, 43, 37, 0.06);
}

.bulkSiteEntryHeader,
.bulkSampleEntryHeader {
	display: flex;
	align-items: center;
	background-color: #f3f3ef;
	justify-content: space-between;
	gap: 1rem;
	min-height: 64px;
	padding: 1.05rem 1.4rem;
	border-bottom: 1px solid #d8d8d2;
}

.bulkSiteEntryTitle {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.85rem;
	min-width: 0;
}

.bulkSiteNumber {
	display: flex;
	align-items: center;
	flex-shrink: 0;
	padding-left: 0.85rem;
	color: var(--bulk-green);
	border-left: 4px solid var(--bulk-maroon);
	font-size: 1.05rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	line-height: 1.3;
}

.bulkSiteNamePreview {
	overflow: hidden;
	max-width: min(540px, 50vw);
	color: #7b7f79;
	font-size: 0.9rem;
	font-weight: 500;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.bulkSiteEntryActions {
	display: flex;
	align-items: center;
	flex-shrink: 0;
	gap: 0.55rem;
}


/* =========================================================
   REMOVE BUTTON
========================================================= */

.bulkRemoveButton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	padding: 0;
	color: var(--bulk-maroon);
	background: var(--bulk-card);
	border: 1px solid #dcc9cc;
	border-radius: 10px;
	font-size: 14px;
	line-height: 1;
	cursor: pointer;
	transition:
		background-color 0.18s ease,
		border-color 0.18s ease,
		color 0.18s ease,
		box-shadow 0.18s ease,
		transform 0.18s ease;
}

.bulkRemoveButton:hover:not(:disabled),
.bulkRemoveButton:focus-visible:not(:disabled) {
	color: #ffffff;
	background: var(--bulk-maroon);
	border-color: var(--bulk-maroon);
	box-shadow: 0 6px 14px rgba(122, 44, 55, 0.16);
	transform: translateY(-1px);
}

.bulkRemoveButton:active:not(:disabled) {
	box-shadow: none;
	transform: translateY(0);
}

.bulkRemoveButton:disabled {
	color: #b9adaa;
	background: #f6f3f0;
	border-color: #e3dcd9;
	cursor: not-allowed;
	opacity: 0.55;
}


/* =========================================================
   ENTRY BODY

   The sections are direct pieces of the entry card.
   They do not look like separate floating cards.
========================================================= */

.bulkSiteEntryBody,
.bulkSampleEntryBody {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	background: var(--bulk-entry);
	border-radius: 20px;
}

/* =========================================================
   STICKY SAMPLE INFORMATION
========================================================= */

.bulkSampleStickyInformation {
	position: sticky;
	top: 0;
	z-index: 50;

	background: var(--bulk-entry);
	padding-bottom: 1rem;

	border-bottom: 1px solid #ddddd7;
	box-shadow: 0 8px 14px rgba(36, 43, 37, 0.05);
}

.bulkSiteSection {
	min-width: 0;
	margin: 0;
	padding: 1.45rem;
	background: var(--bulk-entry);
	border: 0;
	border-right: 1px solid #ddddd7;
	border-bottom: 1px solid #ddddd7;
	border-radius: 0px;
	box-shadow: none;
}

.bulkSiteSection:nth-child(2n) {
	border-right: 0;
}

.bulkSiteSectionFull {
	grid-column: 1 / -1;
	border-right: 0;
}

/* Prevent a trailing line at the very bottom of the card. */
.bulkSiteEntryBody > .bulkSiteSection:last-child,
.bulkSampleEntryBody > .bulkSiteSection:last-child {
	border-bottom: 0;
}


/* =========================================================
   SECTION HEADERS
========================================================= */

.wineSiteSectionHeader {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	margin: 0 0 1.25rem;
	padding: 0 0 0.9rem;
	border-bottom: 1px solid #ddddD7;
}

.wineSiteSectionIcon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 38px;
	width: 38px;
	height: 38px;
	color: #ffffff;
	background: var(--bulk-maroon);
	border-radius: 10px;
	font-size: 0.95rem;
	line-height: 1;
	box-shadow: 0 4px 9px rgba(122, 44, 55, 0.14);
}

.wineSiteSectionHeader > div:not(.wineSiteSectionIcon) {
	min-width: 0;
}

.wineSiteSectionHeader h2 {
	margin: 0;
	color: #394039;
	font-family: var(--bulk-font) !important;
	font-size: 1.05rem;
	font-style: normal;
	font-weight: 700;
	letter-spacing: 0.01em;
	line-height: 1.25;
	text-transform: none;
}

.wineSiteSectionHeader p {
	margin: 0.23rem 0 0;
	color: #70766f;
	font-size: 0.82rem;
	font-weight: 400;
	line-height: 1.45;
}


/* =========================================================
   FIELD GRIDS
========================================================= */

.bulkSiteFieldGrid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 1rem;
	width: 100%;
}

.bulkSiteField {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.bulkSiteFieldWide {
	grid-column: span 2;
}

/*
   Sample Information, Analysis and Vintage explicitly use two
   columns. This prevents long full-width fields while retaining
   the same card/section appearance as Bulk Site.
*/
.bulkSamplePage .bulkSampleTwoColumnGrid,
.bulkSamplePage .bulkSampleAnalysisGrid,
.bulkSamplePage .bulkSampleVintageGrid {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.bulkSampleGridSpacer {
	visibility: hidden;
	pointer-events: none;
}


/* =========================================================
   LABELS
========================================================= */

.bulkSiteField > label,
.bulkSiteField .wineSiteLabel,
.bulkSiteField .sampleFieldLabel {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	justify-content: flex-start;
	gap: 0rem;
	min-height: 0;
	margin: 0 0 0.4rem;
	color: var(--bulk-label);
	font-family: var(--bulk-font) !important;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0;
	line-height: 1.35;
}

.sampleFieldName {
	display: inline;
	color: inherit;
	font: inherit;
}

.sampleFieldUnit,
.bulkSiteField > label small {
	display: inline;
	margin: 0;
	color: var(--bulk-unit);
	font-family: var(--bulk-font);
	font-size: 0.72rem;
	font-weight: 500;
	line-height: inherit;
	white-space: nowrap;
}

.bulkRequiredMark,
.requiredMarker {
	margin-left: 0.05rem;
	color: var(--bulk-maroon);
	font-weight: 700;
}


/* =========================================================
   INPUTS, SELECTS, TEXTAREAS
========================================================= */

.bulkSamplePage .form-control,
.bulkSamplePage .form-select,
.bulkEntryPage .form-control,
.bulkEntryPage .form-select,
.bulkSiteField .form-control,
.bulkSiteField .form-select {
	width: 100%;
	min-height: 42px;
	padding: 0.58rem 0.72rem;
	color: #343934;
	background: var(--bulk-field);
	border: 1px solid var(--bulk-input-border);
	border-radius: 9px;
	font-family: var(--bulk-font);
	font-size: 0.84rem;
	font-weight: 400;
	line-height: 1.35;
	box-shadow: none;
	transition:
		border-color 0.18s ease,
		box-shadow 0.18s ease,
		background-color 0.18s ease;
}

.bulkSamplePage .form-control::placeholder,
.bulkEntryPage .form-control::placeholder,
.bulkSiteField .form-control::placeholder {
	color: #a0a49f;
	opacity: 1;
	text-align: left;
}

.bulkSamplePage .form-control:hover,
.bulkSamplePage .form-select:hover,
.bulkEntryPage .form-control:hover,
.bulkEntryPage .form-select:hover,
.bulkSiteField .form-control:hover,
.bulkSiteField .form-select:hover {
	border-color: #bfc5bf;
}

.bulkSamplePage .form-control:focus,
.bulkSamplePage .form-select:focus,
.bulkEntryPage .form-control:focus,
.bulkEntryPage .form-select:focus,
.bulkSiteField .form-control:focus,
.bulkSiteField .form-select:focus {
	color: #303630;
	background: #ffffff;
	border-color: #78917e;
	box-shadow: 0 0 0 0.2rem rgba(44, 77, 52, 0.11);
	outline: none;
}

.bulkSamplePage .form-control:disabled,
.bulkSamplePage .form-select:disabled,
.bulkEntryPage .form-control:disabled,
.bulkEntryPage .form-select:disabled {
	color: #777d78;
	background: #ecece8;
	cursor: not-allowed;
}

.bulkSamplePage textarea.form-control,
.bulkEntryPage textarea.form-control {
	min-height: 96px;
	resize: vertical;
	text-align: left;
}

.sampleNotesField {
	min-height: 96px;
	text-align: left;
}


/* =========================================================
   VALIDATION
========================================================= */

.bulkSiteField .form-control.ng-invalid.ng-touched,
.bulkSiteField .form-select.ng-invalid.ng-touched {
	border-color: #b76873;
}

.bulkSiteField .form-control.ng-invalid.ng-touched:focus,
.bulkSiteField .form-select.ng-invalid.ng-touched:focus {
	border-color: var(--bulk-maroon);
	box-shadow: 0 0 0 0.2rem rgba(122, 44, 55, 0.1);
}

.fieldValidationMessage,
.bulkSamplePage .wineSiteFieldError {
	display: block;
	margin-top: 0.3rem;
	color: #9b3544;
	font-size: 0.72rem;
	font-weight: 600;
	line-height: 1.35;
}

.bulkSamplePage .validationErrors {
	display: none !important;
}


/* =========================================================
   ADDRESS COMPONENT
========================================================= */

.bulkAddressEditor {
	padding: 0.85rem;
	background: #ffffff;
	border: 1px solid #d8d9d4;
	border-radius: 10px;
}

.bulkAddressEditor AddressEdit,
.bulkAddressEditor address-edit {
	display: block;
	width: 100%;
}

.bulkAddressEditor label {
	font-family: var(--bulk-font) !important;
}


/* =========================================================
   MAP / COORDINATE AREA
========================================================= */

.bulkCoordinatesRow {
	display: flex;
	align-items: stretch;
	gap: 0.65rem;
	width: 100%;
	min-width: 0;
}

.bulkCoordinateHelp {
	display: block;
	margin-top: 0.35rem;
	color: #858a86;
	font-size: 0.72rem;
	line-height: 1.4;
}

.bulkRowMapButton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.45rem;
	min-width: 110px;
	min-height: 42px;
	padding: 0.58rem 0.85rem;
	color: var(--bulk-green);
	background: #ffffff;
	border: 1px solid #bfcabf;
	border-radius: 9px;
	font-family: var(--bulk-font);
	font-size: 0.78rem;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	cursor: pointer;
	transition:
		background-color 0.18s ease,
		border-color 0.18s ease,
		color 0.18s ease,
		box-shadow 0.18s ease,
		transform 0.18s ease;
}

.bulkRowMapButton:hover,
.bulkRowMapButton:focus-visible {
	color: #ffffff;
	background: var(--bulk-green);
	border-color: var(--bulk-green);
	box-shadow: 0 5px 12px rgba(44, 77, 52, 0.18);
	transform: translateY(-1px);
}


/* =========================================================
   SPACING INPUT GROUP
========================================================= */

.bulkSpacingGroup {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	align-items: center;
	gap: 0.7rem;
	width: 100%;
}

.bulkSpacingGroup .form-control {
	min-width: 0;
}

.bulkSpacingSymbol {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: #737873;
	font-size: 1rem;
	font-weight: 600;
	line-height: 1;
}


/* =========================================================
   ANALYSIS TABS
========================================================= */

.bulkAnalysisTabs {
	width: 100%;
	margin: 0.15rem 0 1.25rem !important;
}

.sampleAnalysisTab,
.bulkSampleAnalysisTab {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 39px;
	padding: 0.52rem 1rem !important;
	color: #5a625a;
	background: #f8f7f3;
	border: 1px solid #d5d6d0;
	border-radius: 999px;
	font-family: var(--bulk-font);
	font-size: 0.8rem;
	font-weight: 700;
	line-height: 1.2;
	white-space: nowrap;
	transition:
		color 0.16s ease,
		background-color 0.16s ease,
		border-color 0.16s ease,
		box-shadow 0.16s ease,
		transform 0.16s ease;
}

.sampleAnalysisTab:hover,
.bulkSampleAnalysisTab:hover {
	color: var(--bulk-green);
	background: #e9eee9;
	border-color: #aab7ac;
	transform: translateY(-1px);
}

.sampleAnalysisTab.active,
.bulkSampleAnalysisTab.active {
	color: #ffffff;
	background: var(--bulk-green);
	border-color: var(--bulk-green);
	box-shadow: 0 5px 11px rgba(44, 77, 52, 0.17);
}


/* =========================================================
   NO ANALYSIS NOTICE
========================================================= */

.sampleAnalysisNotice {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	width: 100%;
	padding: 1rem 1.1rem;
	color: #5f675f;
	background: #f7f8f5;
	border: 1px solid #d5ddd4;
	border-radius: 10px;
}

.sampleAnalysisNotice p {
	margin: 0;
	font-size: 0.84rem;
	line-height: 1.5;
}


/* =========================================================
   INFO ICON BUTTON
========================================================= */

.icon-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 22px;
	width: 22px;
	height: 22px;
	margin-left: 0.1rem;
	padding: 0;
	color: var(--bulk-maroon);
	background: transparent;
	border: 0;
	border-radius: 50%;
	font-size: 0.76rem;
	line-height: 1;
	cursor: pointer;
}

.icon-btn:hover,
.icon-btn:focus-visible {
	color: #ffffff;
	background: var(--bulk-maroon);
	outline: none;
}


/* =========================================================
   COLLAPSIBLE VINTAGE SECTION

   The <details> element is itself a direct card section.
   It does not contain a second bordered card.
========================================================= */

details.bulkSiteSection.bulkVintageDetails {
	grid-column: 1 / -1;
	padding: 0;
	overflow: hidden;
	background: var(--bulk-entry);
	border: 0;
	border-bottom: 0;
	border-radius: 0;
	box-shadow: none;
}

.bulkVintageSummary {
	display: block;
	width: 100%;
	padding: 0;
	cursor: pointer;
	list-style: none;
	background: transparent;
}

.bulkVintageDetails[open] > .bulkVintageSummary {
	background: #f3f3ef; /* same as the card body */
}

.bulkVintageSummary::-webkit-details-marker {
	display: none;
}

.bulkVintageSummary::marker {
	content: "";
}

.bulkVintageSummary .wineSiteSectionHeader {
	align-items: center;
	margin: 0;
	padding: 1.45rem;
	border-bottom: 0;
}

.bulkVintageSummary:hover {
	background: rgba(255, 255, 255, 0.28);
}

.bulkVintageSummaryText {
	flex: 1 1 auto;
	min-width: 0;
}

.bulkVintageSummaryChevron {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 32px;
	width: 32px;
	height: 32px;
	margin-left: auto;
	color: #ddddD7;
	background: #9b3544;
	border-radius: 50%;
	font-size: 0.82rem;
	transition:
		color 0.18s ease,
		background-color 0.18s ease,
		transform 0.18s ease;
}

.bulkVintageDetails[open] .bulkVintageSummaryChevron {
	color: #ffffff;
	background: var(--bulk-green);
	transform: rotate(180deg);
}

.bulkVintageDetails[open] .bulkVintageSummary {
	border-bottom: 1px solid #ddddd7;
}

.bulkVintageContent {
	padding: 1.35rem 1.45rem 1.5rem;
	background: var(--bulk-entry);
}

.bulkSampleNotesField {
	margin-top: 1.25rem;
}


/* =========================================================
   EMPTY STATE
========================================================= */

.bulkSiteEmptyState {
	display: flex;
	align-items: center;
	flex-direction: column;
	justify-content: center;
	min-height: 260px;
	padding: 3rem 1.5rem;
	color: var(--bulk-muted);
	background: var(--bulk-entry);
	border: 1px dashed #cfd3ce;
	border-radius: 14px;
	text-align: center;
}

.bulkSiteEmptyState > i {
	margin-bottom: 1rem;
	color: var(--bulk-green);
	font-size: 2rem;
}

.bulkSiteEmptyState h2 {
	margin: 0 0 0.4rem;
	color: var(--bulk-green);
	font-family: var(--bulk-font) !important;
	font-size: 1.05rem;
	font-weight: 700;
}

.bulkSiteEmptyState p {
	max-width: 440px;
	margin: 0 0 1.25rem;
	font-size: 0.84rem;
	line-height: 1.55;
}


/* =========================================================
   ADD BUTTON + BOTTOM ADD AREA
========================================================= */

.bulkBottomAddArea {
	display: flex;
	justify-content: flex-start;
	padding: 0.75rem 0 0.25rem;
}

.bulkAddButton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-width: 175px;
	min-height: 40px;
	padding: 0.65rem 1rem;
	color: #ffffff;
	background: var(--bulk-maroon);
	border: 1px solid var(--bulk-maroon);
	border-radius: 10px;
	font-family: var(--bulk-font);
	font-size: 0.82rem;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	cursor: pointer;
	transition:
		background-color 0.18s ease,
		border-color 0.18s ease,
		box-shadow 0.18s ease,
		transform 0.18s ease;
}

.bulkAddButton:hover,
.bulkAddButton:focus-visible {
	color: #ffffff;
	background: var(--bulk-maroon-hover);
	border-color: var(--bulk-maroon-hover);
	box-shadow: 0 6px 14px rgba(122, 44, 55, 0.17);
	transform: translateY(-1px);
}


/* =========================================================
   SERVER VALIDATION SUMMARY
========================================================= */

.wineSiteValidationSummary {
	display: flex;
	align-items: flex-start;
	gap: 0.85rem;
	margin: 0 2rem 1.5rem;
	padding: 1rem 1.15rem;
	color: #7e303c;
	background: #fff5f6;
	border: 1px solid #e2bfc4;
	border-radius: 11px;
}

.wineSiteValidationIcon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 30px;
	width: 30px;
	height: 30px;
	color: #ffffff;
	background: #a13b48;
	border-radius: 50%;
}

.wineSiteValidationSummary strong {
	font-weight: 700;
}

.wineSiteValidationSummary ul {
	margin: 0.45rem 0 0;
	padding-left: 1.15rem;
}


/* =========================================================
   FORM FOOTER + ACTION BUTTONS
========================================================= */

.bulkSampleFooter {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1.25rem 2rem;
	background: var(--bulk-entry-header);
	border-top: 1px solid #d8d9d2;
}

.bulkSampleFooterNote {
	margin: 0;
	color: #777d78;
	font-size: 0.78rem;
	line-height: 1.45;
}

.bulkSampleFormActions,
.bulkSamplePage .wineSiteFormActions {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	flex-wrap: wrap;
	gap: 0.7rem;
	margin: 0;
	padding: 1.25rem 2rem;
	background: var(--bulk-entry-header);
	border-top: 1px solid #d8d9d2;
}

.bulkSampleFooter .bulkSampleFormActions {
	padding: 0;
	background: transparent;
	border: 0;
}

.bulkCancelButton,
.bulkSaveButton,
.bulkSamplePage .wineSiteCancelButton,
.bulkSamplePage .wineSiteSaveButton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.45rem;
	min-height: 40px;
	padding: 0.68rem 1.1rem;
	border-radius: 10px;
	font-family: var(--bulk-font);
	font-size: 0.82rem;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	cursor: pointer;
	transition:
		background-color 0.18s ease,
		border-color 0.18s ease,
		color 0.18s ease,
		box-shadow 0.18s ease,
		transform 0.18s ease;
}

.bulkCancelButton,
.bulkSamplePage .wineSiteCancelButton {
	color: #555b56;
	background: #ffffff;
	border: 1px solid #cfd3ce;
}

.bulkCancelButton:hover,
.bulkSamplePage .wineSiteCancelButton:hover {
	color: #343934;
	background: #f1f1ed;
	border-color: #bfc4bf;
	transform: translateY(-1px);
}

.bulkSaveButton,
.bulkSamplePage .wineSiteSaveButton {
	color: #ffffff;
	background: var(--bulk-green);
	border: 1px solid var(--bulk-green);
}

.bulkSaveButton:hover:not(:disabled),
.bulkSamplePage .wineSiteSaveButton:hover:not(:disabled) {
	color: #ffffff;
	background: var(--bulk-green-hover);
	border-color: var(--bulk-green-hover);
	box-shadow: 0 6px 14px rgba(44, 77, 52, 0.18);
	transform: translateY(-1px);
}

.bulkSaveButton:disabled,
.bulkSamplePage .wineSiteSaveButton:disabled {
	color: #9ca09c;
	background: #e6e7e4;
	border-color: #e0e1de;
	cursor: not-allowed;
	opacity: 1;
}
.bulkAutofillButton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.45rem;

	min-height: 38px;
	padding: 0.55rem 0.85rem;

	border: 1px solid #7a2c37;
	border-radius: 7px;

	background: #ffffff;
	color: #7a2c37;

	font-family: Roboto, sans-serif;
	font-size: 0.88rem;
	font-weight: 600;
	line-height: 1;

	cursor: pointer;
	transition:
		background-color 0.2s ease,
		color 0.2s ease,
		border-color 0.2s ease;
}

.bulkAutofillButton:hover,
.bulkAutofillButton:focus-visible {
	background: #7a2c37;
	color: #ffffff;
}

.bulkAutofillButton:focus-visible {
	outline: 3px solid rgba(122, 44, 55, 0.2);
	outline-offset: 2px;
}

.bulkAutofillButton i {
	font-size: 0.9rem;
}

@media (max-width: 767.98px) {
	.bulkSiteEntryActions {
		flex-wrap: wrap;
	}

	.bulkAutofillButton {
		width: 100%;
	}
}

/* =========================================================
   RESPONSIVE: MEDIUM DESKTOP / TABLET
========================================================= */

@media (max-width: 1199.98px) {
	.bulkSiteFieldGrid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.bulkSiteFieldWide {
		grid-column: span 1;
	}

	/*
	   Preserve two-column Sample layouts at this breakpoint.
	*/
	.bulkSamplePage .bulkSampleTwoColumnGrid,
	.bulkSamplePage .bulkSampleAnalysisGrid,
	.bulkSamplePage .bulkSampleVintageGrid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}


/* =========================================================
   RESPONSIVE: STACK MAIN SECTIONS
========================================================= */

@media (max-width: 900px) {
	.bulkSiteEntryBody,
	.bulkSampleEntryBody {
		grid-template-columns: 1fr;
	}

	.bulkSiteSection,
	.bulkSiteSection:nth-child(2n),
	.bulkSiteSectionFull {
		grid-column: 1;
		border-right: 0;
	}

	.bulkSampleCard {
		margin-top: 1rem;
	}
}


/* =========================================================
   RESPONSIVE: MOBILE
========================================================= */

@media (max-width: 767.98px) {
	.bulkSamplePage,
	.bulkEntryPage {
		padding: 0.75rem;
	}

	.bulkSampleCard {
		border-radius: 14px;
	}

	.bulkSampleHeader {
		padding: 1.35rem 1rem 1.2rem;
	}

	.bulkSiteList,
	.bulkSampleList {
		padding: 1rem;
	}

	.bulkSiteEntryHeader,
	.bulkSampleEntryHeader {
		align-items: flex-start;
		padding: 0.95rem 1rem;
		background: #f3f3ef !important;
	}

	.bulkSiteEntryTitle {
		align-items: flex-start;
		flex-direction: column;
		gap: 0.3rem;
	}

	.bulkSiteNamePreview {
		max-width: 70vw;
		padding-left: 1.1rem;
	}

	.bulkSiteSection {
		padding: 1.15rem 1rem;
	}

	.bulkSiteFieldGrid,
	.bulkSamplePage .bulkSampleTwoColumnGrid,
	.bulkSamplePage .bulkSampleAnalysisGrid,
	.bulkSamplePage .bulkSampleVintageGrid {
		grid-template-columns: 1fr;
	}

	.bulkSiteFieldWide {
		grid-column: 1;
	}

	.bulkSampleGridSpacer {
		display: none;
	}

	.wineSiteSectionHeader {
		align-items: flex-start;
	}

	.bulkSpacingGroup {
		grid-template-columns: 1fr;
	}

	.bulkSpacingSymbol {
		height: 16px;
	}

	.bulkCoordinatesRow {
		flex-direction: column;
	}

	.bulkRowMapButton {
		width: 100%;
	}

	.bulkBottomAddArea .bulkAddButton,
	.bulkAddButton {
		width: 100%;
	}

	.bulkSampleFooter,
	.bulkSampleFormActions,
	.bulkSamplePage .wineSiteFormActions {
		align-items: stretch;
		flex-direction: column;
		padding-right: 1rem;
		padding-left: 1rem;
	}

	.bulkCancelButton,
	.bulkSaveButton,
	.bulkSamplePage .wineSiteCancelButton,
	.bulkSamplePage .wineSiteSaveButton {
		width: 100%;
	}

	.wineSiteValidationSummary {
		margin-right: 1rem;
		margin-left: 1rem;
	}

	.bulkVintageSummary .wineSiteSectionHeader {
		padding: 1.15rem 1rem;
	}

	.bulkVintageContent {
		padding: 1.1rem 1rem 1.25rem;
	}
}


/* =========================================================
   RESPONSIVE: SMALL MOBILE
========================================================= */

@media (max-width: 420px) {
	.bulkSamplePage,
	.bulkEntryPage {
		padding-right: 0.45rem;
		padding-left: 0.45rem;
	}

	.bulkSiteList,
	.bulkSampleList {
		padding-right: 0.7rem;
		padding-left: 0.7rem;
	}

	.bulkSiteNumber {
		font-size: 0.96rem;
	}

	.wineSiteSectionHeader h2 {
		font-size: 0.98rem;
	}
}

/* =========================================================
   BULK WINE SITE PAGE

   Page-specific overrides only. Keep this section after the
   shared Bulk Site + Bulk Sample styles above.
========================================================= */


/* =========================================================
   SITE ENTRY LAYOUT
========================================================= */

.bulkWineSitePage .bulkSampleCard {
	max-width: 1100px;
}

.bulkWineSitePage .bulkSiteEntryBody {
	display: block;
}

.bulkWineSitePage .bulkSiteSection {
	width: 100%;
	padding: 1.45rem;
	border-right: 0;
	border-bottom: 1px solid var(--bulk-border);
}

.bulkWineSitePage .bulkSiteSection:last-child {
	border-bottom: 0;
}

.bulkWineSitePage .wineSiteSectionHeader {
	margin-bottom: 1.15rem;
}


/* =========================================================
   SITE NAME + LOCATION GRID
========================================================= */

.bulkWineSitePage .bulkSiteIdentityGrid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem 1.25rem;
	width: 100%;
}

.bulkWineSitePage .bulkSiteIdentityGrid > .bulkSiteField {
	min-width: 0;
}


/* =========================================================
   FULL-WIDTH ADDRESS

   Spans the same full width as both columns above it.
========================================================= */

.bulkWineSitePage .bulkSiteAddressField {
	grid-column: 1 / -1;
	width: 100%;
	max-width: none;
	margin: 0.15rem 0 0;
	padding-top: 0;
}

.bulkWineSitePage .bulkSiteAddressField > label {
	justify-content: flex-start;
	margin-bottom: 0.4rem;
	text-align: left;
}

.bulkWineSitePage .bulkAddressEditor {
	width: 100%;
	max-width: none;
	padding: 0.75rem;
	background: #ffffff;
	border: 1px solid var(--bulk-input-border);
	border-radius: 10px;
	box-shadow: none;
}

.bulkWineSitePage .bulkAddressEditor AddressEdit,
.bulkWineSitePage .bulkAddressEditor address-edit {
	display: block;
	width: 100%;
	max-width: none;
}

.bulkWineSitePage .bulkAddressEditor .form-control,
.bulkWineSitePage .bulkAddressEditor .form-select {
	width: 100%;
	min-height: 42px;
}


/* =========================================================
   FULL-WIDTH INLINE MAP
========================================================= */

.bulkWineSitePage .bulkSiteMapField {
	grid-column: 1 / -1;
	width: 100%;
	max-width: none;
	margin: 0.35rem 0 0;
}

.bulkWineSitePage .bulkInlineMapHeader {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 0.65rem;
}

.bulkWineSitePage .bulkInlineMapHeader > div:first-child {
	min-width: 0;
}

.bulkWineSitePage .bulkInlineMapHeader h3 {
	margin: 0;
	color: var(--bulk-green);
	font-family: var(--bulk-font);
	font-size: 0.95rem;
	font-weight: 700;
	line-height: 1.3;
}

.bulkWineSitePage .bulkInlineMapHeader p {
	max-width: 680px;
	margin: 0.18rem 0 0;
	color: var(--bulk-muted);
	font-family: var(--bulk-font);
	font-size: 0.76rem;
	line-height: 1.45;
}

.bulkWineSitePage .bulkInlineMap {
	position: relative;
	width: 100%;
	height: 360px;
	min-height: 0;
	overflow: hidden;
	background: #dfe4df;
	border: 1px solid #c9cec9;
	border-radius: 11px;
	box-shadow: 0 4px 12px rgba(39, 49, 41, 0.07);
}

.bulkWineSitePage .bulkInlineMap MapEdit,
.bulkWineSitePage .bulkInlineMap map-edit,
.bulkWineSitePage .bulkInlineMap .map,
.bulkWineSitePage .bulkInlineMap .mapContainer,
.bulkWineSitePage .bulkInlineMap .maplibregl-map,
.bulkWineSitePage .bulkInlineMap .mapboxgl-map {
	display: block;
	width: 100%;
	height: 360px !important;
	min-height: 0 !important;
}


/* =========================================================
   MAP COORDINATES + ACREAGE
========================================================= */

.bulkWineSitePage .bulkSiteCoordinates {
	display: flex;
	align-items: stretch;
	flex: 0 0 auto;
	gap: 0.5rem;
}

.bulkWineSitePage .bulkSiteCoordinateItem {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-width: 125px;
	padding: 0.45rem 0.65rem;
	background: #ffffff;
	border: 1px solid var(--bulk-border);
	border-radius: 8px;
}

.bulkWineSitePage .bulkSiteCoordinateItem span {
	margin-bottom: 0.08rem;
	color: var(--bulk-muted);
	font-family: var(--bulk-font);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	line-height: 1.2;
	text-transform: uppercase;
}

.bulkWineSitePage .bulkSiteCoordinateItem strong {
	color: var(--bulk-text);
	font-family: var(--bulk-font);
	font-size: 0.73rem;
	font-weight: 700;
	line-height: 1.3;
}

.bulkWineSitePage .bulkCalculatedAcres {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 0.3rem;
	margin-top: 0.55rem;
	color: var(--bulk-green);
	font-family: var(--bulk-font);
	font-size: 0.78rem;
	line-height: 1.4;
}


/* =========================================================
   VINEYARD BLOCK DETAILS
========================================================= */

.bulkWineSitePage .bulkVineyardDetailsGrid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem 1.25rem;
	width: 100%;
}

.bulkWineSitePage .bulkVineyardDetailsGrid > .bulkSiteField {
	min-width: 0;
}

.bulkWineSitePage .bulkVineyardDetailsGrid .form-select {
	min-width: 0;
}

.bulkWineSitePage .bulkVineyardDetailsGrid .bulkSpacingGroup {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	align-items: center;
	gap: 0.65rem;
	width: 100%;
}

.bulkWineSitePage .bulkVineyardDetailsGrid .bulkSpacingGroup input {
	min-width: 0;
}

.bulkWineSitePage .bulkWineSiteGridSpacer {
	visibility: hidden;
	pointer-events: none;
}

.bulkWineSitePage .bulkWineSiteIdentitySection {
	padding-bottom: 1.55rem;
}

.bulkWineSitePage .bulkWineSiteDetailsSection {
	padding-top: 1.45rem;
}


/* =========================================================
   BULK WINE SITE RESPONSIVE
========================================================= */

@media (max-width: 991.98px) {
	.bulkWineSitePage .bulkInlineMapHeader {
		align-items: flex-start;
		flex-direction: column;
	}

	.bulkWineSitePage .bulkSiteCoordinates {
		width: 100%;
	}

	.bulkWineSitePage .bulkSiteCoordinateItem {
		flex: 1 1 0;
		min-width: 0;
	}

	.bulkWineSitePage .bulkInlineMap,
	.bulkWineSitePage .bulkInlineMap MapEdit,
	.bulkWineSitePage .bulkInlineMap map-edit,
	.bulkWineSitePage .bulkInlineMap .map,
	.bulkWineSitePage .bulkInlineMap .mapContainer,
	.bulkWineSitePage .bulkInlineMap .maplibregl-map,
	.bulkWineSitePage .bulkInlineMap .mapboxgl-map {
		height: 330px !important;
	}
}

@media (max-width: 767.98px) {
	.bulkWineSitePage .bulkSiteIdentityGrid,
	.bulkWineSitePage .bulkVineyardDetailsGrid {
		grid-template-columns: 1fr;
		gap: 0.95rem;
	}

	.bulkWineSitePage .bulkSiteAddressField,
	.bulkWineSitePage .bulkSiteMapField {
		grid-column: 1;
		width: 100%;
		max-width: none;
	}

	.bulkWineSitePage .bulkAddressEditor {
		padding: 0.7rem;
	}

	.bulkWineSitePage .bulkWineSiteGridSpacer {
		display: none;
	}

	.bulkWineSitePage .bulkSiteCoordinates {
		flex-direction: column;
	}

	.bulkWineSitePage .bulkSiteCoordinateItem {
		width: 100%;
	}

	.bulkWineSitePage .bulkInlineMap,
	.bulkWineSitePage .bulkInlineMap MapEdit,
	.bulkWineSitePage .bulkInlineMap map-edit,
	.bulkWineSitePage .bulkInlineMap .map,
	.bulkWineSitePage .bulkInlineMap .mapContainer,
	.bulkWineSitePage .bulkInlineMap .maplibregl-map,
	.bulkWineSitePage .bulkInlineMap .mapboxgl-map {
		height: 290px !important;
	}

	.bulkWineSitePage .bulkCalculatedAcres {
		justify-content: flex-start;
	}

	.bulkWineSitePage .bulkVineyardDetailsGrid .bulkSpacingGroup {
		grid-template-columns: 1fr;
		gap: 0.4rem;
	}
}

.bulkSiteOtherField label {
	color: #7a2c37;
	font-weight: 600;
}

.sampleRadioGroup {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.75rem 1.5rem;
	min-height: 46px;
}

.sampleRadioOption {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
	font-family: Roboto, sans-serif;
	font-size: 1rem;
	font-weight: 400;
	color: #2f332f;
	cursor: pointer;
}

.sampleRadioOption input[type='radio'] {
	width: 18px;
	height: 18px;
	margin: 0;
	flex: 0 0 auto;
	accent-color: #7a2c37;
	cursor: pointer;
}

.sampleRadioText {
	display: inline-block;
	line-height: 1.2;
	font-size: 0.82rem;
	font-weight: 400;
	
}

/* =========================================================
   BULK SAMPLE PRO-ONLY SOIL / TISSUE
========================================================= */

.bulkSampleAnalysisProIcon {
	margin-right: 0.4rem;

	color: #a47c2b;

	font-size: 0.78rem;
	vertical-align: 0.02em;
}

.bulkSamplePremiumAnalysis {
	position: relative;
}

.bulkSamplePremiumAnalysisLocked {
	cursor: help;
	user-select: none;
}

.bulkSamplePremiumAnalysisLocked .bulkSiteField {
	opacity: 0.48;
	filter: grayscale(0.7);
}

.bulkSamplePremiumAnalysisLocked .form-control {
	color: var(--bulk-muted);
	background: #f2f1ed;
	border-color: #d8d5ce;

	pointer-events: none;
}

.bulkSamplePremiumAnalysisLocked .wineSiteLabel {
	color: #8a908b;
}


/* =========================================================
   BULK SAMPLE PREMIUM POPOVER
========================================================= */

.bulkSamplePremiumPopover.popover {
	min-width: 230px;
	max-width: 280px;

	background: #fffdf9;

	border: 1px solid rgba(122, 44, 55, 0.12);
	border-radius: 14px;

	box-shadow:
		0 14px 34px rgba(40, 28, 31, 0.16),
		0 3px 10px rgba(40, 28, 31, 0.08);

	overflow: hidden;
}

.bulkSamplePremiumPopover .popover-header {
	margin: 0;
	padding: 0.8rem 1rem 0.45rem;

	color: #7a2c37;
	background: transparent;

	border: none;

	font-size: 0.9rem;
	font-weight: 600;
	line-height: 1.2;
}

.bulkSamplePremiumPopover .popover-header::before {
	margin-right: 0.4rem;

	color: #a47c2b;

	font-family:
		"Font Awesome 6 Free",
		"Font Awesome 5 Free",
		FontAwesome;
	font-weight: 900;
	content: "\f521";
}

.bulkSamplePremiumPopover .popover-body {
	padding: 0.35rem 1rem 0.95rem;

	color: #59605a;
	background: transparent;

	font-size: 0.8rem;
	line-height: 1.45;
}

.bulkSamplePremiumPopover .popover-arrow::before {
	border-top-color: rgba(122, 44, 55, 0.12);
}

.bulkSamplePremiumPopover .popover-arrow::after {
	border-top-color: #fffdf9;
}

.bulkSamplePremiumPopover.bs-popover-bottom .popover-arrow::before,
.bulkSamplePremiumPopover.bs-popover-auto[data-popper-placement^="bottom"] .popover-arrow::before {
	border-bottom-color: rgba(122, 44, 55, 0.12);
	border-top-color: transparent;
}

.bulkSamplePremiumPopover.bs-popover-bottom .popover-arrow::after,
.bulkSamplePremiumPopover.bs-popover-auto[data-popper-placement^="bottom"] .popover-arrow::after {
	border-bottom-color: #fffdf9;
	border-top-color: transparent;
}

.bulkSamplePremiumPopover.bs-popover-start .popover-arrow::before,
.bulkSamplePremiumPopover.bs-popover-auto[data-popper-placement^="left"] .popover-arrow::before {
	border-left-color: rgba(122, 44, 55, 0.12);
	border-top-color: transparent;
}

.bulkSamplePremiumPopover.bs-popover-start .popover-arrow::after,
.bulkSamplePremiumPopover.bs-popover-auto[data-popper-placement^="left"] .popover-arrow::after {
	border-left-color: #fffdf9;
	border-top-color: transparent;
}

.bulkSamplePremiumPopover.bs-popover-end .popover-arrow::before,
.bulkSamplePremiumPopover.bs-popover-auto[data-popper-placement^="right"] .popover-arrow::before {
	border-right-color: rgba(122, 44, 55, 0.12);
	border-top-color: transparent;
}

.bulkSamplePremiumPopover.bs-popover-end .popover-arrow::after,
.bulkSamplePremiumPopover.bs-popover-auto[data-popper-placement^="right"] .popover-arrow::after {
	border-right-color: #fffdf9;
	border-top-color: transparent;
}
