/*
 * Kunda by Pencilino: base styles (tokens, typography, buttons, header, nav, footer, cookie notice).
 *
 * All component classes use the kd- prefix. Do not style bare form controls, labels, buttons,
 * images or WordPress core UI classes (media-*, attachment*, button, wp-*): the Pencilino media
 * modal loads on the same page and shares this stylesheet.
 */

:root {
	--kd-bg: #0e0e10;
	--kd-surface: #130a23;
	--kd-purple: #433e66;
	--kd-text: #f4f4f2;
	--kd-muted: #a3a3a8;
	--kd-line: #2a2a2f;
	--kd-accent: #ff5f4a;
	--kd-yellow: #ECEAD2;
	--kd-blue: #88cecf;
	--kd-max: 1180px;
	--kd-display: 'neue-haas-unica', 'Neue-hans-unica', 'Helvetica Neue', Helvetica, Arial, system-ui, sans-serif;
	--kd-body: 'neue-haas-unica', 'Neue-hans-unica', 'Helvetica Neue', Helvetica, Arial, system-ui, sans-serif;
}

*,
*::before,
*::after { box-sizing: border-box; }

html {
	scroll-behavior: smooth;
	scroll-padding-top: 80px;
	background: var(--kd-bg);
}

body { margin: 0; }

/* Colours and type live on the wrapper so the WordPress media modal (outside it) is untouched. */
.kd-site {
	background: var(--kd-bg);
	color: var(--kd-text);
	font: 400 1.0625rem/1.7 var(--kd-body);
	-webkit-font-smoothing: antialiased;
}

/* :where() keeps these element rules at zero specificity so component classes always win. */
:where(.kd-site) img { max-width: 100%; display: block; }
:where(.kd-site) a { color: inherit; }
:where(.kd-site) :focus-visible { outline: 2px solid var(--kd-accent); outline-offset: 3px; }
:where(.kd-site) h1,
:where(.kd-site) h2,
:where(.kd-site) h3 {
	font-family: var(--kd-display);
	line-height: 1.1;
	margin: 0 0 .6em;
	font-weight: 700;
	letter-spacing: -.02em;
}
:where(.kd-site) h2 { font-size: 5vw; }
:where(.kd-site) h3 { font-size: 1.9vw; }
:where(.kd-site) p { margin: 0 0 1.2em; max-width: 68ch; }

.kd-wrap { width: 100%; padding: 0 4vw; }
:where(.kd-section) { padding: 110px 0; }

.kd-label {
	display: inline-block;
	font: 400 .8rem var(--kd-body);
	color: var(--kd-accent);
	margin-bottom: 1rem;
	text-transform: uppercase;
}

/* Pencilino rich text: inner paragraphs keep the theme's normal paragraph spacing. */
.pencil-richtext ul,
.pencil-richtext ol { margin: 0 0 1.2em; padding-left: 1.2em; }

/* ---------- Liquid glass buttons ---------- */
.kd-btn,
.kd-link {
	--tint: rgba(255, 255, 255, .04);
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	align-self: flex-start;
	isolation: isolate;
	padding: .95em 2em;
	border: 0;
	border-radius: 999px;
	color: var(--kd-text);
	font: 500 1rem var(--kd-body);
	text-decoration: none;
	cursor: pointer;
	background: linear-gradient(135deg, var(--tint), rgba(255, 255, 255, .01));
	-webkit-backdrop-filter: blur(10px) saturate(160%);
	backdrop-filter: blur(10px) saturate(160%);
	box-shadow: inset 0 1px 1px rgba(255, 255, 255, .28), inset 0 -1px 1px rgba(255, 255, 255, .06), inset 0 0 18px rgba(255, 255, 255, .025), 0 6px 18px rgba(0, 0, 0, .22);
	transition: transform .35s cubic-bezier(.3, 1.4, .5, 1), box-shadow .3s, background .3s;
}
.kd-link { margin-top: .4em; }

/* specular highlight that follows the pointer */
.kd-btn::before,
.kd-link::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	border-radius: inherit;
	pointer-events: none;
	opacity: .3;
	transition: opacity .3s;
	background: radial-gradient(circle 90px at var(--x, 50%) var(--y, 0%), rgba(255, 255, 255, .22), transparent 70%);
}

