/*
 * Canine Sense (customer demo, 2026-10-12). Mobile first: every rule is the
 * phone layout; min-width queries adapt it for tablet (768px) and desktop
 * (1025px), the house breakpoints.
 *
 * Values follow the approved home mockup (docs/mockups/caninesense/home.html):
 * sand, white and forest grounds, copal buttons with coal text (5.9:1),
 * DM Serif Display headings, Poppins 300 body at 18px/1.6, 16px card radius.
 *
 * Load order: this file loads before the Blockstudio block stylesheets, so
 * shared primitives live here and each block's own style.scss refines them.
 */

:root {
	--cs-sand: var(--wp--preset--color--sand);
	--cs-white: #fff;
	--cs-forest: var(--wp--preset--color--forest);
	--cs-forest-deep: var(--wp--preset--color--forest-deep);
	--cs-leaf: var(--wp--preset--color--leaf);
	--cs-copal: var(--wp--preset--color--copal);
	--cs-coal: var(--wp--preset--color--coal);
	--cs-ash: var(--wp--preset--color--ash);
	--cs-line: var(--wp--preset--color--line-on-sand);
	--cs-serif: var(--wp--preset--font-family--heading);
	--cs-sans: var(--wp--preset--font-family--body);
	--cs-radius: 16px;
	--cs-radius-panel: 20px;
	--cs-ease: cubic-bezier(0.33, 1, 0.68, 1);
	--cs-gutter: 20px;
	--cs-section-y: 64px;
	--cs-wrap: 1200px;
}

@media (min-width: 768px) {
	:root {
		--cs-gutter: 32px;
		--cs-section-y: 80px;
	}
}

@media (min-width: 1025px) {
	:root {
		--cs-section-y: 96px;
	}
}

html {
	scroll-behavior: smooth;
	scroll-padding-top: 16px;
	background: var(--cs-white);
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}
}

