/* ————————————————————————————————————————————————
   Veganuary Coffee Mornings — submission + manage forms
   Brand palette from the Coffee Morning flyer / map mockup.
   Fonts inherit from the theme (Archivo/Poppins on veganuary.com).
   ———————————————————————————————————————————————— */
.vcm-form-wrap,
.vcm-manage-wrap {
	/* Self-contained layout: centred with its own side gutters, so the form
	   sits correctly even in full-width page templates with no padding. */
	width: 100%;
	margin-left: auto;
	margin-right: auto;
	padding: 8px 18px 48px;
	box-sizing: border-box;
	--vcm-raspberry: #FF287D;
	--vcm-raspberry-dark: #7D003C;
	--vcm-raspberry-mid: #C11B67;
	--vcm-raspberry-light: #FFE6F0;
	--vcm-mint: #7DD7C8;
	--vcm-mint-dark: #02463A;
	--vcm-mint-light: #D7F5F0;
	--vcm-ink: #2C2F32;
	--vcm-ink-60: #6B6F73;
	--vcm-rule: #EFE4E9;
	color: var(--vcm-ink);
	max-width: 720px;
}

/* Defensive resets: the veganuary.com theme styles bare elements
   (input{width:100%;min-height:50px}, h3/h4{margin:80px 0 30px}, …),
   so everything we render pins its own box model and spacing. */
.vcm-form-wrap *, .vcm-form-wrap *::before, .vcm-form-wrap *::after,
.vcm-manage-wrap *, .vcm-manage-wrap *::before, .vcm-manage-wrap *::after {
	box-sizing: border-box;
}
.vcm-manage-wrap h3 { margin: 0 0 12px; }
.vcm-manage-wrap #vcm-request-panel p { margin: 0 0 16px; }

/* The theme doesn't define WP's .screen-reader-text — provide it here so
   accessibility-only labels don't render visibly. */
.vcm-form-wrap .screen-reader-text,
.vcm-manage-wrap .screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	border: 0;
	white-space: nowrap;
}

.vcm-form .vcm-field { margin: 0 0 18px; }
.vcm-form label { display: block; font-weight: 600; margin-bottom: 6px; }
.vcm-form .req { color: var(--vcm-raspberry-mid); }

