/* goPantry order form — mobile first */
.gopantry {
	--gp-accent: #7a2a1d;
	--gp-accent-dark: #5e2016;
	--gp-green: #2f7d4a;
	--gp-bg: #faf7f1;
	--gp-line: #e2dcd0;
	--gp-text: #222;
	--gp-muted: #6b6560;
	--gp-error: #c0392b;
	--gp-radius: 10px;
	color: var(--gp-text);
	font-size: 1.05rem;
	line-height: 1.45;
	max-width: 56rem;
	margin: 0 auto;
}
.gopantry *, .gopantry *::before, .gopantry *::after { box-sizing: border-box; }
.gopantry .gp-req { color: var(--gp-error); font-weight: 700; }
.gopantry .gp-req-note { font-size: .9rem; color: var(--gp-muted); margin: .5rem 0 1rem; }
.gopantry .gp-help { font-size: .9rem; color: var(--gp-muted); margin: .35rem 0 0; }
.gopantry .gp-help p { margin: .25rem 0; }

.gopantry .gp-notice {
	background: var(--gp-bg);
	border-left: 5px solid var(--gp-accent);
	border-radius: var(--gp-radius);
	padding: .9rem 1.1rem;
	margin: 0 0 1.25rem;
}
.gopantry .gp-notice h3 { margin: 0 0 .4rem; font-size: 1.15rem; color: var(--gp-accent); }
.gopantry .gp-notice p { margin: .3rem 0; }
.gopantry .gp-notice p:last-child { margin-bottom: 0; }

.gopantry fieldset.gp-section {
	border: 1px solid var(--gp-line);
	border-radius: var(--gp-radius);
	padding: 1rem 1.1rem 1.1rem;
	margin: 0 0 1.25rem;
	background: #fff;
	min-width: 0;
}
.gopantry fieldset.gp-section > legend {
	font-weight: 700;
	font-size: 1.15rem;
	padding: 0 .4rem;
	color: var(--gp-accent);
}

.gopantry .gp-field { margin: 0 0 .9rem; min-width: 0; }
.gopantry .gp-field:last-child { margin-bottom: 0; }
.gopantry .gp-field > label, .gopantry .gp-label { display: block; font-weight: 600; margin-bottom: .3rem; }
.gopantry input[type="text"],
.gopantry input[type="email"],
.gopantry input[type="tel"],
.gopantry input[type="number"],
.gopantry select,
.gopantry textarea {
	width: 100%;
	font: inherit;
	font-size: 1.05rem;
	padding: .6rem .7rem;
	border: 1px solid #b9b2a6;
	border-radius: 8px;
	background: #fff;
	color: var(--gp-text);
	min-height: 2.9rem;
}
.gopantry input:focus, .gopantry select:focus, .gopantry textarea:focus {
	outline: 3px solid rgba(47, 125, 74, .35);
	border-color: var(--gp-green);
}
.gopantry .gp-grid-2 { display: grid; grid-template-columns: 1fr; gap: 0 1rem; }
@media (min-width: 640px) {
	.gopantry .gp-grid-2 { grid-template-columns: 1fr 1fr; }
	.gopantry .gp-span-2 { grid-column: span 2; }
}

