/* ===== Self-hosted fonts (no requests to Google). The logo font Montserrat is loaded separately in functions.php. ===== */
@font-face { font-family: Inter; font-weight: 300; font-style: normal; font-display: swap; src: url("../fonts/inter-300.woff") format("woff"); }
@font-face { font-family: Inter; font-weight: 400; font-style: normal; font-display: swap; src: url("../fonts/inter-400.woff") format("woff"); }
@font-face { font-family: Lora; font-weight: 400; font-style: normal; font-display: swap; src: url("../fonts/lora-400.woff") format("woff"); }
@font-face { font-family: Lora; font-weight: 400; font-style: italic; font-display: swap; src: url("../fonts/lora-400-italic.woff") format("woff"); }

/* ===== Parker Neil: easy-edit variables ===== */
:root {
	--pn-hero-img: url("../images/hero.jpg");            /* hero photo */
	--pn-fixed-img: url("../images/background.jpg");   /* fixed background behind About + Services */
	--pn-art: url("../images/art-paint.webp");             /* bottom artwork */
	--pn-overlay: .4;                                     /* 0 = image fully visible, 1 = hidden */
	--pn-gutter: clamp(1.25rem, 5vw, 4rem);
	--pn-track: .05em;                                    /* body text spacing */
	--pn-wide: .16em;                                     /* headings and labels */
	--pn-ink: var(--wp--preset--color--contrast, #111);
	--pn-base: var(--wp--preset--color--base, #fdfffa);
	--pn-accent: var(--wp--preset--color--accent, #7b5b5b);
}
@media (max-width: 700px) { :root { --pn-hero-img: url("../images/hero-mobile.jpg"); } } /* lighter hero photo for phones */
html { scroll-behavior: smooth; }
body { letter-spacing: var(--pn-track); -webkit-font-smoothing: antialiased; }
.pn-section[id] { scroll-margin-top: 90px; }
:focus-visible { outline: 2px solid var(--pn-accent); outline-offset: 3px; }

/* Header */
header.wp-block-template-part { position: sticky; top: 0; z-index: 100; background: var(--pn-base); }
.admin-bar header.wp-block-template-part { top: 32px; }
@media (max-width: 782px) { .admin-bar header.wp-block-template-part { top: 46px; } }
@media (max-width: 600px) { .admin-bar header.wp-block-template-part { top: 0; } }
.pn-header-inner { padding: 1.4rem var(--pn-gutter) 1.2rem; align-items: flex-end; }
.pn-logo { --pn-logo-track: .2em; margin: 0; display: inline-block; border-top: 3px solid var(--pn-ink); padding-top: .15rem; /* gap between the line and the letters: lower = closer */
	font-family: var(--wp--preset--font-family--montserrat); font-weight: 300; text-transform: uppercase;
	letter-spacing: var(--pn-logo-track); font-size: clamp(1rem, 2vw, 1.4rem); line-height: 1.05; }
.pn-logo a { display: inline-block; margin-right: calc(-1 * var(--pn-logo-track)); } /* trims trailing letter-space so the line ends at the last letter */
.pn-nav { letter-spacing: 0; font-size: 1.05rem; }
.pn-nav .wp-block-navigation-item__content { padding: .25rem 0; background: linear-gradient(var(--pn-accent), var(--pn-accent)) 0 100% / 0 1px no-repeat; transition: background-size .6s ease; }
.pn-nav .wp-block-navigation-item__content:hover, .pn-nav .wp-block-navigation-item__content:focus-visible { background-size: 100% 1px; }

/* Hero: the one place with motion (slow drift + text rise, once) */
.pn-hero-wrap { position: relative; margin: 0; padding: .6rem 0; }
.pn-hero-wrap::before, .pn-hero-wrap::after { content: ""; position: absolute; left: calc(var(--pn-gutter) * .45); right: calc(var(--pn-gutter) * .45); height: 1px; background: var(--pn-ink); } /* inset of the hero lines: lower number = longer line */
.pn-hero-wrap::before { top: 0; }
.pn-hero-wrap::after { bottom: 0; }
.pn-hero { position: relative; overflow: hidden; isolation: isolate; display: flex; flex-direction: column; justify-content: flex-end; color: #fff;
	min-height: clamp(26rem, 74vh, 48rem); padding: var(--pn-gutter); }
.pn-hero::after { content: ""; position: absolute; inset: 0; z-index: -2; background: var(--pn-hero-img) 42% 40% / cover no-repeat; animation: pn-drift 32s ease-out both; }
.pn-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top right, rgba(0,0,0,.55), rgba(0,0,0,0) 60%); }
.pn-hero > * { position: relative; margin: 0; animation: pn-rise 1.8s ease both; }
.pn-hero > :nth-child(2) { animation-delay: .5s; }
.pn-hero h1 { font-size: clamp(1.45rem, 2.8vw, 2.15rem); letter-spacing: var(--pn-wide); margin-bottom: .9rem; }
.pn-hero p { max-width: 30rem; letter-spacing: var(--pn-wide); line-height: 1.55; font-size: clamp(.9rem, .6rem + .7vw, 1.1rem); }
@keyframes pn-drift { from { transform: scale(1); } to { transform: scale(1.07); } }
@keyframes pn-rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .pn-hero::after, .pn-hero > * { animation: none; } }

