/*
Theme Name: Nails Star
Author: Nails Star
Description: Block theme for Nails Star beauty salons, Salamanca, Madrid.
Version: 0.4.1
Requires at least: 6.7
Text Domain: nails-star
*/

:root {
	--ns-container: 1440px; /* content width of every block, header and footer */
	--ns-gutter: max(clamp(16px, 4.583vw, 88px), (100vw - var(--ns-container)) / 2);
	--ns-y: clamp(64px, 5vw, 96px); /* vertical padding of every section */
	--ns-head-gap: clamp(32px, 3vw, 56px); /* section head -> content -> button */
	--ns-col-gap: clamp(40px, 6vw, 112px); /* text | media */
	--ns-fit: calc(100svh - var(--ns-header-h) - 2 * var(--ns-y)); /* media never taller than the screen */
	--ns-topbar-h: 34px;
	--ns-header-h: 77px;
	--ns-line: rgb(31 26 23 / .14);
	--ns-shadow: 0 12px 42px rgb(31 26 23 / .12);
}

:focus-visible { outline: 2px solid var(--wp--preset--color--gold); outline-offset: 3px; }

/* Sections stack edge to edge; spacing lives inside each section. */
.wp-site-blocks > * + *,
.ns-main .wp-block-post-content > * { margin-block: 0; }

/* ---------- Header ---------- */