.vcm-form input[type="text"],
.vcm-form input[type="email"],
.vcm-form input[type="date"],
.vcm-form input[type="time"],
.vcm-form input[type="number"],
.vcm-form select,
.vcm-form textarea {
	width: 100%;
	font: inherit;
	font-size: 15px;
	line-height: 1.4;
	min-height: 0;
	height: auto;
	color: var(--vcm-ink);
	background: #fff;
	padding: 10px 12px;
	border: 1.5px solid var(--vcm-rule);
	border-radius: 10px;
	box-sizing: border-box;
}
.vcm-form input:focus,
.vcm-form select:focus,
.vcm-form textarea:focus {
	outline: none;
	border-color: var(--vcm-raspberry);
	box-shadow: 0 0 0 3px var(--vcm-raspberry-light);
}
.vcm-form input[aria-invalid="true"],
.vcm-form select[aria-invalid="true"] { border-color: #b32d2e; }

.vcm-hint { display: block; color: var(--vcm-ink-60); font-size: 13px; margin-top: 5px; font-weight: 400; }

.vcm-row { display: flex; flex-wrap: wrap; gap: 0 16px; }
.vcm-row .vcm-field { flex: 1 1 180px; }
.vcm-row .vcm-grow { flex: 2 1 280px; }

.vcm-fieldset {
	border: 1.5px solid var(--vcm-rule);
	border-radius: 12px;
	padding: 14px 16px 10px;
	margin: 0 0 18px;
	min-width: 0;
	background: #FFF7FA;
}
.vcm-fieldset legend { font-weight: 700; color: var(--vcm-raspberry-dark); padding: 0 6px; }

.vcm-check { display: flex !important; gap: 10px; align-items: flex-start; font-weight: 400 !important; margin: 0 0 10px; cursor: pointer; }
/* The theme gives every bare <input> width:100% and min-height:50px — pin checkboxes/radios back down. */
.vcm-check input {
	width: 18px;
	height: 18px;
	min-height: 0;
	min-width: 0;
	padding: 0;
	margin: 3px 0 0;
	flex: 0 0 auto;
	accent-color: var(--vcm-raspberry);
}
.vcm-approx { padding-top: 6px; border-top: 1px dashed var(--vcm-rule); }

.vcm-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 12px 22px;
	border-radius: 999px;
	border: 2px solid var(--vcm-raspberry, #FF287D);
	background: var(--vcm-raspberry, #FF287D);
	color: #fff;
	font-weight: 700;
	font-size: 14px;
	line-height: 1.2;
	min-height: 0;
	width: auto;
	letter-spacing: .04em;
	text-transform: uppercase;
	cursor: pointer;
	text-decoration: none;
	transition: background .15s ease, border-color .15s ease;
}
.vcm-btn:hover { background: var(--vcm-raspberry-dark, #7D003C); border-color: var(--vcm-raspberry-dark, #7D003C); color: #fff; }
.vcm-btn:focus-visible { outline: 2px solid var(--vcm-raspberry-dark, #7D003C); outline-offset: 2px; }
.vcm-btn[disabled] { opacity: .6; cursor: wait; }
.vcm-btn.ghost { background: #fff; color: var(--vcm-raspberry-dark, #7D003C); border-color: #F3C9DB; }
.vcm-btn.ghost:hover { background: var(--vcm-raspberry-light, #FFE6F0); border-color: var(--vcm-raspberry, #FF287D); }

/* Location picker */
.vcm-locator { margin-bottom: 18px; }
.vcm-geo-results { border: 1.5px solid var(--vcm-rule); border-radius: 10px; margin-top: 10px; overflow: hidden; }
.vcm-geo-results button {
	display: block;
	width: 100%;
	min-height: 0;
	text-align: left;
	background: #fff;
	border: 0;
	border-bottom: 1px solid var(--vcm-rule);
	padding: 10px 12px;
	font: inherit;
	font-size: 14px;
	color: var(--vcm-ink);
	cursor: pointer;
}
.vcm-geo-results button:last-child { border-bottom: 0; }
.vcm-geo-results button:hover,
.vcm-geo-results button:focus-visible { background: var(--vcm-raspberry-light); outline: none; }
.vcm-picker-map { height: 280px; border-radius: 12px; margin-top: 10px; border: 1.5px solid var(--vcm-rule); }
.vcm-geo-status { font-size: 13px; color: var(--vcm-ink-60); margin: 6px 0 0; min-height: 1.2em; }
.vcm-geo-status.ok { color: var(--vcm-mint-dark); font-weight: 600; }

/* Honeypot — visually removed, still in the DOM for bots */
.vcm-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Messages */
.vcm-msg { margin-top: 12px; font-size: 14px; }
.vcm-msg:empty { display: none; }
.vcm-msg.error { background: #FDEDEE; border: 1.5px solid #E8A5AB; color: #8a1f24; border-radius: 10px; padding: 12px 14px; }
.vcm-msg.ok { background: var(--vcm-mint-light); border: 1.5px solid var(--vcm-mint); color: var(--vcm-mint-dark); border-radius: 10px; padding: 12px 14px; }
.vcm-msg ul { margin: 6px 0 0 18px; padding: 0; }

.vcm-success {
	background: var(--vcm-mint-light);
	border: 2px solid var(--vcm-mint);
	border-radius: 14px;
	padding: 22px 24px;
}
.vcm-success h3 { margin: 0 0 8px; color: var(--vcm-mint-dark); }
.vcm-success h4 { margin: 18px 0 6px; color: var(--vcm-raspberry-dark); }

/* Manage page */
.vcm-inline-form { display: flex; gap: 10px; flex-wrap: wrap; align-items: stretch; }
.vcm-inline-form input[type="email"] {
	flex: 1 1 240px;
	width: auto;
	min-height: 0;
	font: inherit;
	font-size: 15px;
	line-height: 1.4;
	padding: 10px 12px;
	border: 1.5px solid var(--vcm-rule);
	border-radius: 10px;
}
.vcm-inline-form input[type="email"]:focus { outline: none; border-color: var(--vcm-raspberry); box-shadow: 0 0 0 3px var(--vcm-raspberry-light); }

.vcm-listing {
	border: 1.5px solid var(--vcm-rule);
	border-radius: 14px;
	padding: 16px 18px;
	margin: 0 0 14px;
	background: #fff;
}
.vcm-listing h4 { margin: 0 0 4px; font-size: 17px; line-height: 1.3; color: var(--vcm-raspberry-dark); }
.vcm-listing .vcm-listing-meta { margin: 0 0 4px; color: var(--vcm-ink-60); font-size: 14px; }
.vcm-listing .vcm-listing-status {
	display: inline-block;
	font-size: 12.5px;
	font-weight: 600;
	border-radius: 999px;
	padding: 3px 10px;
	margin: 4px 0 10px;
	background: var(--vcm-raspberry-light);
	color: var(--vcm-raspberry-dark);
}
.vcm-listing .vcm-listing-status.live { background: var(--vcm-mint-light); color: var(--vcm-mint-dark); }
.vcm-listing .vcm-listing-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.vcm-listing .vcm-btn { padding: 8px 16px; font-size: 12.5px; }
.vcm-listing .vcm-btn.danger { background: #fff; color: #8a1f24; border-color: #E8A5AB; }
.vcm-listing .vcm-btn.danger:hover { background: #FDEDEE; border-color: #b32d2e; }

#vcm-edit-back { margin-bottom: 14px; }

@media (max-width: 600px) {
	.vcm-row { display: block; }
}