/* glass rim */
.kd-btn::after,
.kd-link::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	padding: 1px;
	pointer-events: none;
	background: linear-gradient(160deg, rgba(255, 255, 255, .4), rgba(255, 255, 255, .03) 40%, rgba(255, 255, 255, .03) 60%, rgba(255, 255, 255, .22));
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
}

.kd-btn:hover,
.kd-link:hover {
	transform: translateY(-2px) scale(1.03);
	box-shadow: inset 0 1px 1px rgba(255, 255, 255, .45), inset 0 -1px 1px rgba(255, 255, 255, .1), inset 0 0 22px rgba(255, 255, 255, .05), 0 10px 26px rgba(0, 0, 0, .3);
}
.kd-btn:hover::before,
.kd-link:hover::before { opacity: 1; }
.kd-btn:active,
.kd-link:active { transform: scale(.97); }

/* dark variant, red hover */
.kd-btn.kd-btn--dark { background: #060606; color: var(--kd-text); }
.kd-btn:hover,
.kd-link:hover,
.kd-btn.kd-btn--dark:hover {
	background: linear-gradient(135deg, #ff5f4a, #ff7863);
	color: var(--kd-surface);
}

/* light beam travelling round the border, with a soft glow */
@property --kd-beam {
	syntax: '<angle>';
	inherits: false;
	initial-value: 0deg;
}
@keyframes kd-beam { to { --kd-beam: 360deg; } }

.kd-beam,
.kd-beam-glow {
	position: absolute;
	border-radius: inherit;
	pointer-events: none;
	background: conic-gradient(from var(--kd-beam), transparent 0 60%, rgba(255, 255, 255, .12) 78%, rgba(255, 255, 255, .95) 98%, transparent 100%);
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
	animation: kd-beam 4s linear infinite;
}
.kd-beam { inset: 0; padding: 1.5px; z-index: 1; }
.kd-beam-glow { inset: -3px; padding: 8px; z-index: -1; filter: blur(7px); opacity: .6; }

@media (prefers-reduced-motion: reduce) {
	.kd-beam,
	.kd-beam-glow { display: none; }
}

@supports not (backdrop-filter: blur(1px)) {
	.kd-btn,
	.kd-link { background: linear-gradient(135deg, rgba(60, 60, 66, .9), rgba(30, 30, 34, .9)); }
}

/* ---------- Skip link ---------- */
.kd-skip {
	position: absolute;
	left: -999px;
	top: 0;
	background: var(--kd-accent);
	color: #111;
	padding: .6em 1em;
	z-index: 100;
}
.kd-skip:focus { left: 0; }

/* ---------- Header, burger, off-canvas nav ---------- */
.kd-header {
	position: fixed;
	top: 0;
	right: 0;
	left: 0;
	z-index: 50;
	background: transparent;
	border: 0;
}
.kd-header .kd-wrap {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 88px;
}
.kd-logo { width: 150px; height: 40px; display: flex; align-items: center; color: #fff; }
.kd-logo svg { width: 100%; height: 100%; display: block; }
.kd-logo__ink { fill: currentColor; }
.kd-logo__dot { fill: #ff5f4a; }
.kd-logo.is-on-light { color: #130a23; }

.kd-header,
.kd-burger { transition: transform .4s cubic-bezier(.7, 0, .2, 1); }
.kd-nav-hidden .kd-header,
.kd-nav-hidden .kd-burger { transform: translateY(-100%); }
@media (prefers-reduced-motion: reduce) {
	.kd-header,
	.kd-burger { transition: none; }
}

.kd-burger {
	position: fixed;
	top: 0;
	right: 4vw;
	height: 88px;
	width: 34px;
	z-index: 70;
	background: none;
	border: 0;
	cursor: pointer;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 6px;
	padding: 0;
}
.kd-burger span { display: block; height: 2px; width: 100%; background: var(--kd-text); transition: transform .3s, opacity .3s; }
.kd-burger.is-on-light span { background: var(--kd-surface); }
.kd-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.kd-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.kd-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }
.kd-burger[aria-expanded="true"] span { background: var(--kd-bg); }

.admin-bar .kd-header,
.admin-bar .kd-burger { top: 32px; }
@media (max-width: 782px) {
	.admin-bar .kd-header,
	.admin-bar .kd-burger { top: 46px; }
}

.kd-nav {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	width: 96vw;
	background: var(--kd-accent);
	overflow-y: auto;
	z-index: 65;
	padding: 110px 4vw 4vw;
	transform: translateX(100%);
	visibility: hidden;
	transition: transform .45s cubic-bezier(.7, 0, .2, 1), visibility 0s .45s;
}
.kd-nav.is-open { transform: none; visibility: visible; transition: transform .45s cubic-bezier(.7, 0, .2, 1); }
.kd-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1vw; }
.kd-nav a {
	display: block;
	width: fit-content;
	text-decoration: none;
	font: 700 5vw/1 var(--kd-display);
	letter-spacing: -.02em;
	color: var(--kd-bg);
	padding: .1em 0;
	transform-origin: left center;
	transition: transform .35s cubic-bezier(.3, 1.4, .5, 1);
}
.kd-nav a:focus-visible { outline-color: var(--kd-bg); }
@media (hover: hover) {
	.kd-nav a:hover { transform: scale(1.12); }
}

.kd-scrim {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, .55);
	opacity: 0;
	visibility: hidden;
	transition: opacity .4s, visibility 0s .4s;
	z-index: 60;
}
.kd-scrim.is-open { opacity: 1; visibility: visible; transition: opacity .4s; }

/* ---------- Plain pages (index, page, 404) ---------- */
.kd-plain { padding-top: 160px; min-height: 70vh; }
.kd-plain h1 { font-size: 5vw; }

/* ---------- Footer ---------- */
.kd-footer {
	background: var(--kd-accent);
	color: var(--kd-surface);
	border-top: 1px solid rgba(6, 6, 6, .2);
	padding: 36px 0;
	font-size: .9rem;
}
.kd-footer .kd-wrap { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; }
.kd-footer a { color: var(--kd-surface); text-decoration: none; }
.kd-footer a:hover { text-decoration: underline; }
.kd-footer__menu { display: flex; flex-wrap: wrap; gap: .5rem 1.6rem; list-style: none; margin: 0; padding: 0; font-weight: 500; }

/* ---------- Cookie notice (liquid glass) ---------- */
.kd-cookies {
	position: fixed;
	left: 20px;
	right: 20px;
	bottom: 20px;
	max-width: 520px;
	z-index: 60;
	display: none;
	isolation: isolate;
	overflow: hidden;
	border: 0;
	border-radius: 22px;
	padding: 20px;
	background: linear-gradient(135deg, rgba(255, 255, 255, .06), rgba(255, 255, 255, .015)), rgba(14, 14, 16, .6);
	-webkit-backdrop-filter: blur(24px) saturate(160%);
	backdrop-filter: blur(24px) saturate(160%);
	box-shadow: inset 0 1px 1px rgba(255, 255, 255, .28), inset 0 -1px 1px rgba(255, 255, 255, .06), inset 0 0 30px rgba(255, 255, 255, .02), 0 20px 50px rgba(0, 0, 0, .35);
}
.kd-cookies::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	border-radius: inherit;
	pointer-events: none;
	opacity: .5;
	background: radial-gradient(circle 240px at var(--x, 50%) var(--y, 0%), rgba(255, 255, 255, .12), transparent 70%);
}
.kd-cookies::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	padding: 1px;
	pointer-events: none;
	background: linear-gradient(160deg, rgba(255, 255, 255, .4), rgba(255, 255, 255, .03) 40%, rgba(255, 255, 255, .03) 60%, rgba(255, 255, 255, .22));
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
}
.kd-cookies p { font-size: .95rem; margin-bottom: 1em; }
.kd-cookies .kd-btn,
.kd-cookies .kd-link { padding: .65em 1.5em; font-size: .95rem; margin: 0 8px 0 0; }

@media (max-width: 820px) {
	:where(.kd-section) { padding: 80px 0; }
	:where(.kd-site) h2 { font-size: 9vw; }
	:where(.kd-site) h3 { font-size: 6vw; }
	.kd-nav a { font-size: 10vw; }
	.kd-nav ul { gap: 2vw; }
	.kd-plain h1 { font-size: 9vw; }
}