html { background: #fff; } /* Safari 26 tints its bars from the root color */

/* Top bar scrolls away (own template part), the header row sticks. */
.ns-site-header {
	position: sticky;
	top: 0;
	z-index: 100;
}
.admin-bar .ns-site-header { top: var(--wp-admin--admin-bar--height, 0px); }
/* iOS 26 Safari sticks the header below its floating address bar and the page scrolls
   behind that bar — fill everything above the header with the header's white. */
.ns-site-header::before {
	content: "";
	position: absolute;
	right: 0;
	bottom: 100%;
	left: 0;
	height: 200px;
	background: #fff;
}
.ns-topbar-part { position: relative; z-index: 101; } /* above that fill at the top of the page */

.ns-topbar,
.ns-header {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 16px;
	padding: 0 var(--ns-gutter);
}
.ns-topbar > *,
.ns-header > * { margin: 0; }

.ns-topbar {
	height: var(--ns-topbar-h);
	background: var(--wp--preset--color--gold);
	color: rgb(255 255 255 / .88);
	font-size: 14px;
	line-height: 1;
	letter-spacing: 1px;
	text-transform: uppercase;
}
.ns-topbar a { color: inherit; text-decoration: none; }
.ns-topbar a:hover { color: #fff; }
.ns-topbar svg { display: block; }
.ns-topbar__links { display: flex; align-items: center; gap: 14px; }
.ns-topbar .ns-tw { color: var(--wp--preset--color--cream); }
.ns-topbar__contacts { justify-self: end; display: flex; align-items: center; gap: 14px; letter-spacing: .88px; }
.ns-topbar__contacts a[href^="mailto"] { text-transform: lowercase; letter-spacing: 0; }

.ns-header {
	height: var(--ns-header-h);
	background: #fff;
}
.ns-logo { display: inline-flex; color: var(--wp--preset--color--ink); }
.ns-logo svg { width: 71px; height: auto; }

.ns-nav {
	font-size: 16px;
	letter-spacing: 1px;
	text-transform: uppercase;
}
.ns-nav a { text-decoration: none; transition: color .2s; }
.ns-nav a:hover { color: var(--wp--preset--color--gold); }
.ns-nav .wp-block-navigation__submenu-container { text-transform: none; letter-spacing: 0; }
.ns-nav .wp-block-navigation-item__description { display: none; }

/* Services dropdown (desktop): numbered list 01–04 + a photo that follows the hovered item. */
@media (min-width: 1024px) {
	.ns-nav.wp-block-navigation .has-child > .wp-block-navigation__submenu-container {
		--ns-photo-1: url(/wp-content/uploads/2026/10/manicura-gel-nails-star-madrid-768x557.webp);
		--ns-photo-2: url(/wp-content/uploads/2026/10/pedicura-nails-star-salamanca-madrid-768x558.webp);
		--ns-photo-3: url(/wp-content/uploads/2026/10/unas-esculpidas-y-refuerzo-nails-star-madrid-768x558.webp);
		--ns-photo-4: url(/wp-content/uploads/2026/10/tratamiento-facial-nails-star-salamanca-madrid-768x558.webp);
		--ns-menu-photo: var(--ns-photo-1);
		display: grid;
		grid-template-columns: 440px 300px;
		grid-template-rows: repeat(5, auto);
		column-gap: 20px;
		row-gap: 2px;
		width: auto !important;
		height: auto;
		min-width: 0 !important;
		top: calc(50% + var(--ns-header-h) / 2 + 14px); /* li is centred in the header: 14px below its bottom edge */
		left: 50%;
		padding: 16px;
		border: 1px solid var(--ns-line) !important;
		border-radius: 24px;
		background: #fff;
		box-shadow: 0 28px 70px rgb(31 26 23 / .16);
		color: var(--wp--preset--color--ink);
		transform: translate(-50%, 12px);
		transition: opacity .25s, transform .25s, visibility .25s;
	}
	.ns-nav.wp-block-navigation .has-child:is(:hover, :focus-within) > .wp-block-navigation__submenu-container,
	.ns-nav.wp-block-navigation .wp-block-navigation-submenu__toggle[aria-expanded="true"] ~ .wp-block-navigation__submenu-container {
		transform: translate(-50%, 0);
	}
	/* hover bridge over the gap between "Услуги" and the card */
	.ns-nav .has-child > .wp-block-navigation__submenu-container::before {
		content: "";
		position: absolute;
		right: 0;
		bottom: 100%;
		left: 0;
		height: calc(var(--ns-header-h) / 2 + 4px);
	}
	.ns-nav .has-child > .wp-block-navigation__submenu-container::after {
		content: "";
		grid-area: 1 / 2 / -1 / 3;
		min-height: 360px;
		border-radius: 16px;
		background: var(--wp--preset--color--cream) center / cover;
		/* all four stacked under the visible one, so hover never waits for a download (~30 KB each) */
		background-image: var(--ns-menu-photo), var(--ns-photo-1), var(--ns-photo-2), var(--ns-photo-3), var(--ns-photo-4);
	}
	.ns-nav .wp-block-navigation__submenu-container:has(.is-pedicura:is(:hover, :focus-within)) { --ns-menu-photo: var(--ns-photo-2); }
	.ns-nav .wp-block-navigation__submenu-container:has(.is-modelado:is(:hover, :focus-within)) { --ns-menu-photo: var(--ns-photo-3); }
	.ns-nav .wp-block-navigation__submenu-container:has(.is-belleza:is(:hover, :focus-within)) { --ns-menu-photo: var(--ns-photo-4); }

	.ns-nav .wp-block-navigation__submenu-container { counter-reset: ns-svc; }
	.ns-nav.wp-block-navigation .wp-block-navigation__submenu-container > .wp-block-navigation-item > .wp-block-navigation-item__content {
		display: grid;
		grid-template-columns: 40px 1fr auto;
		align-items: baseline;
		padding: 16px 18px;
		border-radius: 16px;
		transition: background-color .25s;
	}
	.ns-nav .wp-block-navigation__submenu-container > :not(.is-all) > a::before {
		counter-increment: ns-svc;
		content: counter(ns-svc, decimal-leading-zero);
		color: var(--wp--preset--color--gold);
		font-family: var(--wp--preset--font-family--noto-serif-display);
		font-size: 18px;
	}
	.ns-nav .wp-block-navigation__submenu-container > :not(.is-all) > a::after {
		content: "→";
		grid-area: 1 / 3 / 3 / 4;
		align-self: center;
		color: var(--wp--preset--color--gold);
		font-size: 20px;
		opacity: 0;
		transform: translateX(-8px);
		transition: opacity .25s, transform .25s;
	}
	.ns-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__label {
		font-family: var(--wp--preset--font-family--noto-serif-display);
		font-size: 22px;
		line-height: 1.2;
	}
	.ns-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__description {
		display: block;
		grid-column: 2;
		margin-top: 6px;
		color: rgb(31 26 23 / .6);
		font-size: 14px;
		line-height: 1.4;
	}
	.ns-nav .wp-block-navigation__submenu-container > :not(.is-all) > a:is(:hover, :focus-visible) { background: var(--wp--preset--color--cream); color: inherit; }
	.ns-nav .wp-block-navigation__submenu-container > :not(.is-all) > a:is(:hover, :focus-visible)::after { opacity: 1; transform: none; }

	/* "Все услуги" — closing link under the list */
	.ns-nav .wp-block-navigation__submenu-container > .is-all { margin-top: 8px; border-top: 1px solid var(--ns-line); }
	.ns-nav.wp-block-navigation .wp-block-navigation__submenu-container > .is-all > .wp-block-navigation-item__content {
		display: block;
		padding: 18px 18px 4px;
		border-radius: 0;
		font-size: 14px;
		font-weight: 500;
		letter-spacing: 1px;
		text-transform: uppercase;
	}
	.ns-nav .wp-block-navigation__submenu-container > .is-all .wp-block-navigation-item__label { font: inherit; }
	.ns-nav .wp-block-navigation__submenu-container > .is-all a::after { content: " →"; }
}
/* small laptops: no room for the photo next to the list */
@media (min-width: 1024px) and (max-width: 1279.98px) {
	.ns-nav.wp-block-navigation .has-child > .wp-block-navigation__submenu-container { grid-template-columns: 440px; }
	.ns-nav .has-child > .wp-block-navigation__submenu-container::after { display: none; }
}
@media (min-width: 1024px) and (prefers-reduced-motion: reduce) {
	.ns-nav .wp-block-navigation__submenu-container,
	.ns-nav .wp-block-navigation__submenu-container * { transition: none !important; }
}

.ns-nav .wp-block-navigation__responsive-container-open svg { width: 28px; height: 28px; }
/* Overlay menu (phones/tablets): left-aligned list, submenu without the dropdown card */
.ns-nav .wp-block-navigation__responsive-container.is-menu-open { padding: 24px var(--ns-gutter); }
/* core copies .items-justified-center onto the inner list, so reset it there too */
.ns-nav .is-menu-open,
.ns-nav .is-menu-open .ns-nav {
	--navigation-layout-justification-setting: flex-start;
	--navigation-layout-justify: flex-start;
}
.ns-nav .is-menu-open .wp-block-navigation__container { gap: 22px; font-size: 20px; }
.ns-nav .is-menu-open .wp-block-navigation__submenu-container {
	gap: 14px;
	min-width: 0 !important;
	padding: 16px 0 4px 16px;
	border: 0 !important;
	border-left: 1px solid var(--ns-line) !important;
	border-radius: 0;
	box-shadow: none;
	font-size: 17px;
}
.ns-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content { padding: 0; color: rgb(31 26 23 / .7); }

.ns-header__actions { justify-self: end; display: flex; align-items: center; gap: 24px; }
.ns-header__cta {
	padding-bottom: 6px;
	border-bottom: 1px solid currentColor;
	color: var(--wp--preset--color--ink);
	font-size: 16px;
	line-height: 20px;
	letter-spacing: 1px;
	text-decoration: none;
	text-transform: uppercase;
	transition: color .2s;
}
.ns-header__cta:hover { color: var(--wp--preset--color--gold); }

.ns-lang { position: relative; }
.ns-lang summary {
	display: flex;
	align-items: center;
	gap: 14px;
	height: 36px;
	padding: 0 16px;
	border: 1px solid var(--ns-line);
	border-radius: 999px;
	font-size: 16px;
	line-height: 1;
	letter-spacing: 1px;
	list-style: none;
	cursor: pointer;
}
.ns-lang summary::-webkit-details-marker { display: none; }
.ns-lang summary::after {
	content: "";
	width: 6px;
	height: 6px;
	border-right: 1px solid;
	border-bottom: 1px solid;
	transform: translateY(-2px) rotate(45deg);
	transition: transform .2s;
}
.ns-lang[open] summary::after { transform: translateY(2px) rotate(-135deg); }
.ns-lang ul {
	position: absolute;
	top: calc(100% + 6px);
	right: 0;
	min-width: 100%;
	margin: 0;
	padding: 8px 0;
	list-style: none;
	background: #fff;
	border: 1px solid var(--ns-line);
	border-radius: 18px;
	box-shadow: var(--ns-shadow);
}
.ns-lang a {
	display: block;
	padding: 8px 18px;
	color: rgb(31 26 23 / .52);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 1px;
	text-decoration: none;
}
.ns-lang a:hover { color: var(--wp--preset--color--ink); }

/* Burger from 1024px down (core switches only at 600px). */
@media (max-width: 1023.98px) {
	:root { --ns-header-h: 64px; }
	.ns-header { grid-template-columns: auto 1fr auto; }
	.ns-header__actions { order: 2; }
	.ns-nav { order: 3; }
	.ns-logo svg { width: 52px; }
	.ns-nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
	.ns-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
}

@media (max-width: 767.98px) {
	.ns-topbar { grid-template-columns: 1fr auto; }
	.ns-topbar__title,
	.ns-topbar__contacts span,
	.ns-topbar__contacts a[href^="mailto"],
	.ns-header__cta { display: none; }
	.ns-header__actions { gap: 12px; }
}

/* ---------- Booking popover (two salons) ---------- */

.ns-booking {
	display: none;
	box-sizing: border-box;
	width: min(440px, calc(100vw - 32px));
	margin: auto;
	padding: 32px;
	border: 0;
	border-radius: 24px;
	background: #fff;
	color: var(--wp--preset--color--ink);
	box-shadow: 0 24px 80px rgb(31 26 23 / .25);
	opacity: 0;
	translate: 0 12px;
	transition: opacity .25s, translate .25s, display .25s allow-discrete, overlay .25s allow-discrete;
}
.ns-booking:popover-open { display: block; opacity: 1; translate: 0 0; }
@starting-style { .ns-booking:popover-open { opacity: 0; translate: 0 12px; } }
.ns-booking::backdrop { background: rgb(31 26 23 / .55); backdrop-filter: blur(4px); }

.ns-booking__title {
	margin: 0 0 20px;
	font-family: var(--wp--preset--font-family--noto-serif-display);
	font-size: 28px;
	line-height: 1.1;
}
.ns-booking__salon {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin-top: 12px;
	padding: 18px 48px 18px 20px;
	border: 1px solid var(--ns-line);
	border-radius: 16px;
	color: inherit;
	text-decoration: none;
	transition: border-color .2s;
}
.ns-booking__salon:hover { border-color: var(--wp--preset--color--gold); }
.ns-booking__salon::after {
	content: "→";
	position: absolute;
	top: 50%;
	right: 20px;
	translate: 0 -50%;
	color: var(--wp--preset--color--gold);
	font-size: 20px;
}
.ns-booking__name { font-size: 18px; font-weight: 500; }
.ns-booking__meta { font-size: 14px; color: rgb(31 26 23 / .6); }
.ns-booking__close {
	position: absolute;
	top: 16px;
	right: 16px;
	width: 36px;
	height: 36px;
	border: 1px solid var(--ns-line);
	border-radius: 50%;
	background: none;
	color: inherit;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
}

@media (max-width: 767.98px) {
	/* bottom sheet on phones */
	.ns-booking {
		width: 100%;
		max-width: none;
		margin: auto 0 0;
		padding: 28px 16px calc(28px + env(safe-area-inset-bottom));
		border-radius: 24px 24px 0 0;
	}
}

/* ---------- Hero ---------- */

.ns-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	display: flex;
	align-items: center;
	box-sizing: border-box;
	min-height: min(1100px, calc(100svh - var(--ns-topbar-h) - var(--ns-header-h)));
	padding: 120px var(--ns-gutter);
	background: var(--wp--preset--color--ink);
	color: #fff;
}
.ns-hero__media { position: absolute; inset: 0; z-index: -1; }
.ns-hero__media img,
.ns-hero__media video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
/* Video is 3px smaller than the poster (on the edge hidden by the dark gradient):
   otherwise Chrome takes the video as LCP and PageSpeed counts until it starts playing. */
.ns-hero__media video { left: 3px; width: calc(100% - 3px); opacity: 0; transition: opacity .25s ease; } /* short: it appears on frame 0 = the poster */
.ns-hero__media.is-playing video { opacity: 1; }
.ns-hero__media::after {
	content: "";
	position: absolute;
	inset: 0;
	/* Figma: .7 / .3 / .12 — a bit darker on the left: video scenes are brighter than the mockup photo */
	background: linear-gradient(90deg, rgb(31 26 23 / .8) 0%, rgb(31 26 23 / .45) 45%, rgb(31 26 23 / .12) 100%);
}
.ns-hero__lead { text-shadow: 0 1px 12px rgb(31 26 23 / .45); }

.ns-hero__content { position: relative; max-width: 1074px; }
.ns-hero__content > * { margin: 0; }
.ns-hero .ns-hero__title {
	color: #fff;
	font-size: var(--wp--preset--font-size--hero);
	line-height: 1.1;
}
.ns-hero .ns-hero__lead {
	max-width: 720px;
	margin-top: 32px;
	color: rgb(255 255 255 / .82);
	font-size: 18px;
	line-height: 1.4;
}
.ns-hero .ns-hero__lead + .ns-hero__lead { margin-top: 12px; }
.ns-hero .ns-hero__actions { margin-top: 38px; gap: 24px; }

.wp-block-button.is-style-ghost .wp-block-button__link {
	padding: 17px 28px;
	border: 1px solid rgb(255 255 255 / .42);
	background: rgb(255 255 255 / .12);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
}
.wp-block-button.is-style-ghost .wp-block-button__link:hover { background: rgb(255 255 255 / .22); }

.ns-hero__pause {
	position: absolute;
	z-index: 1;
	right: var(--ns-gutter);
	bottom: 32px;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid rgb(255 255 255 / .42);
	border-radius: 50%;
	background: rgb(255 255 255 / .12);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	color: #fff;
	cursor: pointer;
	opacity: 0;
	pointer-events: none;
	transition: opacity .3s;
}
.ns-hero__media.is-playing .ns-hero__pause { opacity: 1; pointer-events: auto; }
.ns-hero__pause::before {
	content: "";
	box-sizing: border-box;
	width: 10px;
	height: 12px;
	border-inline: 3px solid;
}
.ns-hero__pause[aria-pressed="true"]::before {
	width: 0;
	height: 0;
	margin-left: 3px;
	border-style: solid;
	border-width: 7px 0 7px 11px;
	border-color: transparent transparent transparent currentColor;
}

/* Phone: 4:5 video on top fading into ink, text below it. */
@media (max-width: 767.98px) {
	.ns-hero {
		flex-direction: column;
		align-items: stretch;
		justify-content: flex-end;
		min-height: calc(100svh - var(--ns-topbar-h) - var(--ns-header-h));
		padding: 0 var(--ns-gutter) 32px;
	}
	.ns-hero__media { bottom: auto; aspect-ratio: 4 / 5; }
	.ns-hero__media video { left: 0; width: 100%; height: calc(100% - 3px); }
	/* solid ink before the edge, so the video's bottom border never shows */
	.ns-hero__media::after {
		inset: 0 0 -1px;
		background: linear-gradient(180deg, rgb(31 26 23 / 0) 22%, rgb(31 26 23 / .65) 50%, var(--wp--preset--color--ink) 88%);
	}
	.ns-hero .ns-hero__title { text-shadow: 0 2px 24px rgb(31 26 23 / .35); }
	.ns-hero__content { margin-top: 50vw; } /* keeps the upper part of the video clear */
	.ns-hero .ns-hero__lead { margin-top: 16px; font-size: 15px; }
	.ns-hero .ns-hero__lead--more { display: none; } /* text would cover the video; still in HTML for SEO */
	.ns-hero .ns-hero__actions { flex-direction: column; align-items: stretch; gap: 12px; margin-top: 28px; }
	.ns-hero__actions .wp-block-button,
	.ns-hero__actions .wp-block-button__link { width: 100%; box-sizing: border-box; text-align: center; }
	.ns-hero__pause { top: 16px; right: 16px; bottom: auto; width: 40px; height: 40px; }
}

/* ---------- Shared section typography ---------- */

.ns-label {
	color: var(--wp--preset--color--gold);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: 2px;
	text-transform: uppercase;
}
.ns-title {
	font-size: var(--wp--preset--font-size--title);
	line-height: 1.1;
}
.ns-text {
	max-width: 649px;
	color: rgb(31 26 23 / .64);
	font-size: 18px;
	line-height: 1.3;
}
.ns-address {
	display: flex;
	gap: 14px;
	max-width: 440px;
	font-family: var(--wp--preset--font-family--noto-serif-display);
	font-size: 24px;
	line-height: 1.35;
}
.ns-address::before {
	content: "";
	flex: none;
	width: 26px;
	height: 26px;
	background: var(--wp--preset--color--gold);
	-webkit-mask: var(--ns-pin) center / contain no-repeat;
	mask: var(--ns-pin) center / contain no-repeat;
}
.ns-address a { color: #000; text-decoration: none; }
.ns-address a:hover { text-decoration: underline; text-underline-offset: 4px; }
:root {
	--ns-pin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 26' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.6 15.74C2.38 16.72 1 18.09 1 19.6 1 22.58 6.37 25 13 25s12-2.42 12-5.4c0-1.51-1.38-2.88-3.6-3.86M20.2 8.2c0 4.88-5.4 7.2-7.2 10.8-1.8-3.6-7.2-5.92-7.2-10.8a7.2 7.2 0 1 1 14.4 0ZM14.2 8.2a1.2 1.2 0 1 1-2.4 0 1.2 1.2 0 0 1 2.4 0Z'/%3E%3C/svg%3E");
}

/* Text column shared by the salon blocks: label, title, text, address, button */
.ns-copy > * { margin: 0; }
.ns-copy .ns-title { margin-top: 24px; }
.ns-copy .ns-text { margin-top: 16px; }
.ns-copy .ns-title + .ns-text { margin-top: 32px; }
.ns-copy .ns-address { margin-top: 32px; }
.ns-copy .ns-actions { margin-top: 40px; }

/* ---------- About (Claudio Coello): text | photo to the edge ---------- */

.ns-about {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
	column-gap: var(--ns-col-gap);
	padding: var(--ns-y) var(--ns-gutter);
	background: #fff;
}
.ns-about__photo { height: min(var(--ns-fit), 860px); margin: 0; }
.ns-about__photo img,
.ns-location__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.ns-about__photo img { object-position: 50% 80%; } /* keep the storefront in frame */

/* ---------- Second salon (Velázquez): square photo | text, mirrored ---------- */

.ns-location {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
	column-gap: var(--ns-col-gap);
	padding: var(--ns-y) var(--ns-gutter);
	background: #fff;
}
.ns-location__photo { aspect-ratio: 1; max-height: var(--ns-fit); margin: 0; }
.ns-location__photo img { object-position: 50% 65%; }

@media (max-width: 1023.98px) {
	.ns-about,
	.ns-location { grid-template-columns: 1fr; }
	.ns-about { padding: 0; }
	.ns-about__content { padding: var(--ns-y) var(--ns-gutter); }
	.ns-about__photo { height: auto; aspect-ratio: 4 / 5; }
	/* phone rhythm: text, photo, text, photo — photos edge to edge */
	.ns-location { padding: var(--ns-y) 0 0; }
	.ns-location__content { order: -1; padding: 0 var(--ns-gutter) var(--ns-y); }
	.ns-location__photo { aspect-ratio: 4 / 5; max-height: none; }
}
@media (max-width: 767.98px) {
	.ns-label { font-size: 13px; letter-spacing: 1.5px; }
	.ns-text { font-size: 16px; line-height: 1.45; }
	.ns-address { font-size: 20px; }
	.ns-copy .ns-title { margin-top: 16px; }
	.ns-copy .ns-title + .ns-text { margin-top: 20px; }
	.ns-copy .ns-address { margin-top: 24px; }
	.ns-copy .ns-actions { margin-top: 28px; }
	.ns-actions .wp-block-button,
	.ns-actions .wp-block-button__link { width: 100%; box-sizing: border-box; text-align: center; }
}

/* Outline button for light backgrounds */
.wp-block-button.is-style-outline .wp-block-button__link {
	padding: 17px 31px;
	border: 1px solid rgb(31 26 23 / .3);
	background: transparent;
	color: var(--wp--preset--color--ink);
}
.wp-block-button.is-style-outline .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--gold);
	background: transparent;
	color: var(--wp--preset--color--gold);
}

