/* ==========================================================================
   PCC Newsletter Subscription — Frontend Styles
   All rules use !important to prevent theme overrides.
   Colours are driven by CSS custom properties set from plugin settings.
   ========================================================================== */

:root {
	--pcc-ns-primary:    #e63946;
	--pcc-ns-secondary:  #457b9d;
	--pcc-ns-text:       #1d3557;
	--pcc-ns-bg:         #ffffff;
	--pcc-ns-border:     #d0d7de;
	--pcc-ns-radius:     6px;
	--pcc-ns-shadow:     0 2px 8px rgba(0, 0, 0, .08);
	--pcc-ns-font:       inherit;
}

/* Wrapper */
.pcc-ns-wrap {
	max-width: 540px !important;
	margin: 2rem auto !important;
	font-family: var( --pcc-ns-font ) !important;
	line-height: 1.5 !important;
	box-sizing: border-box !important;
}

.pcc-ns-wrap *,
.pcc-ns-wrap *::before,
.pcc-ns-wrap *::after {
	box-sizing: border-box !important;
}

/* ------------------------------------------------------------------ Form */
.pcc-ns-form {
	background: var( --pcc-ns-bg ) !important;
	border: 1px solid var( --pcc-ns-border ) !important;
	border-radius: var( --pcc-ns-radius ) !important;
	box-shadow: var( --pcc-ns-shadow ) !important;
	padding: 2rem !important;
}

.pcc-ns-form-title {
	color: var( --pcc-ns-text ) !important;
	font-size: 1.5rem !important;
	font-weight: 700 !important;
	margin: 0 0 .5rem !important;
	line-height: 1.2 !important;
}

.pcc-ns-form-subtitle {
	color: #666 !important;
	margin: 0 0 1.5rem !important;
	font-size: .95rem !important;
}


/* ------------------------------------------------------------------ Steps */
.pcc-ns-step-intro {
	color: #666 !important;
	font-size: .9rem !important;
	margin: 0 0 1rem !important;
}

.pcc-ns-step-back {
	display: inline-flex !important;
	align-items: center !important;
	gap: .3rem !important;
	background: none !important;
	border: none !important;
	padding: 0 !important;
	margin: 0 0 1.25rem !important;
	font-size: .85rem !important;
	color: var( --pcc-ns-secondary ) !important;
	cursor: pointer !important;
	text-decoration: underline !important;
}

.pcc-ns-step-back:hover {
	color: var( --pcc-ns-primary ) !important;
}

/* ---------------------------------------------------------------- Fields */
.pcc-ns-field-group {
	display: grid !important;
	grid-template-columns: 1fr 1fr !important;
	gap: .75rem !important;
	margin-bottom: .75rem !important;
}

.pcc-ns-field-group--full {
	grid-template-columns: 1fr !important;
}

.pcc-ns-field {
	display: flex !important;
	flex-direction: column !important;
	gap: .3rem !important;
}

.pcc-ns-field label {
	font-size: .85rem !important;
	font-weight: 600 !important;
	color: var( --pcc-ns-text ) !important;
	line-height: 1.4 !important;
}

.pcc-ns-field input:not( [type="checkbox"] ):not( [type="radio"] ),
.pcc-ns-field select {
	width: 100% !important;
	padding: .55rem .75rem !important;
	border: 1px solid var( --pcc-ns-border ) !important;
	border-radius: var( --pcc-ns-radius ) !important;
	font-size: .95rem !important;
	line-height: 1.5 !important;
	color: var( --pcc-ns-text ) !important;
	background: #fff !important;
	transition: border-color .15s ease !important;
}

.pcc-ns-field input:not( [type="checkbox"] ):not( [type="radio"] ):focus,
.pcc-ns-field select:focus {
	outline: none !important;
	border-color: var( --pcc-ns-secondary ) !important;
	box-shadow: 0 0 0 3px rgba( 69, 123, 157, .15 ) !important;
}

/* ------------------------------------------------------------- Store area */
.pcc-ns-store-area {
	position: relative !important;
	margin-bottom: .75rem !important;
}

.pcc-ns-store-display {
	padding: .6rem 0 !important;
}

.pcc-ns-pharmacy-name {
	display: block !important;
	font-size: 1.05rem !important;
	font-weight: 700 !important;
	line-height: 1.3 !important;
	color: var( --pcc-ns-text ) !important;
}

.pcc-ns-pharmacy-addr {
	font-size: .88rem !important;
	line-height: 1.4 !important;
	color: #555 !important;
	margin-top: .2rem !important;
}

.pcc-ns-pharmacy-postal {
	font-size: .88rem !important;
	line-height: 1.4 !important;
	color: #555 !important;
	margin-top: .1rem !important;
}

/* ── Store input wrapper (holds text input + geolocate button) */
.pcc-ns-store-input-wrap {
	position: relative !important;
	display: flex !important;
	align-items: stretch !important;
}

.pcc-ns-store-input-wrap .pcc-ns-store-search {
	flex: 1 !important;
	padding-right: 44px !important;
}

/* ── Geolocation button */
.pcc-ns-geolocate {
	position: absolute !important;
	right: 0 !important;
	top: 0 !important;
	bottom: 0 !important;
	width: 42px !important;
	border: none !important;
	background: transparent !important;
	cursor: pointer !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	color: var( --pcc-ns-secondary ) !important;
	padding: 0 !important;
	border-radius: 0 var( --pcc-ns-radius ) var( --pcc-ns-radius ) 0 !important;
	transition: color .15s ease !important;
}