body {
	overflow-x: clip;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

a,
p,
figcaption,
li {
	overflow-wrap: break-word;
}

::selection {
	background: var(--cs-leaf);
	color: var(--cs-coal);
}

:where(a, button, summary, input, select, textarea):focus-visible {
	outline: 2px solid var(--cs-forest);
	outline-offset: 3px;
	border-radius: 4px;
}

.cs-ground-forest :where(a, button):focus-visible,
.cs-footer :where(a, button):focus-visible {
	outline-color: var(--cs-leaf);
}

img {
	max-width: 100%;
	height: auto;
}

/* The post content of a page file is a column of full-bleed sections. */
.upp-main > .wp-block-post-content,
.upp-main > .wp-block-post-content > * {
	margin-block: 0;
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ---------- Primitives ---------- */

.cs-wrap {
	box-sizing: border-box;
	width: 100%;
	max-width: calc(var(--cs-wrap) + 2 * var(--cs-gutter));
	margin-inline: auto;
	padding-inline: var(--cs-gutter);
}

.cs-section {
	padding-block: var(--cs-section-y);
}

.cs-ground-sand {
	background: var(--cs-sand);
}

.cs-ground-white {
	background: var(--cs-white);
}

.cs-ground-forest {
	background: var(--cs-forest);
	color: #fff;
}

.cs-ground-forest :is(h1, h2, h3) {
	color: #fff;
}

.cs-eyebrow {
	margin: 0;
	color: var(--cs-copal);
	font: 600 13px/1.3 var(--cs-sans);
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

/* Copal at 13px is 2.2:1 on white and 1.6:1 on sand, so on sand the
   eyebrow is forest (the mockup's .eyebrow.forest). On forest it is leaf. */
.cs-ground-sand .cs-eyebrow,
.cs-eyebrow--forest {
	color: var(--cs-forest);
}

.cs-ground-forest .cs-eyebrow {
	color: var(--cs-leaf);
}

.cs-h1,
.cs-h2,
.cs-h3 {
	margin: 0;
	color: var(--cs-forest);
	font-family: var(--cs-serif);
	font-weight: 400;
	letter-spacing: -0.01em;
}

.cs-h1 {
	font-size: clamp(40px, 5.5vw, 68px);
	line-height: 1.05;
}

.cs-h2 {
	font-size: clamp(32px, 3.6vw, 44px);
	line-height: 1.12;
}

.cs-h3 {
	font-size: 26px;
	line-height: 1.2;
}

.cs-eyebrow + .cs-h1,
.cs-eyebrow + .cs-h2 {
	margin-top: 12px;
}

.cs-sub {
	max-width: 62ch;
	margin: 14px 0 0;
}

.cs-head {
	margin-bottom: 32px;
}

@media (min-width: 768px) {
	.cs-head {
		margin-bottom: 40px;
	}
}

/* Buttons: pill, Poppins 600 16px, sentence case. */
.cs-btn {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 48px;
	padding: 14px 26px;
	border: 2px solid transparent;
	border-radius: 999px;
	font: 600 16px/1.1 var(--cs-sans);
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: transform 0.2s var(--cs-ease), background-color 0.2s, color 0.2s, border-color 0.2s;
}

.cs-btn:hover {
	transform: translateY(-2px);
	text-decoration: none;
}

.cs-btn--copal,
.cs-btn--copal:visited {
	background: var(--cs-copal);
	color: var(--cs-coal);
}

.cs-btn--copal:hover {
	color: var(--cs-coal);
}

.cs-btn--ghost,
.cs-btn--ghost:visited {
	border-color: var(--cs-forest);
	background: transparent;
	color: var(--cs-forest);
}

.cs-btn--ghost:hover {
	background: var(--cs-forest);
	color: #fff;
}

.cs-btn--white,
.cs-btn--white:visited {
	background: #fff;
	color: var(--cs-forest);
}

.cs-btn--white:hover {
	color: var(--cs-forest-deep);
}

.cs-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

@media (prefers-reduced-motion: reduce) {
	.cs-btn,
	.cs-btn:hover {
		transform: none;
		transition: none;
	}
}

/* Stars and the Trustpilot line. */
.cs-stars {
	color: var(--cs-copal);
	letter-spacing: 2px;
}

/* Copal stars on sand are decoration; the score is in the words beside them. */

/* Chips: training needs (story single, archive filter). */
.cs-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cs-chip {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 8px 16px;
	border: 2px solid var(--cs-copal);
	border-radius: 999px;
	background: transparent;
	color: var(--cs-coal);
	font: 400 15px/1.2 var(--cs-sans);
	text-decoration: none;
	box-sizing: border-box;
}

a.cs-chip:hover {
	background: color-mix(in srgb, var(--cs-copal) 22%, transparent);
	color: var(--cs-coal);
	text-decoration: none;
}

.cs-chip.is-current,
.cs-chip[aria-current] {
	background: var(--cs-copal);
	color: var(--cs-coal);
	font-weight: 600;
}

.cs-chip__count {
	margin-left: 6px;
	opacity: 0.75;
	font-size: 13px;
}

.cs-tag {
	display: inline-block;
	color: var(--cs-forest);
	font: 600 13px/1.3 var(--cs-sans);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

/* ---------- Header (parts/header.html) ---------- */

.wp-site-blocks > header.wp-block-template-part {
	position: relative;
	z-index: 50;
	margin: 0;
}

.cs-head-overlay .wp-site-blocks > header.wp-block-template-part {
	position: absolute;
	inset: 0 0 auto;
}

.cs-head-solid .wp-site-blocks > header.wp-block-template-part {
	background: var(--cs-sand);
}

.cs-header {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	width: 100%;
	max-width: calc(var(--cs-wrap) + 2 * var(--cs-gutter));
	margin-inline: auto;
	padding: 14px var(--cs-gutter);
}

@media (min-width: 768px) {
	.cs-header {
		padding-block: 22px;
	}
}

.cs-header > * {
	margin-block: 0;
}

.cs-header .wp-block-navigation {
	gap: 28px;
	font: 400 16px/1.2 var(--cs-sans);
}

/* Doubled class to outrank core's (0,3,0) "color: inherit" on links. */
.cs-header .wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content {
	color: var(--cs-forest);
	text-decoration: none;
}

.cs-header .wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content:hover .wp-block-navigation-item__label {
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 6px;
}

/* Over a photograph from tablet up (the overlay header sits on the split
   hero: logo on the sand panel, links over the photograph). */
@media (min-width: 1280px) {
	.cs-head-overlay .cs-header .wp-block-navigation:not(.is-menu-open) .wp-block-navigation-item:not(.cs-nav-cta) .wp-block-navigation-item__content.wp-block-navigation-item__content {
		color: #fff;
		text-shadow: 0 1px 8px rgba(0, 0, 0, 0.45);
	}
}

/* Contact: the copal button in the bar. */
.cs-header .wp-block-navigation .cs-nav-cta .wp-block-navigation-item__content.wp-block-navigation-item__content {
	padding: 12px 22px;
	border-radius: 999px;
	background: var(--cs-copal);
	color: var(--cs-coal);
	font-weight: 600;
	text-shadow: none;
}

.cs-header .wp-block-navigation .cs-nav-cta .wp-block-navigation-item__content:hover .wp-block-navigation-item__label {
	text-decoration: none;
}

/* Current page: underline, so it is not colour alone. Success stories is
   also current on a story single (aria-current="true"); Residential
   training is not marked on the archive, which sits under its path. */
.cs-header .wp-block-navigation-item__content[aria-current="page"] .wp-block-navigation-item__label,
.cs-header .cs-nav-stories .wp-block-navigation-item__content[aria-current="true"] .wp-block-navigation-item__label {
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 6px;
}

.cs-header .cs-nav-cta .wp-block-navigation-item__content[aria-current] .wp-block-navigation-item__label {
	text-decoration: none;
}

/* Burger below desktop (core switches at 600px; the house breakpoint is
   1025px). On an overlay page the links sit over the photograph, which
   starts at 46% of the width; below 1280px the row of links would reach
   back over the sand panel in white, so the burger stays up to 1280px. */
@media (max-width: 1024.98px) {
	.cs-header .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}

	.cs-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}
}

@media (min-width: 1025px) and (max-width: 1279.98px) {
	.cs-head-overlay .cs-header .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}

	.cs-head-overlay .cs-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}
}