/* ---------- Services: 2x2 photo cards ---------- */

.ns-services {
	padding: var(--ns-y) var(--ns-gutter);
	background: var(--wp--preset--color--mist);
}
.ns-services__head { max-width: 1069px; margin: 0 auto var(--ns-head-gap); text-align: center; }
.ns-services__head .ns-text { max-width: 760px; margin-inline: auto; }

.ns-services__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px;
}
.ns-service {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	aspect-ratio: 862 / 626;
	min-height: 440px;
	margin: 0 !important;
}
.ns-service > figure { position: absolute; inset: 0; z-index: -2; margin: 0; }
.ns-service img { width: 100%; height: 100%; object-fit: cover; }
/* Figma: white fade at the bottom (0 / .2 at 60% / .8) — a bit denser for the description */
.ns-service::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(180deg, rgb(255 255 255 / 0) 35%, rgb(255 255 255 / .55) 65%, rgb(255 255 255 / .9) 100%);
}
.ns-service__body { padding: 40px; }
.ns-service__body > * { margin: 0; }
.ns-service__num,
.ns-service__title {
	font-family: var(--wp--preset--font-family--noto-serif-display);
	font-size: clamp(26px, 2.1vw, 40px);
	line-height: 1.1;
}
.ns-service__num { color: var(--wp--preset--color--gold); }
.ns-service .ns-service__title { margin-top: 8px; }
.ns-service__title a { color: #000; text-decoration: none; }
.ns-service__title a::after { content: ""; position: absolute; inset: 0; } /* whole card is the link */
.ns-service .ns-service__text {
	max-width: 560px;
	margin-top: 12px;
	color: rgb(31 26 23 / .72);
	font-size: 16px;
	line-height: 1.4;
}
.ns-services__actions { justify-content: center; gap: 24px; margin-top: var(--ns-head-gap); }

/* ---------- Gentle zoom on hover (photos of all blocks) ---------- */

.ns-about__photo,
.ns-location__photo { overflow: hidden; }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.ns-service img,
	.ns-about__photo img,
	.ns-location__photo img { transition: transform 1.4s cubic-bezier(.16, 1, .3, 1); }
	.ns-service:hover img,
	.ns-about:hover .ns-about__photo img,
	.ns-location:hover .ns-location__photo img { transform: scale(1.04); }
}