/* radios & checks: big tap targets */
.gopantry .gp-radios { display: flex; flex-direction: column; gap: .5rem; }
.gopantry .gp-radios.gp-inline { flex-direction: row; flex-wrap: wrap; gap: .5rem 1rem; }
.gopantry .gp-radio, .gopantry .gp-check {
	display: flex;
	align-items: flex-start;
	gap: .6rem;
	padding: .55rem .75rem;
	border: 1px solid var(--gp-line);
	border-radius: 8px;
	background: var(--gp-bg);
	cursor: pointer;
	font-weight: 500;
}
.gopantry .gp-radio input, .gopantry .gp-check input {
	width: 1.35rem; height: 1.35rem; margin: .15rem 0 0; flex: 0 0 auto; accent-color: var(--gp-green);
}
.gopantry .gp-radio:has(input:checked), .gopantry .gp-check:has(input:checked) {
	border-color: var(--gp-green);
	background: #eef7f0;
}
.gopantry .gp-tiers { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
@media (min-width: 640px) { .gopantry .gp-tiers { grid-template-columns: repeat(4, 1fr); } }

/* categories */
.gopantry .gp-cat {
	display: grid;
	grid-template-columns: 1fr;
	gap: .5rem 1.25rem;
	border: 1px solid var(--gp-line);
	border-radius: var(--gp-radius);
	background: #fff;
	margin: 0 0 1rem;
	overflow: hidden;
}
.gopantry .gp-cat-side {
	background: var(--gp-bg);
	padding: .8rem 1rem;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .4rem 1rem;
	border-bottom: 1px solid var(--gp-line);
	position: sticky;
	top: 0;
	z-index: 2;
}
.gopantry .gp-cat-name { margin: 0; font-size: 1.2rem; color: var(--gp-accent); flex: 1 1 auto; }
.gopantry .gp-counter { display: flex; gap: .5rem; align-items: center; }
.gopantry .gp-limit, .gopantry .gp-total {
	font-size: .95rem;
	padding: .25rem .7rem;
	border-radius: 999px;
	background: #fff;
	border: 1px solid var(--gp-line);
	white-space: nowrap;
}
.gopantry .gp-total { background: var(--gp-green); color: #fff; border-color: var(--gp-green); }
.gopantry .gp-total b, .gopantry .gp-limit b { font-size: 1.1em; }
.gopantry .gp-cat.is-over .gp-total { background: var(--gp-error); border-color: var(--gp-error); }
.gopantry .gp-cat.is-over { border-color: var(--gp-error); }
.gopantry .gp-over { color: var(--gp-error); font-weight: 700; flex-basis: 100%; }
.gopantry .gp-cat-note { flex-basis: 100%; margin: 0; font-size: .9rem; color: var(--gp-muted); font-style: italic; }
.gopantry .gp-cat-items {
	padding: .5rem 1rem 1rem;
	display: grid;
	grid-template-columns: 1fr;
	gap: .5rem .9rem;
}
@media (min-width: 560px) { .gopantry .gp-cat-items { grid-template-columns: 1fr 1fr; } }
@media (min-width: 900px) {
	.gopantry .gp-cat { grid-template-columns: 13rem 1fr; gap: 0; }
	.gopantry .gp-cat-side {
		flex-direction: column;
		align-items: flex-start;
		border-bottom: 0;
		border-right: 1px solid var(--gp-line);
		position: static;
		align-self: stretch;
	}
	.gopantry .gp-cat-name { flex: 0 0 auto; }
	.gopantry .gp-counter { flex-direction: column; align-items: flex-start; }
	.gopantry .gp-cat-items { grid-template-columns: repeat(3, 1fr); padding: 1rem; }
}

.gopantry .gp-item {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: .4rem .75rem;
	padding: .45rem 0;
	border-bottom: 1px dashed var(--gp-line);
	min-width: 0;
}
.gopantry .gp-item-name { font-weight: 600; flex: 1 1 8rem; margin: 0; }
.gopantry .gp-item-checkbox, .gopantry .gp-item-choice, .gopantry .gp-item-text { flex-direction: column; align-items: stretch; }
.gopantry .gp-item .gp-help { flex-basis: 100%; margin: 0; }
.gopantry .gp-item.is-error { outline: 2px solid var(--gp-error); outline-offset: 3px; border-radius: 6px; }
.gopantry .gp-item-max { flex-basis: 100%; font-size: .85rem; color: var(--gp-muted); }

/* quantity stepper */
.gopantry .gp-qty { display: inline-flex; align-items: stretch; border: 1px solid #b9b2a6; border-radius: 8px; overflow: hidden; background: #fff; }
.gopantry .gp-qty input[type="number"] {
	width: 3.4rem;
	text-align: center;
	border: 0;
	border-radius: 0;
	min-height: 2.75rem;
	padding: .3rem;
	-moz-appearance: textfield;
	font-weight: 700;
}
.gopantry .gp-qty input::-webkit-outer-spin-button, .gopantry .gp-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.gopantry .gp-qty button {
	width: 2.75rem;
	border: 0;
	background: var(--gp-bg);
	font-size: 1.4rem;
	font-weight: 700;
	color: var(--gp-accent);
	cursor: pointer;
	line-height: 1;
	padding: 0;
}
.gopantry .gp-qty button:hover { background: #efe9dc; }
.gopantry .gp-qty button:active { background: var(--gp-accent); color: #fff; }
.gopantry .gp-item.has-qty .gp-qty { border-color: var(--gp-green); box-shadow: 0 0 0 2px rgba(47,125,74,.18); }

.gopantry .gp-specify { flex-basis: 100%; margin-top: .25rem; }
.gopantry .gp-specify label { display: block; font-size: .9rem; font-weight: 600; margin-bottom: .2rem; }

/* errors */
.gopantry .gp-field.is-error input, .gopantry .gp-field.is-error select, .gopantry .gp-field.is-error textarea,
.gopantry fieldset.is-error { border-color: var(--gp-error); }
.gopantry .gp-error-msg { color: var(--gp-error); font-size: .9rem; margin: .3rem 0 0; font-weight: 600; }
.gopantry .gp-messages:empty { display: none; }
.gopantry .gp-messages .gp-alert {
	padding: .9rem 1.1rem;
	border-radius: var(--gp-radius);
	margin: 0 0 1.25rem;
	font-weight: 600;
}
.gopantry .gp-alert-error { background: #fdecea; color: #8c2318; border: 1px solid #f3b8b1; }
.gopantry .gp-alert-error ul { margin: .5rem 0 0 1.2rem; font-weight: 400; }
.gopantry .gp-alert-success { background: #eaf6ee; color: #1d5a33; border: 1px solid #b6e0c2; }

/* submit */
.gopantry .gp-submit-row { margin: 1.5rem 0; }
.gopantry .gp-submit {
	width: 100%;
	font: inherit;
	font-size: 1.25rem;
	font-weight: 700;
	padding: 1rem;
	border: 0;
	border-radius: var(--gp-radius);
	background: var(--gp-accent);
	color: #fff;
	cursor: pointer;
}
.gopantry .gp-submit:hover { background: var(--gp-accent-dark); }
.gopantry .gp-submit[disabled] { opacity: .6; cursor: wait; }
.gopantry .gp-hp { position: absolute; left: -9999px; top: -9999px; height: 0; overflow: hidden; }

/* sticky mobile bar */
.gopantry .gp-sticky {
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 50;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: .6rem 1rem;
	padding-bottom: calc(.6rem + env(safe-area-inset-bottom));
	background: #fff;
	border-top: 1px solid var(--gp-line);
	box-shadow: 0 -4px 16px rgba(0,0,0,.08);
	font-weight: 600;
}
.gopantry .gp-sticky[hidden] { display: none; }
.gopantry .gp-sticky-go {
	font: inherit; font-weight: 700;
	background: var(--gp-green); color: #fff; border: 0; border-radius: 8px; padding: .6rem 1rem; cursor: pointer;
}
@media (min-width: 900px) { .gopantry .gp-sticky { display: none !important; } }
.gopantry.has-sticky { padding-bottom: 4rem; }

/* thank-you */
.gopantry .gp-thanks { background: #fff; border: 1px solid var(--gp-line); border-radius: var(--gp-radius); padding: 1.25rem; }
.gopantry .gp-thanks h3 { color: var(--gp-green); margin-top: 0; }
.gopantry .gp-summary { width: 100%; border-collapse: collapse; margin-top: 1rem; font-size: .95rem; }
.gopantry .gp-summary th, .gopantry .gp-summary td { text-align: left; padding: .4rem .5rem; border-bottom: 1px solid var(--gp-line); }
.gopantry .gp-summary td[align="right"] { text-align: right; }

@media print {
	.gopantry .gp-sticky, .gopantry .gp-submit-row { display: none; }
}