.cs-header .wp-block-navigation__responsive-container-open {
	box-sizing: border-box;
	width: 48px;
	height: 48px;
	align-items: center;
	justify-content: center;
	border-radius: 999px;
	color: var(--cs-forest);
}

.cs-header .wp-block-navigation__responsive-container-open svg,
.cs-header .wp-block-navigation__responsive-container-close svg {
	width: 30px;
	height: 30px;
}

/* Phones: the overlay header sits on the photograph, so the burger is
   white on a soft dark disc that keeps it legible on any part of the
   photograph. Tablet: the burger sits over the photograph half too. */
.cs-head-overlay .cs-header .wp-block-navigation__responsive-container-open {
	background: rgba(0, 0, 0, 0.28);
	color: #fff;
}

/* Full-screen sand menu. */
.cs-header .wp-block-navigation__responsive-container.is-menu-open {
	padding: 16px var(--cs-gutter) 32px;
	background: var(--cs-sand) !important;
	color: var(--cs-forest) !important;
}

.cs-header .wp-block-navigation__responsive-container-close {
	top: 14px !important;
	right: var(--cs-gutter) !important;
	width: 48px;
	height: 48px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--cs-forest);
}

.cs-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	padding-top: 72px;
	align-items: flex-start;
}

.cs-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	gap: 0;
	width: 100%;
	align-items: flex-start;
}

.cs-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	width: 100%;
	border-bottom: 1px solid var(--cs-line);
}