/* Tablet + phone: editorial list — photo with number + title on a soft dark fade,
   description right below on the section background. No boxes, nothing cut off. */
@media (max-width: 1023.98px) {
	.ns-services__grid { gap: 56px 20px; }
	.ns-service {
		display: grid;
		grid-template-rows: 1fr auto auto auto;
		aspect-ratio: auto;
		min-height: 0;
		overflow: visible;
	}
	.ns-service::before { display: none; }
	.ns-service__body { display: contents; } /* its children join the card grid */
	.ns-service > figure,
	.ns-service__num,
	.ns-service .ns-service__title,
	.ns-service .ns-service__text { grid-column: 1; margin: 0; }
	.ns-service > figure {
		position: relative;
		inset: auto;
		z-index: auto;
		grid-row: 1 / 4;
		aspect-ratio: 862 / 626;
		overflow: hidden;
	}
	.ns-service > figure::after {
		content: "";
		position: absolute;
		inset: 0;
		background: linear-gradient(180deg, rgb(31 26 23 / 0) 40%, rgb(31 26 23 / .72) 100%);
	}
	.ns-service__num { grid-row: 2; z-index: 1; padding: 0 24px; color: #DCC3A1; font-size: 22px; } /* lighter gold: brand gold is too dark on the photo */
	.ns-service .ns-service__title { grid-row: 3; z-index: 1; padding: 4px 24px 22px; font-size: 30px; }
	.ns-service__title a { color: #fff; }
	.ns-service .ns-service__text { grid-row: 4; max-width: none; margin-top: 18px; }
}

@media (max-width: 767.98px) {
	.ns-services__grid { grid-template-columns: 1fr; gap: 44px; }
	.ns-service__num { padding: 0 20px; font-size: 20px; }
	.ns-service .ns-service__title { padding: 2px 20px 18px; font-size: 26px; }
	.ns-service .ns-service__text { margin-top: 14px; font-size: 15px; line-height: 1.5; }
	.ns-services__actions { flex-direction: column; gap: 12px; }
}

/* ---------- Manifesto: dark, centered ---------- */

.ns-manifesto {
	padding: var(--ns-y) var(--ns-gutter);
	background: var(--wp--preset--color--ink);
	text-align: center;
}
.ns-manifesto__inner { max-width: 1069px; margin-inline: auto; }
.ns-manifesto .ns-title { color: #fff; }
.ns-manifesto .ns-text { max-width: 868px; margin-inline: auto; color: rgb(255 255 255 / .74); }
.ns-manifesto .ns-title + .ns-text { margin-top: 44px; }
.ns-manifesto .ns-actions { justify-content: center; }

/* ---------- Standards (sterilization): text | square photo ---------- */

.ns-standards {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
	column-gap: var(--ns-col-gap);
	padding: var(--ns-y) var(--ns-gutter);
	background: #fff;
}
.ns-standards .ns-text { max-width: 664px; }
.ns-standards__photo { aspect-ratio: 1; max-height: var(--ns-fit); margin: 0; overflow: hidden; }
.ns-standards__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* ---------- Advantages: 4 icon cards ---------- */

.ns-advantages {
	padding: var(--ns-y) var(--ns-gutter);
	background: var(--wp--preset--color--mist);
}
.ns-advantages__head { max-width: 1040px; margin: 0 auto var(--ns-head-gap); text-align: center; }
.ns-advantages__head .ns-text { max-width: 880px; margin-inline: auto; }
.ns-advantages__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
}
.ns-advantage {
	margin: 0 !important;
	padding: 32px 28px;
	background: #fff;
	text-align: center;
}
.ns-advantage > * { margin: 0; }
.ns-advantage figure { width: 96px; margin-inline: auto; }
.ns-advantage img { display: block; width: 100%; height: auto; }
.ns-advantage .ns-advantage__title { margin-top: 24px; font-size: 22px; line-height: 1.3; }
.ns-advantage .ns-advantage__text { margin-top: 12px; color: rgb(31 26 23 / .64); font-size: 16px; line-height: 1.45; }
.ns-advantages__actions { justify-content: center; margin-top: var(--ns-head-gap); }

/* gentle hover, same feel as the photo blocks */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.ns-standards__photo img,
	.ns-advantage img { transition: transform 1.4s cubic-bezier(.16, 1, .3, 1); }
	.ns-standards:hover .ns-standards__photo img { transform: scale(1.04); }
	.ns-advantage:hover img { transform: scale(1.06); }
}

@media (max-width: 1279.98px) {
	.ns-advantages__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 1023.98px) {
	.ns-standards { grid-template-columns: 1fr; padding: var(--ns-y) 0 0; }
	.ns-standards__content { padding: 0 var(--ns-gutter) var(--ns-y); }
	.ns-standards__photo { aspect-ratio: 4 / 5; max-height: none; }
}
/* Phone: advantages as one white panel with dividers — no separate boxes */
@media (max-width: 767.98px) {
	.ns-manifesto .ns-title + .ns-text { margin-top: 24px; }
	.ns-advantages__grid { grid-template-columns: 1fr; gap: 0; background: #fff; }
	.ns-advantage {
		display: grid;
		grid-template-columns: 56px 1fr;
		column-gap: 16px;
		padding: 24px 20px;
		background: none;
		text-align: left;
	}
	.ns-advantage + .ns-advantage { border-top: 1px solid var(--ns-line); }
	.ns-advantage figure { grid-row: 1 / 3; width: 56px; margin: 0; }
	.ns-advantage .ns-advantage__title { margin-top: 2px; font-size: 20px; }
	.ns-advantage .ns-advantage__text { margin-top: 6px; font-size: 15px; line-height: 1.45; }
	.ns-advantages__actions { margin-top: 32px; }
}

/* Dark pill button (light backgrounds) + Instagram icon */
.wp-block-button.is-style-dark .wp-block-button__link { background: var(--wp--preset--color--ink); color: #fff; }
.wp-block-button.is-style-dark .wp-block-button__link:hover { background: var(--wp--preset--color--gold); }
.ns-btn-instagram .wp-block-button__link { display: inline-flex; align-items: center; gap: 12px; }
.ns-btn-instagram .wp-block-button__link::after {
	content: "";
	width: 24px;
	height: 24px;
	background: currentColor;
	-webkit-mask: var(--ns-ig) center / contain no-repeat;
	mask: var(--ns-ig) center / contain no-repeat;
}
:root {
	--ns-ig: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6'%3E%3Crect x='3' y='3' width='18' height='18' rx='5'/%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Ccircle cx='17.5' cy='6.5' r='.6' fill='%23000'/%3E%3C/svg%3E");
}

/* ---------- Gallery: Figma grid 3 columns, 3 tall + 6 short ---------- */

.ns-gallery { padding: var(--ns-y) var(--ns-gutter); background: #fff; }
.ns-gallery__head { margin-bottom: var(--ns-head-gap); }
/* Figma grid: 3 columns, 3 tall + 6 short tiles. Photos are cropped per slot so nails stay whole. */
.ns-gallery__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
}
.ns-gallery__grid > figure {
	position: relative;
	overflow: hidden;
	aspect-ratio: 568 / 416; /* short tiles set the row height; tall ones span two rows */
	margin: 0 !important;
}
.ns-gallery__grid > figure.is-tall { aspect-ratio: auto; }
.ns-gallery__grid > figure:nth-child(1) { grid-area: 1 / 1 / 3 / 2; }
.ns-gallery__grid > figure:nth-child(2) { grid-area: 1 / 2; }
.ns-gallery__grid > figure:nth-child(3) { grid-area: 2 / 2; }
.ns-gallery__grid > figure:nth-child(4) { grid-area: 1 / 3 / 3 / 4; }
.ns-gallery__grid > figure:nth-child(5) { grid-area: 3 / 1; }
.ns-gallery__grid > figure:nth-child(6) { grid-area: 4 / 1; }
.ns-gallery__grid > figure:nth-child(7) { grid-area: 3 / 2 / 5 / 3; }
.ns-gallery__grid > figure:nth-child(8) { grid-area: 3 / 3; }
.ns-gallery__grid > figure:nth-child(9) { grid-area: 4 / 3; }
.ns-gallery__grid img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.ns-gallery__actions { justify-content: center; margin-top: var(--ns-head-gap); }

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.ns-gallery__grid img { transition: transform 1.4s cubic-bezier(.16, 1, .3, 1), filter 1.4s ease; }
	.ns-gallery__grid > figure:hover img { transform: scale(1.06); filter: saturate(1.08); }
}

@media (max-width: 1023.98px) {
	.ns-gallery__grid { gap: 12px; }
}
/* Phone: same rhythm in 2 columns, tall tiles alternate sides */
@media (max-width: 767.98px) {
	.ns-gallery__grid { grid-template-columns: 1fr 1fr; gap: 8px; }
	.ns-gallery__grid > figure:nth-child(1) { grid-area: 1 / 1 / 3 / 2; }
	.ns-gallery__grid > figure:nth-child(2) { grid-area: 1 / 2; }
	.ns-gallery__grid > figure:nth-child(3) { grid-area: 2 / 2; }
	.ns-gallery__grid > figure:nth-child(4) { grid-area: 3 / 2 / 5 / 3; }
	.ns-gallery__grid > figure:nth-child(5) { grid-area: 3 / 1; }
	.ns-gallery__grid > figure:nth-child(6) { grid-area: 4 / 1; }
	.ns-gallery__grid > figure:nth-child(7) { grid-area: 5 / 1 / 7 / 2; }
	.ns-gallery__grid > figure:nth-child(8) { grid-area: 5 / 2; }
	.ns-gallery__grid > figure:nth-child(9) { grid-area: 6 / 2; }
	.ns-gallery__actions .wp-block-button__link { justify-content: center; }
}

/* ---------- Reviews: text + Google rating | two rows of cards drifting in opposite directions ---------- */

.ns-reviews {
	display: grid;
	grid-template-columns: minmax(0, 768fr) minmax(0, 875fr); /* Figma proportions */
	align-items: center;
	column-gap: var(--ns-col-gap);
	padding: var(--ns-y) var(--ns-gutter);
	background: var(--wp--preset--color--mist);
}
.ns-reviews .ns-text { max-width: 629px; }

.ns-copy .ns-rating {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	max-width: 608px;
	margin-top: 40px;
	padding-top: 40px;
	border-top: 1px solid rgb(31 26 23 / .2);
}
.ns-rating > * { margin: 0; }
.ns-rating__logo { width: 172px; margin-right: 12px !important; }
.ns-rating__logo img { display: block; width: 100%; height: auto; }
.ns-rating__score {
	font-family: var(--wp--preset--font-family--noto-serif-display);
	font-size: 56px;
	line-height: 1;
}
.ns-rating__count { font-size: 16px; line-height: 1.3; }
.ns-rating__count::before,
.ns-review__stars {
	display: block;
	width: 136px;
	height: 24px;
	background: #FFC107;
	-webkit-mask: var(--ns-star) 0 0 / 28px 24px repeat-x;
	mask: var(--ns-star) 0 0 / 28px 24px repeat-x;
}
.ns-rating__count::before { content: ""; margin-bottom: 3px; }
.ns-rating__count a { color: inherit; text-decoration: none; }
.ns-rating__count a:hover { text-decoration: underline; text-underline-offset: 3px; }
:root {
	--ns-star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 24'%3E%3Cpath d='M12 1.5l3.1 6.6 7.2.8-5.4 4.9 1.5 7.1L12 17.3l-6.4 3.6 1.5-7.1-5.4-4.9 7.2-.8z'/%3E%3C/svg%3E");
}

/* Cards. Spacing is margin, not gap, so a row + its clones loops at exactly -50%. */
.ns-reviews__rows { display: grid; gap: 20px; min-width: 0; }
.ns-reviews__row { display: flex; margin: 0 !important; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.ns-review {
	--ns-card-w: 421px;
	position: relative;
	flex: none;
	display: grid;
	grid-template-columns: 40px 1fr;
	align-content: start;
	column-gap: 16px;
	width: var(--ns-card-w);
	box-sizing: border-box;
	margin: 0 20px 0 0 !important;
	padding: 24px;
	background: #fff;
	border: 1px solid rgb(31 26 23 / .1);
	scroll-snap-align: start;
}
.ns-review > * { margin: 0; }
.ns-review::after { /* Google "G" */
	content: "";
	position: absolute;
	top: 32px;
	right: 24px;
	width: 24px;
	height: 24px;
	background: url("assets/img/google-g.svg") center / contain no-repeat;
}
.ns-review__avatar {
	position: relative;
	grid-row: 1 / 3;
	align-self: center;
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--wp--preset--color--cream);
	color: var(--wp--preset--color--gold);
	font-family: var(--wp--preset--font-family--noto-serif-display);
	font-size: 18px;
	line-height: 1;
}
.ns-review__name { padding-right: 32px; font-size: 16px; font-weight: 600; line-height: 20px; }
.ns-review__name a { color: inherit; text-decoration: none; }
.ns-review__name a:hover { text-decoration: underline; text-underline-offset: 3px; }
.ns-review__avatar img { /* real Google avatar over the initial (the initial shows if the photo is missing) */
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border-radius: 50%;
	object-fit: cover;
}
.ns-review .ns-review__meta { margin-top: 4px; padding-right: 32px; color: rgb(31 26 23 / .5); font-size: 12px; line-height: 15px; }
.ns-review .ns-review__stars { grid-column: 1 / -1; margin-top: 16px; overflow: hidden; color: transparent; font-size: 1px; } /* text stays for screen readers */
.ns-review .ns-review__text {
	grid-column: 1 / -1;
	display: -webkit-box;
	margin-top: 16px;
	overflow: hidden;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 6;
	color: #1a1a1a;
	font-size: 16px;
	line-height: 1.3;
}

/* Marquee (site.js adds .is-marquee after cloning the cards; reduced motion keeps the swipe rows) */
.ns-reviews__rows.is-marquee {
	overflow: hidden;
	margin-block: -24px;
	padding-block: 24px; /* room for the hover lift */
	-webkit-mask: linear-gradient(90deg, transparent, #000 120px, #000 calc(100% - 120px), transparent);
	mask: linear-gradient(90deg, transparent, #000 120px, #000 calc(100% - 120px), transparent);
}
.is-marquee .ns-reviews__row {
	width: max-content;
	overflow: visible;
	animation: ns-marquee 70s linear infinite;
	translate: 64px 0;
	opacity: 0;
	transition: translate 1.6s cubic-bezier(.16, 1, .3, 1), opacity 1.2s ease;
}
.is-marquee .ns-reviews__row + .ns-reviews__row { animation-direction: reverse; translate: -64px 0; transition-delay: .15s; }
.is-marquee.is-inview .ns-reviews__row { translate: none; opacity: 1; }
.is-marquee:hover .ns-reviews__row { animation-play-state: paused; }
@keyframes ns-marquee { to { transform: translateX(-50%); } }

@media (hover: hover) {
	.ns-review { transition: transform .6s cubic-bezier(.16, 1, .3, 1), box-shadow .6s ease, border-color .6s ease; }
	.ns-review:hover {
		transform: translateY(-6px);
		border-color: rgb(179 141 100 / .45);
		box-shadow: 0 22px 40px -24px rgb(31 26 23 / .28);
	}
}

@media (max-width: 1023.98px) {
	.ns-reviews { grid-template-columns: 1fr; row-gap: var(--ns-head-gap); }
	.ns-reviews__rows { margin-inline: calc(var(--ns-gutter) * -1); }
	.ns-reviews__row { scroll-padding-inline: var(--ns-gutter); padding-inline: var(--ns-gutter); }
	.is-marquee .ns-reviews__row { padding-inline: 0; }
	.ns-reviews__rows.is-marquee {
		-webkit-mask: linear-gradient(90deg, transparent, #000 32px, #000 calc(100% - 32px), transparent);
		mask: linear-gradient(90deg, transparent, #000 32px, #000 calc(100% - 32px), transparent);
	}
}
/* Phone: text, rating, cards, then the button */
@media (max-width: 767.98px) {
	.ns-reviews { display: flex; flex-direction: column; align-items: stretch; row-gap: 0; }
	.ns-reviews__content { display: contents; }
	.ns-reviews__rows { order: 1; gap: 12px; margin-top: 40px; }
	.ns-reviews__rows.is-marquee { margin-top: 16px; }
	.ns-copy .ns-reviews__actions { order: 2; margin-top: 40px; }
	.ns-copy .ns-rating { gap: 10px; margin-top: 32px; padding-top: 32px; }
	.ns-rating__logo { width: 104px; margin-right: 6px !important; }
	.ns-rating__score { font-size: 40px; }
	.ns-rating__count { font-size: 14px; }
	.ns-rating__count::before { width: 100px; height: 18px; -webkit-mask-size: 21px 18px; mask-size: 21px 18px; }
	.ns-review { --ns-card-w: 300px; margin-right: 12px !important; padding: 20px; }
	.ns-review::after { top: 27px; right: 20px; width: 20px; height: 20px; }
	.ns-review .ns-review__stars { width: 100px; height: 18px; margin-top: 14px; -webkit-mask-size: 21px 18px; mask-size: 21px 18px; }
	.ns-review .ns-review__text { margin-top: 12px; font-size: 15px; line-height: 1.4; -webkit-line-clamp: 8; }
	.is-marquee .ns-reviews__row { animation-duration: 55s; }
}

/* ---------- Icons (masks, any color) ---------- */
:root {
	--ns-i-metro: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M7.5 16.5v-9l4.5 6 4.5-6v9'/%3E%3C/svg%3E");
	--ns-i-parking: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='2.5' width='19' height='19' rx='5'/%3E%3Cpath d='M9.5 17V7h3.5a3 3 0 0 1 0 6H9.5'/%3E%3C/svg%3E");
	--ns-i-time: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6.5V12l3.5 2'/%3E%3C/svg%3E");
	--ns-i-phone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 16.4v2.9a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 1.1 3.6 2 2 0 0 1 3.1 1.4H6a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L7 9.2a16 16 0 0 0 6 6l1.2-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E");
	--ns-i-mail: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4.5' width='19' height='15' rx='2'/%3E%3Cpath d='m3 6 9 7 9-7'/%3E%3C/svg%3E");
}
.is-pin { --ns-icon: var(--ns-pin); }
.is-metro { --ns-icon: var(--ns-i-metro); }
.is-parking { --ns-icon: var(--ns-i-parking); }
.is-time { --ns-icon: var(--ns-i-time); }
.is-phone { --ns-icon: var(--ns-i-phone); }
.is-mail { --ns-icon: var(--ns-i-mail); }

/* ---------- Where: brand map of both salons | text ---------- */

.ns-where {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
	column-gap: var(--ns-col-gap);
	padding: var(--ns-y) var(--ns-gutter);
	background: #fff;
}
.ns-where > * { margin: 0 !important; }
.ns-where .ns-text { max-width: 629px; }

/* Map: SVG from scripts/salon_map.py (1000x1000), pins are links on top.
   --cx/--cy/--cw/--ch = the part of the map in view, so pins follow any crop. */
.ns-map {
	--cx: 0; --cy: 0; --cw: 1000; --ch: 1000;
	position: relative;
	aspect-ratio: 1;
	overflow: hidden;
	background: #EDE6DD;
}
.ns-map__img {
	position: absolute;
	top: calc(var(--cy) / var(--ch) * -100%);
	left: calc(var(--cx) / var(--cw) * -100%);
	width: calc(1000 / var(--cw) * 100%);
	max-width: none;
	height: auto;
}
.ns-map__pin {
	position: absolute;
	top: calc((var(--y) - var(--cy)) / var(--ch) * 100%);
	left: calc((var(--x) - var(--cx)) / var(--cw) * 100%);
	width: 18px;
	height: 18px;
	margin: -9px 0 0 -9px;
	border-radius: 50%;
	background: var(--wp--preset--color--gold);
	box-shadow: 0 0 0 4px #fff, 0 6px 18px rgb(31 26 23 / .35);
	text-decoration: none;
}
.ns-map__pin.is-coello { --x: 435.6; --y: 749.8; }
.ns-map__pin.is-velazquez { --x: 553; --y: 250.2; } /* 564 = building centroid; nudged onto Calle de Velázquez */
.ns-map__pin::before { /* soft pulse */
	content: "";
	position: absolute;
	inset: -4px;
	border: 2px solid var(--wp--preset--color--gold);
	border-radius: 50%;
	opacity: 0;
}
.ns-map__pin span {
	position: absolute;
	bottom: calc(100% + 16px);
	left: 50%;
	padding: 9px 16px;
	border-radius: 999px;
	background: #fff;
	box-shadow: 0 10px 28px rgb(31 26 23 / .16);
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--noto-serif-display);
	font-size: 16px;
	line-height: 1.2;
	white-space: nowrap;
	translate: -50% 0;
	transition: translate .5s cubic-bezier(.16, 1, .3, 1), background-color .4s, color .4s;
}
.ns-map__pin span::after {
	content: "";
	position: absolute;
	top: 100%;
	left: 50%;
	margin-left: -6px;
	border: 6px solid transparent;
	border-top-color: #fff;
	transition: border-color .4s;
}
/* hover a pin or its salon text: the label turns dark and lifts */
.ns-map__pin:hover span,
.ns-map__pin:focus-visible span,
.ns-where:has(.ns-salon.is-coello:hover) .ns-map__pin.is-coello span,
.ns-where:has(.ns-salon.is-velazquez:hover) .ns-map__pin.is-velazquez span {
	translate: -50% -4px;
	background: var(--wp--preset--color--ink);
	color: #fff;
}
.ns-map__pin:hover span::after,
.ns-map__pin:focus-visible span::after,
.ns-where:has(.ns-salon.is-coello:hover) .ns-map__pin.is-coello span::after,
.ns-where:has(.ns-salon.is-velazquez:hover) .ns-map__pin.is-velazquez span::after { border-top-color: var(--wp--preset--color--ink); }
@media (prefers-reduced-motion: no-preference) {
	.ns-map__pin::before { animation: ns-pulse 2.8s cubic-bezier(.2, .6, .4, 1) infinite; }
	.ns-map__pin.is-coello::before { animation-delay: 1.4s; }
}
@keyframes ns-pulse {
	0% { transform: scale(1); opacity: .8; }
	100% { transform: scale(3.4); opacity: 0; }
}

.ns-copy .ns-salons {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 32px;
	margin-top: 40px;
}
.ns-salon {
	margin: 0 !important;
	padding-top: 28px;
	border-top: 1px solid rgb(31 26 23 / .2);
	transition: border-color .4s;
}
.ns-salon:hover { border-color: var(--wp--preset--color--gold); }
.ns-salon > * { margin: 0; }
.ns-salon .ns-salon__name { font-size: 26px; line-height: 1.2; }
.ns-salon .ns-salon__note { margin: 8px 0 18px; color: rgb(31 26 23 / .64); font-size: 16px; line-height: 1.4; }
.ns-info { display: flex; gap: 12px; font-size: 16px; line-height: 1.4; }
.ns-salon .ns-info + .ns-info { margin-top: 12px; }
.ns-info::before {
	content: "";
	flex: none;
	width: 22px;
	height: 22px;
	background: var(--wp--preset--color--gold);
	-webkit-mask: var(--ns-icon) center / contain no-repeat;
	mask: var(--ns-icon) center / contain no-repeat;
}
.ns-salon .ns-salon__route { margin-top: 22px; font-size: 14px; font-weight: 500; letter-spacing: 1px; text-transform: uppercase; }
.ns-salon__route a {
	padding-bottom: 4px;
	border-bottom: 1px solid var(--wp--preset--color--gold);
	color: var(--wp--preset--color--ink);
	text-decoration: none;
	transition: color .3s;
}
.ns-salon__route a::after { content: " →"; }
.ns-salon__route a:hover { color: var(--wp--preset--color--gold); }

@media (max-width: 1279.98px) {
	.ns-copy .ns-salons { grid-template-columns: 1fr; gap: 28px; }
}
@media (max-width: 1023.98px) {
	.ns-where { grid-template-columns: 1fr; padding: 0 0 var(--ns-y); }
	.ns-map { --cy: 125; --ch: 750; aspect-ratio: 4 / 3; }
	.ns-where__content { padding: var(--ns-y) var(--ns-gutter) 0; }
	.ns-copy .ns-salons { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 767.98px) {
	.ns-map { --cx: 228; --cy: 140; --cw: 544; --ch: 680; aspect-ratio: 4 / 5; }
	.ns-map__pin span { padding: 7px 13px; font-size: 14px; }
	.ns-copy .ns-salons { grid-template-columns: 1fr; gap: 24px; margin-top: 32px; }
	.ns-salon { padding-top: 22px; }
	.ns-salon .ns-salon__name { font-size: 22px; }
	.ns-info { font-size: 15px; }
}

/* ---------- Gift card: dark, floating card | text ---------- */

.ns-gift {
	display: grid;
	grid-template-columns: 1fr 1fr;
	justify-content: center;
	align-items: center;
	column-gap: var(--ns-col-gap);
	padding: var(--ns-y) var(--ns-gutter);
	background: var(--wp--preset--color--ink);
	color: #fff;
}
.ns-gift > * { margin: 0 !important; }
.ns-gift .ns-title {
	font-size: clamp(32px, 3vw, 56px); /* the docx title is long: 72px would take 5 lines */
	padding-bottom: 32px;
	border-bottom: 1px solid rgb(255 255 255 / .5);
	color: #fff;
}
.ns-gift .ns-text { max-width: 607px; color: rgb(255 255 255 / .74); }
.ns-copy .ns-gift__features {
	display: grid;
	gap: 14px;
	margin-top: 32px;
	padding: 0;
	list-style: none;
}
.ns-gift__features li {
	display: flex;
	align-items: center;
	gap: 14px;
	font-family: var(--wp--preset--font-family--noto-serif-display);
	font-size: 20px;
	line-height: 1.3;
}
.ns-gift__features li::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	background: var(--wp--preset--color--gold);
	-webkit-mask: var(--ns-star) 0 50% / auto 16px no-repeat;
	mask: var(--ns-star) 0 50% / auto 16px no-repeat;
}
.ns-gift__card { position: relative; }
.ns-gift__card img {
	display: block;
	width: 100%;
	height: auto;
	filter: drop-shadow(0 40px 50px rgb(0 0 0 / .45));
}
.ns-gift__card::after { /* light sweep on hover */
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 16px;
	background: linear-gradient(115deg, rgb(255 255 255 / 0) 40%, rgb(255 255 255 / .45) 50%, rgb(255 255 255 / 0) 60%) 150% 0 / 250% 100% no-repeat;
	pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
	.ns-gift__card {
		animation: ns-float 7s ease-in-out infinite;
		transition: rotate 1s cubic-bezier(.16, 1, .3, 1), scale 1s cubic-bezier(.16, 1, .3, 1);
	}
	.ns-gift__card::after { transition: background-position 1.4s cubic-bezier(.16, 1, .3, 1); }
	.ns-gift__card:hover { rotate: -2deg; scale: 1.02; }
	.ns-gift__card:hover::after { background-position: -50% 0; }
}
@keyframes ns-float { 50% { translate: 0 -14px; } }

@media (max-width: 1023.98px) {
	.ns-gift { grid-template-columns: minmax(0, 560px); row-gap: var(--ns-head-gap); }
}
@media (max-width: 767.98px) {
	.ns-gift .ns-title { padding-bottom: 24px; }
	.ns-copy .ns-gift__features { margin-top: 24px; gap: 10px; }
	.ns-gift__features li { font-size: 18px; }
}

/* ---------- FAQ: sticky head | accordion (native <details>, one open at a time) ---------- */

.ns-faq {
	display: grid;
	grid-template-columns: minmax(0, 720fr) minmax(0, 968fr);
	align-items: start;
	column-gap: var(--ns-col-gap);
	padding: var(--ns-y) var(--ns-gutter);
	background: var(--wp--preset--color--mist);
}
.ns-faq > * { margin: 0 !important; }
.ns-faq__head { position: sticky; top: calc(var(--ns-header-h) + 40px); }
.ns-faq__list { border-top: 1px solid rgb(31 26 23 / .16); }
.ns-faq__item { box-sizing: border-box; margin: 0 !important; border-bottom: 1px solid rgb(31 26 23 / .16); }
.ns-faq__item summary {
	position: relative;
	display: block;
	padding: 22px 64px 22px 0;
	list-style: none;
	font-family: var(--wp--preset--font-family--noto-serif-display);
	font-size: clamp(20px, 1.5vw, 28px);
	line-height: 1.2;
	transition: color .3s;
	cursor: pointer;
	scroll-margin-top: calc(var(--ns-header-h) + 16px);
	-webkit-tap-highlight-color: transparent;
}
.ns-faq__item summary::-webkit-details-marker { display: none; }
@media (hover: hover) { /* on touch :hover sticks to the last tapped question */
	.ns-faq__item summary:hover { color: var(--wp--preset--color--gold); }
}
.ns-faq__item summary::after { /* + in a circle, gold − when open */
	content: "";
	position: absolute;
	top: 50%;
	right: 0;
	width: 36px;
	height: 36px;
	margin-top: -18px;
	box-sizing: border-box;
	border: 1px solid rgb(31 26 23 / .2);
	border-radius: 50%;
	background:
		linear-gradient(var(--wp--preset--color--gold), var(--wp--preset--color--gold)) center / 12px 1.5px no-repeat,
		linear-gradient(var(--wp--preset--color--gold), var(--wp--preset--color--gold)) center / 1.5px 12px no-repeat;
	transition: rotate .5s cubic-bezier(.16, 1, .3, 1), background-color .4s, border-color .4s;
}
.ns-faq__item[open]:not(.is-closing) summary::after {
	border-color: var(--wp--preset--color--gold);
	background: linear-gradient(#fff, #fff) center / 12px 1.5px no-repeat, var(--wp--preset--color--gold);
	rotate: 180deg;
}
.ns-faq__item > p {
	max-width: 680px;
	margin: 0;
	padding: 0 64px 24px 0;
	color: rgb(31 26 23 / .64);
	font-size: 16px;
	line-height: 1.55;
}
/* open/close motion: assets/js/site.js (height + fade, previous answer closes in the same move) */
.ns-faq__list { overflow-anchor: none; } /* scroll anchoring fights the height animation */

@media (max-width: 1023.98px) {
	.ns-faq { grid-template-columns: 1fr; row-gap: var(--ns-head-gap); }
	.ns-faq__head { position: static; }
}
@media (max-width: 767.98px) {
	.ns-faq__item summary { padding: 20px 48px 20px 0; font-size: 20px; }
	.ns-faq__item summary::after { width: 30px; height: 30px; margin-top: -15px; }
	.ns-faq__item > p { padding: 0 0 22px; font-size: 15px; line-height: 1.5; }
}

/* ---------- Booking banner: photo on the right under a white fade ---------- */

.ns-cta {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding: var(--ns-y) var(--ns-gutter);
	background: #fff;
}
.ns-cta__photo { position: absolute !important; inset: 0 0 0 29%; z-index: -1; margin: 0 !important; }
.ns-cta__photo img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 30% 50%; }
.ns-cta__photo::before {
	content: "";
	position: absolute;
	inset: 0 0 0 -1px; /* 1px past the edge: no seam on fractional sizes */
	z-index: 1;
	background: linear-gradient(90deg, #fff 0%, #fff 2%, rgb(255 255 255 / .82) 22%, rgb(255 255 255 / 0) 62%); /* solid start hides the photo edge */
}
.ns-cta__content { max-width: 924px; }
.ns-cta .ns-text { max-width: 690px; }
.ns-copy .ns-contacts { max-width: 800px; margin-top: var(--ns-head-gap); }
.ns-contacts > * { margin: 0 !important; }
.ns-contact {
	position: relative;
	display: flex;
	align-items: center;
	gap: 20px;
	padding: 16px 0;
	font-family: var(--wp--preset--font-family--noto-serif-display);
	font-size: clamp(20px, 1.4vw, 26px);
	line-height: 1.3;
}
.ns-contact + .ns-contact { border-top: 1px solid rgb(31 26 23 / .2); }
.ns-contact.is-pin { font-size: clamp(17px, 1.15vw, 22px); }
.ns-contact::before { content: ""; flex: none; width: 48px; height: 48px; border-radius: 50%; background: var(--wp--preset--color--ink); }
.ns-contact::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 13px;
	width: 22px;
	height: 22px;
	margin-top: -11px;
	background: #fff;
	-webkit-mask: var(--ns-icon) center / contain no-repeat;
	mask: var(--ns-icon) center / contain no-repeat;
}
.ns-contact a { color: inherit; text-decoration: none; transition: color .3s; }
.ns-contact a:hover { color: var(--wp--preset--color--gold); }

/* Tablet + phone: photo on top fading into white, text below */
@media (max-width: 1023.98px) {
	.ns-cta { padding: 0 var(--ns-gutter) var(--ns-y); }
	.ns-cta__photo { position: relative !important; inset: auto; z-index: 0; margin: 0 calc(var(--ns-gutter) * -1) !important; aspect-ratio: 4 / 3; overflow: hidden; }
	.ns-cta__photo::before { inset: 0 0 -1px; background: linear-gradient(180deg, rgb(255 255 255 / 0) 60%, #fff 96%); }
	.ns-cta__content { position: relative; margin-top: -24px !important; }
}
@media (max-width: 767.98px) {
	.ns-cta__photo { aspect-ratio: 1; }
	.ns-cta__photo img { object-position: 62% 50%; }
	.ns-contact { gap: 14px; padding: 16px 0; font-size: 19px; }
	.ns-contact.is-pin { font-size: 16px; }
	.ns-contact::before { width: 40px; height: 40px; }
	.ns-contact::after { left: 10px; width: 20px; height: 20px; margin-top: -10px; }
}

/* ---------- Footer ---------- */

.ns-site-footer { background: var(--wp--preset--color--ink); color: #fff; }
.ns-footer {
	display: grid;
	grid-template-columns: minmax(0, 1fr) repeat(3, auto);
	column-gap: clamp(40px, 6vw, 160px);
	padding: var(--ns-y) var(--ns-gutter);
}
.ns-footer__logo { display: inline-block; color: #fff; }
.ns-footer__logo svg { display: block; width: 139px; height: auto; }
.ns-footer__brand p { max-width: 316px; margin: 32px 0 0; color: rgb(255 255 255 / .64); font-size: 13px; line-height: 1.5; }
.ns-footer__title { margin: 0 0 24px; color: var(--wp--preset--color--gold); font-size: 16px; line-height: 1.2; letter-spacing: 1px; text-transform: uppercase; }
.ns-footer ul { display: grid; gap: 16px; margin: 0; padding: 0; list-style: none; color: rgb(255 255 255 / .8); font-size: 14px; line-height: 1.45; }
.ns-footer__col:last-child ul { max-width: 270px; }
.ns-footer a,
.ns-footer__bottom a { color: inherit; text-decoration: none; transition: color .3s; }
.ns-footer a:hover,
.ns-footer__bottom a:hover { color: var(--wp--preset--color--gold); }
.ns-footer__social { display: flex; align-items: center; gap: 20px; margin-top: 20px; }
.ns-footer__social a { display: flex; color: #fff; }
.ns-footer__bottom {
	display: flex;
	justify-content: space-between;
	gap: 8px 24px;
	padding: 14px var(--ns-gutter) 30px;
	border-top: 1px solid rgb(255 255 255 / .2);
	color: rgb(255 255 255 / .52);
	font-size: 14px;
}
.ns-footer__bottom p { margin: 0; }
.ns-footer__bottom p + p { color: rgb(255 255 255 / .7); }
.ns-footer__bottom span { margin: 0 6px; }

@media (max-width: 1023.98px) {
	.ns-footer { grid-template-columns: 1fr 1fr; gap: 48px 32px; }
	.ns-footer__brand,
	.ns-footer__col:last-child { grid-column: 1 / -1; }
}
@media (max-width: 767.98px) {
	.ns-footer { gap: 40px 20px; }
	.ns-footer__logo svg { width: 104px; }
	.ns-footer__brand p { margin-top: 24px; }
	.ns-footer__title { margin-bottom: 18px; font-size: 14px; }
	.ns-footer ul { gap: 12px; }
	.ns-footer__bottom { flex-direction: column; padding-bottom: 28px; font-size: 13px; }
}
