/*
 * FC-009 mobile shell v2.
 *
 * Loaded after app.css so the approved desktop header/footer stays intact
 * while the mobile presentation gets a purpose-built drawer and card layout.
 */

.site-header__menu-backdrop,
.site-header__mobile-panel-head,
.site-header__mobile-panel-footer,
.site-footer__social-heading,
.site-footer__social-name {
	display: none;
}

@media (max-width: 860px) {
	/*
	 * Overscroll (rubber-band) colour only. This does NOT drive the iOS
	 * status bar tint: Safari reads <html> only when <body> has no
	 * background-color, and body always sets one. The status bar colour is
	 * handled by the body background-color in app.css.
	 */
	html {
		background: #ffffff;
	}

	.site-header,
	.site-header__bar,
	.site-header__mobile-actions {
		background: #ffffff;
	}

	/* Mobile navigation: a real off-canvas drawer instead of a stacked block. */
	.site-header__menu-backdrop {
		position: fixed;
		z-index: 40;
		inset: 0;
		display: block;
		width: 100%;
		height: 100%;
		padding: 0;
		border: 0;
		background: rgba(20, 29, 25, 0.48);
		backdrop-filter: blur(3px);
		opacity: 0;
		visibility: hidden;
		pointer-events: none;
		transition: opacity 220ms ease, visibility 0s linear 220ms;
	}

	.site-header.is-menu-open .site-header__menu-backdrop {
		opacity: 1;
		visibility: visible;
		pointer-events: auto;
		transition-delay: 0s;
	}

	.site-header__mobile-panel,
	html.js .site-header__mobile-panel[hidden] {
		position: fixed;
		z-index: 41;
		top: 0;
		inset-inline-end: 0;
		bottom: 0;
		display: flex;
		flex-direction: column;
		width: min(88vw, 24rem);
		max-height: none;
		border: 0;
		border-inline-start: 1px solid rgba(255, 255, 255, 0.12);
		border-radius: 24px 0 0 24px;
		color: var(--fc-surface, #ffffff);
		background:
			radial-gradient(circle at 90% 4%, rgba(193, 118, 88, 0.26), transparent 32%),
			linear-gradient(160deg, #124f3a 0%, #0b392b 100%);
		box-shadow: -18px 0 50px rgba(16, 30, 24, 0.28);
		overflow: hidden;
		transform: translateX(104%);
		opacity: 0;
		visibility: hidden;
		pointer-events: none;
		transition:
			transform 260ms cubic-bezier(0.22, 1, 0.36, 1),
			opacity 180ms ease,
			visibility 0s linear 260ms;
	}

	.site-header.is-menu-open .site-header__mobile-panel {
		transform: translateX(0);
		opacity: 1;
		visibility: visible;
		pointer-events: auto;
		transition-delay: 0s;
	}

	.site-header__mobile-panel-head {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 1rem;
		padding: 1.1rem 1rem 0.9rem 1.2rem;
		border-bottom: 1px solid rgba(255, 255, 255, 0.13);
	}

	.site-header__mobile-panel-heading {
		display: grid;
		gap: 0.1rem;
	}

	.site-header__mobile-panel-eyebrow {
		color: rgba(255, 255, 255, 0.62);
		font-size: 0.7rem;
		font-weight: 800;
		letter-spacing: 0.14em;
		line-height: 1.2;
		text-transform: uppercase;
	}

	.site-header__mobile-panel-title {
		margin: 0;
		color: #ffffff;
		font-size: 1.35rem;
		font-weight: 850;
		line-height: 1.2;
	}

	.site-header__mobile-close {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 2.75rem;
		min-width: 2.75rem;
		height: 2.75rem;
		padding: 0;
		border: 1px solid rgba(255, 255, 255, 0.2);
		border-radius: 999px;
		color: #ffffff;
		background: rgba(255, 255, 255, 0.1);
	}

	.site-header__mobile-close svg {
		width: 1.15rem;
		height: 1.15rem;
		fill: none;
		stroke: currentColor;
		stroke-linecap: round;
		stroke-width: 2;
	}

	.site-header__mobile-inner {
		display: flex;
		flex: 1 1 auto;
		flex-direction: column;
		min-height: 0;
		padding: 0.85rem 1rem 1rem;
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	.site-navigation--mobile {
		flex: 1 1 auto;
	}

	.site-navigation--mobile .site-navigation__list {
		display: grid;
		gap: 0;
	}

	.site-navigation--mobile .menu-item {
		border-bottom: 1px solid rgba(255, 255, 255, 0.12);
	}

	.site-navigation--mobile a {
		position: relative;
		display: flex;
		align-items: center;
		justify-content: flex-start;
		min-height: 3.5rem;
		padding: 0.8rem 2.4rem 0.8rem 0.35rem;
		border: 0;
		border-radius: 0;
		color: rgba(255, 255, 255, 0.9);
		background: transparent;
		font-size: 1.02rem;
		font-weight: 750;
		line-height: 1.25;
		transition: color 160ms ease, padding-inline-start 160ms ease;
	}

	.site-navigation--mobile a::after {
		position: absolute;
		inset-inline-end: 0.35rem;
		color: rgba(255, 255, 255, 0.42);
		font-size: 1.45rem;
		font-weight: 400;
		line-height: 1;
		content: "›";
	}

	.site-navigation--mobile a:hover,
	.site-navigation--mobile .current-menu-item > a,
	.site-navigation--mobile .current-menu-ancestor > a {
		border-color: transparent;
		color: #ffffff;
		background: transparent;
		padding-inline-start: 0.65rem;
	}

	.site-navigation--mobile .current-menu-item > a::before,
	.site-navigation--mobile .current-menu-ancestor > a::before {
		position: absolute;
		inset-inline-start: 0;
		width: 3px;
		height: 1.4rem;
		border-radius: 999px;
		background: var(--fc-brand-accent, #c17658);
		content: "";
	}

	.site-header__mobile-panel-footer {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0.55rem;
		margin-top: 1rem;
		padding-top: 0.85rem;
		border-top: 1px solid rgba(255, 255, 255, 0.13);
	}

	.site-header__mobile-panel-footer > :only-child {
		grid-column: 1 / -1;
	}

	.site-header__mobile-account,
	.site-header__mobile-cta {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		gap: 0.45rem;
		min-height: 2.9rem;
		margin: 0;
		padding: 0.7rem 0.8rem;
		border: 1px solid rgba(255, 255, 255, 0.18);
		border-radius: 14px;
		color: #ffffff;
		background: rgba(255, 255, 255, 0.09);
		font-size: 0.9rem;
		font-weight: 800;
		line-height: 1.2;
		text-align: center;
		text-decoration: none;
	}

	.site-header__mobile-account svg {
		width: 1rem;
		height: 1rem;
		fill: none;
		stroke: currentColor;
		stroke-linecap: round;
		stroke-linejoin: round;
		stroke-width: 1.8;
	}

	.site-header__mobile-cta {
		border-color: var(--fc-brand-accent, #c17658);
		color: #ffffff;
		background: var(--fc-brand-accent, #c17658);
	}

	.site-header.is-menu-open .site-header__menu-icon span:nth-child(1) {
		transform: translateY(6px) rotate(45deg);
	}

	.site-header.is-menu-open .site-header__menu-icon span:nth-child(2) {
		opacity: 0;
	}

	.site-header.is-menu-open .site-header__menu-icon span:nth-child(3) {
		transform: translateY(-6px) rotate(-45deg);
	}

	.site-header__menu-icon span {
		transform-origin: center;
		transition: transform 180ms ease, opacity 150ms ease;
	}

	/* Mobile footer: brand and contact span full width, navigation is carded. */
	.site-footer {
		background:
			linear-gradient(180deg, #fbfaf7 0%, #f5efe6 100%);
	}

	.site-footer__inner {
		gap: 0.9rem;
		padding-block: 1.25rem 1rem;
	}

	.site-footer__primary,
	.site-footer__primary--cols-1,
	.site-footer__primary--cols-2,
	.site-footer__primary--cols-3,
	.site-footer__primary--cols-4 {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0.75rem;
	}

	.site-footer__brand,
	.site-footer__contact {
		grid-column: 1 / -1;
	}

	.site-footer__brand,
	.site-footer__navigation,
	.site-footer__customer-links,
	.site-footer__contact {
		min-width: 0;
		padding: 1rem;
		border: 1px solid rgba(28, 73, 72, 0.1);
		border-radius: 18px;
		background: rgba(255, 255, 255, 0.82);
		box-shadow: 0 10px 28px rgba(38, 48, 42, 0.055);
	}

	.site-footer__brand {
		grid-template-columns: minmax(0, 1fr);
		gap: 0.7rem;
	}

	.site-footer__brand::before {
		display: none;
	}

	.site-footer__logo-link {
		max-width: min(12rem, 100%);
	}

	.site-footer__logo {
		max-height: 3rem;
	}

	.site-footer__column-title {
		margin-bottom: 0.65rem;
		color: var(--fc-brand-primary, #0f6342);
		font-size: 0.72rem;
		letter-spacing: 0.1em;
		text-transform: uppercase;
	}

	.site-footer__menu,
	.site-footer__link-list {
		display: grid;
		gap: 0;
	}

	.site-footer__menu li,
	.site-footer__link-list li {
		min-width: 0;
		border-bottom: 1px solid rgba(28, 73, 72, 0.09);
	}

	.site-footer__menu li:last-child,
	.site-footer__link-list li:last-child {
		border-bottom: 0;
	}

	.site-footer__menu a,
	.site-footer__link-list a {
		position: relative;
		width: 100%;
		min-height: 2.55rem;
		padding: 0.62rem 1.15rem 0.62rem 0;
		border-radius: 0;
		font-size: 0.86rem;
		font-weight: 750;
		line-height: 1.22;
	}

	.site-footer__menu a::after,
	.site-footer__link-list a::after {
		position: absolute;
		inset-inline-end: 0;
		color: rgba(28, 73, 72, 0.44);
		font-size: 1.05rem;
		content: "›";
	}

	.site-footer__contact {
		display: grid;
		gap: 0.9rem;
	}

	.site-footer__contact-details {
		display: grid;
		gap: 0.35rem;
	}

	.site-footer__hours {
		margin-top: 0.25rem;
		padding: 0.75rem;
		border-radius: 12px;
		background: var(--fc-background, #f7f2ea);
	}

	.site-footer__social-block {
		display: grid;
		gap: 0.55rem;
		padding-top: 0.85rem;
		border-top: 1px solid rgba(28, 73, 72, 0.1);
	}

	.site-footer__social-heading {
		display: block;
		margin: 0;
		color: var(--fc-brand-primary, #0f6342);
		font-size: 0.72rem;
		font-weight: 800;
		letter-spacing: 0.1em;
		text-transform: uppercase;
	}

	.site-footer__social {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0.5rem;
		margin: 0;
	}

	.site-footer__social-link {
		justify-content: flex-start;
		gap: 0.45rem;
		width: 100%;
		height: auto;
		min-height: 2.75rem;
		padding: 0.6rem 0.75rem;
		border-radius: 12px;
		font-size: 0.82rem;
		font-weight: 750;
	}

	.site-footer__social-name {
		display: inline;
	}

	.site-footer__bottom {
		padding: 0.85rem 1rem;
		border: 1px solid rgba(28, 73, 72, 0.1);
		border-radius: 16px;
		background: rgba(255, 255, 255, 0.72);
	}

	.site-footer__legal {
		width: 100%;
	}

	.site-footer__legal-list {
		width: 100%;
	}

	.site-footer__legal a {
		min-height: auto;
		padding: 0;
	}
}

@media (max-width: 359px) {
	.site-footer__primary,
	.site-footer__primary--cols-1,
	.site-footer__primary--cols-2,
	.site-footer__primary--cols-3,
	.site-footer__primary--cols-4,
	.site-footer__social {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (prefers-reduced-motion: reduce) {
	.site-header__menu-backdrop,
	.site-header__mobile-panel,
	.site-header__menu-icon span,
	.site-navigation--mobile a {
		transition: none;
	}
}