.cs-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content.wp-block-navigation-item__content {
	display: block;
	width: 100%;
	padding: 16px 0;
	color: var(--cs-forest);
	font-family: var(--cs-serif);
	font-size: 32px;
	line-height: 1.15;
	text-shadow: none;
}

.cs-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.cs-nav-cta {
	width: auto;
	margin-top: 32px;
	border-bottom: 0;
}

.cs-header .wp-block-navigation__responsive-container.is-menu-open .cs-nav-cta .wp-block-navigation-item__content.wp-block-navigation-item__content {
	display: inline-flex;
	width: auto;
	padding: 16px 28px;
	border-radius: 999px;
	background: var(--cs-copal);
	color: var(--cs-coal);
	font: 600 17px/1.1 var(--cs-sans);
}

/* ---------- The pinned enquiry button on phones (cs/sticky-cta) ---------- */

.cs-sticky {
	position: fixed;
	right: 16px;
	bottom: calc(16px + env(safe-area-inset-bottom, 0px));
	z-index: 40;
	box-shadow: 0 10px 30px -8px rgba(0, 0, 0, 0.35);
	transition: opacity 0.25s, transform 0.25s var(--cs-ease), visibility 0.25s;
}

.cs-sticky.is-hidden {
	visibility: hidden;
	opacity: 0;
	transform: translateY(12px);
}

@media (min-width: 768px) {
	.cs-sticky {
		display: none;
	}
}

/* Room under the footer so the pinned button never covers its last line. */
@media (max-width: 767.98px) {
	.cs-footer {
		padding-bottom: 96px !important;
	}
}

/* ---------- Gravity Forms (GF's own CSS is off, inc/forms.php) ---------- */

.cs-form .gform_wrapper {
	margin: 0;
}

.cs-form .gform_heading,
.cs-form .gform_required_legend {
	display: none;
}