.pcc-ns-geolocate:hover {
	color: var( --pcc-ns-primary ) !important;
	background: rgba( 0, 0, 0, .04 ) !important;
}

.pcc-ns-geolocate:focus-visible {
	outline: 2px solid var( --pcc-ns-secondary ) !important;
	outline-offset: -2px !important;
}

.pcc-ns-geolocate--loading {
	opacity: .55 !important;
	cursor: wait !important;
	animation: pcc-ns-spin 1s linear infinite !important;
}

@keyframes pcc-ns-spin {
	from { transform: rotate( 0deg ); }
	to   { transform: rotate( 360deg ); }
}

.pcc-ns-search-status {
	font-size: .82rem !important;
	color: #888 !important;
	padding: .35rem .1rem !important;
	line-height: 1.4 !important;
}

.pcc-ns-store-dropdown {
	display: block !important;
	width: 100% !important;
	margin-top: 6px !important;
	background: #fff !important;
	border: 1px solid var( --pcc-ns-border ) !important;
	border-radius: 8px !important;
	box-shadow: var( --pcc-ns-shadow ) !important;
	max-height: 280px !important;
	overflow-x: hidden !important;
	overflow-y: auto !important;
}

.pcc-ns-store-option {
	display: block !important;
	width: 100% !important;
	padding: .8rem 1rem !important;
	border-bottom: 1px solid var( --pcc-ns-border ) !important;
	cursor: pointer !important;
	transition: background .12s ease !important;
	overflow: hidden !important;
}

.pcc-ns-store-option:last-child {
	border-bottom: none !important;
}

.pcc-ns-store-option:hover,
.pcc-ns-store-option:focus {
	background: #f0f4f8 !important;
	outline: none !important;
}

.pcc-ns-store-option-name {
	display: block !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	color: var( --pcc-ns-text ) !important;
	line-height: 1.35 !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
}

.pcc-ns-store-option-addr {
	display: block !important;
	font-size: .82rem !important;
	color: #666 !important;
	line-height: 1.4 !important;
	margin-top: .2rem !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
}

/* --------------------------------------------------------------- Button */
.pcc-ns-submit {
	display: block !important;
	width: 100% !important;
	padding: .75rem 1rem !important;
	margin-top: 1rem !important;
	background: var( --pcc-ns-primary ) !important;
	color: #fff !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	border: none !important;
	border-radius: var( --pcc-ns-radius ) !important;
	cursor: pointer !important;
	letter-spacing: .02em !important;
	transition: opacity .15s ease, transform .1s ease !important;
}

.pcc-ns-submit:hover {
	opacity: .9 !important;
}

.pcc-ns-submit:active {
	transform: scale( .98 ) !important;
}

.pcc-ns-submit:disabled {
	opacity: .6 !important;
	cursor: not-allowed !important;
}

/* -------------------------------------------------------------- Messages */
.pcc-ns-message {
	padding: .75rem 1rem !important;
	border-radius: var( --pcc-ns-radius ) !important;
	margin-bottom: 1rem !important;
	font-size: .9rem !important;
}

.pcc-ns-message--success {
	background: #d1fadf !important;
	color: #166534 !important;
	border: 1px solid #bbf7d0 !important;
}

.pcc-ns-message--error {
	background: #fee2e2 !important;
	color: #991b1b !important;
	border: 1px solid #fecaca !important;
}

/* -------------------------------------------------------------- Success state */
.pcc-ns-success {
	text-align: center !important;
	padding: 2rem 1.5rem !important;
}

.pcc-ns-success-icon {
	font-size: 3rem !important;
	line-height: 1 !important;
	margin-bottom: .5rem !important;
}

.pcc-ns-success h2 {
	color: var( --pcc-ns-primary ) !important;
	margin: 0 0 .5rem !important;
}

.pcc-ns-success p {
	color: #555 !important;
	margin: 0 !important;
}

/* -------------------------------------------------------------- Consent checkbox */
.pcc-ns-consent-field {
	margin-top: 1rem !important;
}

.pcc-ns-consent-label {
	display: flex !important;
	align-items: flex-start !important;
	gap: .6rem !important;
	cursor: pointer !important;
	font-size: .88rem !important;
	line-height: 1.45 !important;
	color: var( --pcc-ns-text ) !important;
}

.pcc-ns-consent-checkbox {
	width: 1.1rem !important;
	height: 1.1rem !important;
	flex-shrink: 0 !important;
	margin-top: .15rem !important;
	accent-color: var( --pcc-ns-primary ) !important;
	cursor: pointer !important;
}

.pcc-ns-consent-text {
	flex: 1 !important;
}

.pcc-ns-consent-text a {
	color: var( --pcc-ns-secondary ) !important;
}

.pcc-ns-required-star {
	color: var( --pcc-ns-primary ) !important;
}

.pcc-ns-consent-checkbox:focus-visible {
	outline: 2px solid var( --pcc-ns-secondary ) !important;
	outline-offset: 2px !important;
}

/* -------------------------------------------------------------- Optional label */
.pcc-ns-optional {
	font-weight: 400 !important;
	color: #888 !important;
	font-size: .8em !important;
}

/* -------------------------------------------------------------- Responsive */
@media ( max-width: 480px ) {
	.pcc-ns-form {
		padding: 1.25rem !important;
	}

	.pcc-ns-field-group {
		grid-template-columns: 1fr !important;
	}
}