/* Sections */
.pn-section { padding: clamp(3rem, 6.5vw, 5rem) var(--pn-gutter); }
.pn-section > * { max-width: 1080px; margin-left: calc((100% - min(100%, 1080px)) / 2); margin-right: 0; }
.pn-section > .pn-text { max-width: 44rem; line-height: 1.8; }
.pn-label { margin: 0; font-size: clamp(1.35rem, 1rem + 1.3vw, 2.1rem); font-weight: 300; letter-spacing: .04em; line-height: 1.1; }
.pn-statement { font-size: clamp(1.05rem, .7rem + 1.2vw, 1.4rem); letter-spacing: .2em; line-height: 1.7; }

/* Fixed shadow-line background behind About + Services (also works on iOS) */
.pn-fixed-bg { position: relative; isolation: isolate; clip-path: inset(0); }
.pn-fixed-bg::before { content: ""; position: fixed; inset: 0; z-index: -2; background: var(--pn-fixed-img) 75% center / cover no-repeat; }
.pn-fixed-bg::after { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--pn-base); opacity: var(--pn-overlay); }

/* Services dropdowns */
.pn-services .wp-block-details { max-width: 44rem; border-top: 1px solid rgba(17,17,17,.2); margin-block: 0; }
.pn-services .wp-block-details:first-of-type { margin-top: 2rem; }
.pn-services .wp-block-details:last-of-type { border-bottom: 1px solid rgba(17,17,17,.2); }
.pn-services .wp-block-details[open] { border-top-color: var(--pn-accent); }
.wp-block-details summary { display: block; position: relative; padding-right: 2.5rem; cursor: pointer; list-style: none;
	font-size: clamp(1.05rem, .85rem + .8vw, 1.35rem); font-weight: 300; letter-spacing: .14em; padding: 1rem 0; }
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after { content: "+"; position: absolute; right: 0; top: 50%; margin-top: -.5em; font-weight: 200; font-size: 1.5em; line-height: 1; transition: transform .3s; } /* absolute so italic words inside a title do not split the line */
.wp-block-details[open] summary::after { transform: rotate(45deg); }
.wp-block-details[open] > :not(summary) { animation: pn-open .35s ease; max-width: 38rem; padding-bottom: 1.4rem; margin: 0; line-height: 1.8; }
@keyframes pn-open { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }

/* Profile: the one dark section; portrait fades into it */
.pn-profile { background: #111111; color: var(--pn-base); }
.pn-profile > * { max-width: 1200px; }
.pn-profile .wp-block-columns { gap: clamp(2rem, 6vw, 5rem); align-items: flex-start !important; } /* portrait stays put when the bio expands */
.pn-portrait { margin: 0; }
.pn-profile .wp-block-column:first-child { align-self: flex-start; }
.pn-portrait img { display: block; width: 100%; height: auto; filter: grayscale(1) contrast(1.03);
	-webkit-mask-image: linear-gradient(to right, transparent, #000 24%, #000 76%, transparent), linear-gradient(to bottom, transparent, #000 12%, #000 66%, transparent);
	-webkit-mask-composite: source-in; mask-image: linear-gradient(to right, transparent, #000 24%, #000 76%, transparent), linear-gradient(to bottom, transparent, #000 12%, #000 66%, transparent); mask-composite: intersect; } /* edge fade: raise the percentages for a softer edge */
.pn-quote { font-family: var(--wp--preset--font-family--lora, Lora, Georgia, serif); font-size: clamp(1.4rem, 1rem + 1.8vw, 2.1rem); letter-spacing: .04em; line-height: 1.4; }
.pn-profile p { line-height: 1.8; }

/* Contact form */
.pn-form { display: grid; gap: 1.4rem; max-width: 40rem; margin-top: 2rem; }
.pn-form p { margin: 0; }
.pn-form label { display: block; font-size: .8rem; text-transform: uppercase; letter-spacing: .2em; }
.pn-form input, .pn-form textarea { width: 100%; background: transparent; border: 0; border-bottom: 1px solid var(--pn-ink); border-radius: 0; padding: .7rem 0; font: inherit; letter-spacing: .04em; color: inherit; }
.pn-form input:focus, .pn-form textarea:focus { outline: 0; border-bottom: 2px solid var(--pn-accent); }
.pn-form button { background: transparent; color: var(--pn-ink); border: 1px solid var(--pn-ink); padding: .9rem 2.2rem; font: inherit; letter-spacing: .2em; text-transform: uppercase; font-size: .85rem; cursor: pointer; transition: background .25s, color .25s; }
.pn-form button:hover { background: var(--pn-ink); color: var(--pn-base); }
.pn-fineprint { font-size: .8rem; color: var(--wp--preset--color--muted, #5c5c58); letter-spacing: .03em; line-height: 1.6; }
.pn-hp { position: absolute !important; left: -9999px; }
.pn-form-note { border-left: 2px solid var(--pn-accent); padding-left: 1rem; }

/* Footer */
.pn-footer-inner { padding: 2rem var(--pn-gutter); border-top: 1px solid rgba(17,17,17,.2); letter-spacing: .06em; }
.pn-footer-inner p { margin: 0; }
.pn-plain { padding: 4rem var(--pn-gutter); }

@media (max-width: 600px) {
	:root { --pn-track: .04em; --pn-wide: .1em; }
	.pn-statement { letter-spacing: .12em; }
	.pn-hero { min-height: 30rem; }
	.pn-hero::after { background-position: 44% 40%; }
	.pn-logo { --pn-logo-track: .14em; }
}

/* Contact dropdown */
.pn-enquire { max-width: 40rem; border-top: 1px solid rgba(17,17,17,.2); border-bottom: 1px solid rgba(17,17,17,.2); margin-top: 2rem; }
.pn-enquire[open] { border-top-color: var(--pn-accent); }
.pn-enquire .pn-form { padding-top: .5rem; margin-top: 0; }
.pn-form select { width: 100%; background: transparent; border: 0; border-bottom: 1px solid var(--pn-ink); border-radius: 0; padding: .7rem 0; font: inherit; letter-spacing: .04em; color: inherit; }
.pn-form .pn-check label { display: flex; gap: .7rem; align-items: flex-start; text-transform: none; letter-spacing: .03em; font-size: .9rem; }
.pn-form .pn-check input { width: auto; margin-top: .35rem; }

/* Section header: hairline on top that draws in, name left, number right */
.pn-head { position: relative; display: flex; flex-wrap: nowrap; justify-content: space-between; align-items: flex-start; gap: 1rem; padding-top: clamp(1.1rem, 2.2vw, 1.6rem); margin-bottom: clamp(1.8rem, 4vw, 3rem); }
.pn-head::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: currentColor; opacity: .4; transform-origin: left; transition: transform 1.8s cubic-bezier(.2,.7,.2,1); }
.pn-head.pn-pending::before { transform: scaleX(0); }
.pn-head > * { margin: 0; }
.pn-num { font-size: .8rem; letter-spacing: .12em; color: var(--wp--preset--color--muted, #5c5c58); padding-top: .55rem; }
.pn-profile .pn-num { color: rgba(253,255,250,.6); }

/* Closing section: faded artwork behind links, practice area and legal */
.pn-closing { --pn-art-opacity: .62; --pn-lift: clamp(5rem, 9vw, 8rem); /* how far the artwork rises behind the contact section */ position: relative; isolation: isolate; margin: 0; display: flex; align-items: flex-end;
	margin-top: calc(-1 * var(--pn-lift)); min-height: calc(clamp(15rem, 28vw, 24rem) + var(--pn-lift)); padding: calc(clamp(4rem, 8vw, 6.5rem) + var(--pn-lift)) var(--pn-gutter) clamp(2rem, 4vw, 3rem); }
#contact { position: relative; z-index: 1; padding-bottom: clamp(1.5rem, 4vw, 3rem); }
.pn-closing::before { content: ""; position: absolute; inset: 0; z-index: -2; background: var(--pn-art) center bottom / cover no-repeat; opacity: var(--pn-art-opacity);
	-webkit-mask-image: linear-gradient(to bottom, transparent, #000 30%); mask-image: linear-gradient(to bottom, transparent, #000 30%); } /* fades in from the contact section; lower the opacity number to fade more */
.pn-closing::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to bottom, rgba(17,17,17,0) 0%, rgba(17,17,17,0) 16%, rgba(17,17,17,.82) 46%, #111 72%); } /* dark base so the text stays legible; move the percentages to change how far the black rises */
.pn-closing { color: #fdfffa; }
.pn-closing .pn-colhead { color: rgba(253,255,250,.78); }
.pn-closing .pn-linklist a { background-image: linear-gradient(#fdfffa, #fdfffa); }
footer.wp-block-template-part { background: #111; color: #fdfffa; }
footer.wp-block-template-part .pn-footer-inner { border-top-color: rgba(253,255,250,.15); }
.pn-closing-inner { width: 100%; max-width: 1080px; margin: 0 auto; display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 2.5rem clamp(2.5rem, 7vw, 6rem); }
.pn-col { min-width: 9rem; }
.pn-col > * { margin: 0; }
.pn-colhead { font-size: .75rem; text-transform: uppercase; letter-spacing: .2em; color: var(--wp--preset--color--muted, #5c5c58); margin-bottom: 1rem !important; }
.pn-linklist { list-style: none; margin: 0; padding: 0; font-size: .95rem; line-height: 2; }
.pn-linklist a { background: linear-gradient(var(--pn-accent), var(--pn-accent)) 0 100% / 0 1px no-repeat; transition: background-size .5s ease; padding-bottom: 2px; }
.pn-linklist a:hover, .pn-linklist a:focus-visible { background-size: 100% 1px; }
@media (max-width: 600px) { .pn-closing { --pn-art-opacity: .45; --pn-lift: 1.5rem; } .pn-closing::before { background-position: 70% bottom; } }
.pn-closing-logo { flex: 0 0 100%; display: flex; justify-content: center; margin-top: clamp(2rem, 5vw, 4rem); }
.pn-closing-logo > * { margin: 0; }
.pn-logo--light { color: #fdfffa; border-top-color: #fdfffa; } /* light logo over the dark ink */
.pn-closing-logo .pn-logo { font-size: clamp(.85rem, 1.5vw, 1.1rem); border-top-width: 2px; padding-top: .15rem; } /* smaller closing logo */
.pn-logo-sub { display: block; width: 0; min-width: 100%; margin-top: .45em; font-size: .46em; letter-spacing: 0; white-space: nowrap; text-align: center; text-align-last: justify; }
.pn-logo-sub > span { display: inline-block; white-space: nowrap; } /* js/site.js spaces the letters to match the width of the name */
.pn-contactinfo { margin-top: 1.25rem !important; }
.pn-footer-links a { opacity: .85; transition: opacity .2s; } .pn-footer-links a:hover { opacity: 1; text-decoration: underline; text-underline-offset: 3px; }

/* Profile bio: first paragraph visible, the rest behind a "Read more" button that sits at the end of the text */
.pn-bio-extra > * + * { margin-top: 1.75rem; }
.pn-bio-extra.is-js:not(.is-open) { display: none; }
.pn-bio-extra.is-open { margin-top: 1.75rem; animation: pn-open .5s ease; }
.pn-bio-toggle { display: inline-flex; align-items: center; gap: .9rem; margin-top: 1.5rem; padding: .5rem 0; background: none; border: 0; color: inherit; cursor: pointer;
	font: 400 .85rem/1 var(--wp--preset--font-family--inter, Inter, sans-serif); letter-spacing: .2em; text-transform: uppercase; }
.pn-bio-toggle::after { content: "+"; font-size: 1.5em; font-weight: 200; line-height: 1; transition: transform .3s; }
.pn-bio-toggle[aria-expanded="true"]::after { transform: rotate(45deg); }
.pn-bio-toggle:focus-visible { outline: 2px solid var(--pn-accent); outline-offset: 4px; }

.pn-profile .pn-role { margin-block-start: .4rem; margin-top: .4rem; font-family: var(--wp--preset--font-family--lora, Lora, Georgia, serif); font-style: italic; font-size: clamp(1.05rem, .9rem + .6vw, 1.3rem); letter-spacing: .08em; color: rgba(253,255,250,.7); }

.pn-hero h1 .pn-ul { text-decoration-thickness: 1px; text-underline-offset: .2em; }

.pn-hero h1 .pn-ul { text-decoration-thickness: 1px !important; text-underline-offset: .2em; } /* thin underline under "Focus" */
.pn-robot { margin-top: .25rem; }

/* Discreet call button: phones only, appears after the hero, hides over the closing section */
.pn-call { display: none; }
@media (max-width: 700px) {
	.pn-call { display: flex; align-items: center; justify-content: center; position: fixed; z-index: 90; right: 1rem; bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
		width: 2.9rem; height: 2.9rem; border-radius: 50%; background: rgba(17,17,17,.88); color: #fdfffa; border: 1px solid rgba(253,255,250,.35);
		opacity: 0; transform: translateY(8px); pointer-events: none; transition: opacity .4s ease, transform .4s ease; }
	.pn-call.is-visible { opacity: 1; transform: none; pointer-events: auto; }
	.pn-call svg { width: 1.15rem; height: 1.15rem; }
}
@media (prefers-reduced-motion: reduce) { .pn-call { transition: none; } }

/* Terms and Privacy pages */
.pn-legal { padding: clamp(3rem, 8vw, 6rem) var(--pn-gutter) clamp(4rem, 9vw, 7rem); max-width: 46rem; margin-left: auto; margin-right: auto; }
.pn-legal h1 { font-size: clamp(2rem, 1.2rem + 3vw, 3.2rem); font-weight: 400; letter-spacing: .03em; margin-bottom: .5rem; }
.pn-legal h2 { font-size: clamp(1.2rem, 1rem + .8vw, 1.5rem); letter-spacing: .04em; margin-top: 2.5rem; margin-bottom: .75rem; }
.pn-legal p, .pn-legal li { line-height: 1.85; }
.pn-legal ul { padding-left: 1.2rem; }
.pn-legal li + li { margin-top: .5rem; }
.pn-legal strong { font-weight: 500; }
.pn-legal-updated { color: var(--wp--preset--color--muted, #5c5c58); font-size: .9rem; margin-bottom: 2rem; }
.pn-legal a { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.pn-section > .pn-contactinfo { margin-left: calc((100% - min(100%, 1080px)) / 2); margin-right: 0; } /* keep the direct-line links aligned with the Contact heading */
@media (max-width: 600px) { .pn-closing::after { background: linear-gradient(to bottom, rgba(17,17,17,0) 0%, rgba(17,17,17,.88) 20%, #111 42%); } } /* black rises sooner on phones so the light text stays legible */

.pn-locations { list-style: none; margin: 0 0 1.4rem !important; padding: 0; font-size: 1rem; line-height: 1.9; letter-spacing: .04em; }
.pn-locations li { margin: 0; }
.pn-col .pn-locnote { font-size: .8rem; line-height: 1.7; color: rgba(253,255,250,.62); max-width: 34rem; margin-bottom: 1.6rem !important; }

/* Mobile menu overlay: keep the links inside the screen edges, left-aligned under the close button */
.wp-block-navigation__responsive-container.is-menu-open { padding: 1.25rem var(--pn-gutter) 2rem !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 2.5rem; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { align-items: flex-start !important; gap: 1.4rem; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item { font-size: 1.35rem; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close { right: var(--pn-gutter); top: 1.25rem; }