.cs-form .gform_fields {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: 18px 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cs-form .gfield {
	grid-column: span 12;
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

@media (min-width: 480px) {
	.cs-form .gfield--width-half {
		grid-column: span 6;
	}
}

.cs-form .gfield--type-section {
	margin-top: 12px;
	padding-top: 18px;
	border-top: 1px solid var(--cs-line);
}

.cs-form .gfield--type-section:first-child {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}

.cs-form .gsection_title {
	margin: 0;
	color: var(--cs-forest);
	font: 400 24px/1.2 var(--cs-serif);
}

.cs-form .gfield_label,
.cs-form .gform-field-label,
.cs-form legend.gfield_label {
	display: block;
	margin: 0 0 6px;
	padding: 0;
	color: var(--cs-forest);
	font: 600 14px/1.4 var(--cs-sans);
}

.cs-form .gfield_required {
	margin-left: 4px;
	color: var(--cs-forest);
	font-weight: 400;
	font-size: 13px;
}

.cs-form .gfield_required .gfield_required_text {
	font-style: normal;
}

.cs-form .hidden_label > .gfield_label,
.cs-form .hidden_label > legend.gfield_label,
.cs-form .hidden_sub_label,
.cs-form .gform-field-label--type-sub.hidden_sub_label {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
}

.cs-form .ginput_complex {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
}

.cs-form .ginput_complex > span {
	display: block;
	min-width: 0;
}

.cs-form input[type="text"],
.cs-form input[type="email"],
.cs-form input[type="tel"],
.cs-form textarea,
.cs-form select {
	box-sizing: border-box;
	width: 100%;
	min-height: 52px;
	padding: 14px 16px;
	border: 1px solid var(--cs-line);
	border-radius: 12px;
	background: #fff;
	color: var(--cs-coal);
	font: 300 16px/1.4 var(--cs-sans);
	transition: border-color 0.2s, box-shadow 0.2s;
}

.cs-form input::placeholder,
.cs-form textarea::placeholder {
	color: #6b6b6b;
}

.cs-form textarea {
	min-height: 140px;
	resize: vertical;
}

.cs-form input:focus,
.cs-form textarea:focus,
.cs-form select:focus {
	border-color: var(--cs-forest);
	outline: none;
	box-shadow: 0 0 0 3px rgba(46, 81, 61, 0.18);
}

.cs-form .gfield_radio {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 18px;
}

.cs-form .gchoice {
	display: flex;
	align-items: center;
	gap: 8px;
}

.cs-form .gchoice input {
	width: 20px;
	height: 20px;
	margin: 0;
	accent-color: var(--cs-forest);
}

.cs-form .gchoice label {
	font: 400 16px/1.3 var(--cs-sans);
}

.cs-form .gfield_description,
.cs-form .ginput_container_date + .gfield_description {
	margin-top: 6px;
	font: 400 13px/1.4 var(--cs-sans);
	color: var(--cs-coal);
}

.cs-form .gfield_error input,
.cs-form .gfield_error textarea {
	border-color: #a3341c;
}

.cs-form .validation_message,
.cs-form .gfield_validation_message {
	margin-top: 6px;
	color: #a3341c;
	font: 400 14px/1.4 var(--cs-sans);
}

.cs-form .gform_validation_errors {
	margin: 0 0 20px;
	padding: 14px 16px;
	border: 1px solid #a3341c;
	border-radius: 12px;
	background: #fff;
}

.cs-form .gform_validation_errors h2 {
	margin: 0;
	color: #a3341c;
	font: 600 15px/1.4 var(--cs-sans);
}

.cs-form .gform_footer {
	margin-top: 24px;
	padding: 0;
}

.cs-form .gform_footer .gform_button {
	min-width: 180px;
}

.cs-form .gform_confirmation_message {
	padding: 20px;
	border-left: 3px solid var(--cs-leaf);
	background: #fff;
	border-radius: 0 12px 12px 0;
	font-size: 17px;
}

.cs-form .gform_ajax_spinner,
.cs-form .gform-loader {
	margin-left: 12px;
	vertical-align: middle;
}

.cs-form .gform_hidden,
.cs-form .gfield--type-honeypot,
.cs-form .gform_validation_container,
.cs-form .gfield_visibility_hidden,
.cs-form .gfield_visibility_administrative {
	display: none !important;
}

/* GF's date field: the calendar toggle button (GF renders it whatever
   the field's icon setting; its icon is a dashicon, not loaded on the
   front end) sits inside the input on the right, drawn here. */
.cs-form .ginput_container_date {
	position: relative;
}

.cs-form .gform-datepicker-toggle {
	position: absolute;
	top: 50%;
	right: 6px;
	width: 40px;
	height: 40px;
	margin-top: -20px;
	padding: 0;
	border: 0;
	border-radius: 8px;
	background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232E513D' stroke-width='1.8' stroke-linecap='round'%3E%3Crect x='4' y='5.5' width='16' height='14' rx='2'/%3E%3Cpath d='M4 10h16M8.5 3.5v4M15.5 3.5v4'/%3E%3C/svg%3E") center / 22px no-repeat;
	cursor: pointer;
}

.cs-form .gform-datepicker-toggle .dashicons {
	display: none;
}

/* jQuery UI datepicker (GF's date field) in the theme's colours. */
.ui-datepicker {
	z-index: 60 !important;
	padding: 10px;
	border: 1px solid var(--cs-line);
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 16px 40px -12px rgba(0, 0, 0, 0.25);
	font: 400 14px/1.4 var(--cs-sans);
}

.ui-datepicker .ui-datepicker-header {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-bottom: 8px;
}

.ui-datepicker select {
	padding: 4px;
	border: 1px solid var(--cs-line);
	border-radius: 6px;
	font: inherit;
}

.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
	cursor: pointer;
	color: var(--cs-forest);
}

.ui-datepicker table {
	border-collapse: collapse;
}

.ui-datepicker td a {
	display: block;
	padding: 6px 8px;
	border-radius: 6px;
	color: var(--cs-coal);
	text-align: center;
	text-decoration: none;
}

.ui-datepicker td a:hover,
.ui-datepicker .ui-state-active {
	background: var(--cs-copal);
}
