/*
Theme Name: Nu FOCUS
Theme URI: https://nu-focus.co.uk/
Update URI: false
Author: Nu FOCUS Education CIC
Author URI: https://nu-focus.co.uk/
Description: First-party WordPress theme for Nu FOCUS, Starz learning, MasterStudy LMS and WooCommerce.
Version: 1.0.0-rc8
Requires at least: 6.3
Requires PHP: 7.4
Text Domain: nu-focus
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Tags: custom-logo, custom-menu, featured-images, e-commerce, education, accessibility-ready
*/

/*
 * Local Latin subsets for the families that are visibly used on Nu FOCUS
 * pages. The variable faces retain the full weight ranges used by current
 * layouts; browsers download only the faces a page actually uses.
 */
@font-face {
	font-family: "Outfit";
	src: url("assets/fonts/outfit-latin-variable.woff2") format("woff2");
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

@font-face {
	font-family: "Jost";
	src: url("assets/fonts/jost-latin-variable.woff2") format("woff2");
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

@font-face {
	font-family: "Crimson Pro";
	src: url("assets/fonts/crimson-pro-latin-variable.woff2") format("woff2");
	font-style: normal;
	font-weight: 200 900;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

@font-face {
	font-family: "Manrope";
	src: url("assets/fonts/manrope-latin-variable.woff2") format("woff2");
	font-style: normal;
	font-weight: 200 800;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

/* Starz Companion's campaign-specific display families. */
@font-face {
	font-family: "Anton";
	src: url("assets/fonts/anton-latin-400.woff2") format("woff2");
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

@font-face {
	font-family: "Barlow Condensed";
	src: url("assets/fonts/barlow-condensed-latin-600.woff2") format("woff2");
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

@font-face {
	font-family: "Barlow Condensed";
	src: url("assets/fonts/barlow-condensed-latin-700.woff2") format("woff2");
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

@font-face {
	font-family: "Barlow Condensed";
	src: url("assets/fonts/barlow-condensed-latin-800.woff2") format("woff2");
	font-style: normal;
	font-weight: 800;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

@font-face {
	font-family: "Inter";
	src: url("assets/fonts/inter-latin-variable.woff2") format("woff2");
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

@font-face {
	font-family: "Permanent Marker";
	src: url("assets/fonts/permanent-marker-latin-400.woff2") format("woff2");
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	unicode-range: U+0000-00ff, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+0304, U+0308, U+0329, U+2000-206f, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd;
}

/*
 * MasterStudy outputs its membership badge as an unconstrained SVG image.
 * Constrain the intrinsic artwork so it cannot squeeze course-card pricing.
 */
.tp-course-pricing img[src*="members_only.svg"],
.tp-course-filter-pricing img[src*="members_only.svg"] {
	display: inline-block !important;
	flex: 0 0 18px;
	width: 18px !important;
	height: 18px !important;
	min-width: 18px;
	max-width: 18px !important;
	max-height: 18px !important;
	margin-right: 5px;
	object-fit: contain;
	vertical-align: -4px;
}

.tp-course-pricing > span:has(img[src*="members_only.svg"]),
.tp-course-filter-pricing > span:has(img[src*="members_only.svg"]) {
	display: inline-flex;
	align-items: center;
	justify-content: flex-end;
	white-space: nowrap;
}

/*
 * The transitional Acadia Core repeater widget uses its first row as a table
 * heading. Keep that embedded legacy component aligned to the Nu FOCUS palette
 * until the last Elementor instance is replaced.
 */
.elementor-widget-tp-repeater-box .tp-course-details-table > ul > div:first-child .tp-course-details-table-head {
	background: #5956e9 !important;
}

.elementor-widget-tp-repeater-box .tp-course-details-table > ul > div:first-child .tp-table-title {
	color: #ffffff !important;
}

/*
 * Eventin 4.1.26 combines its generic .etn-btn horizontal padding with a
 * fixed 44px filter control. With border-box sizing, the 40px total padding
 * leaves only 4px for the 18px sliders SVG and makes the icon appear missing.
 * Keep the correction scoped to the modern Events archive search control.
 */
.etn-event-search-wrapper--modern button.etn-filter-icon {
	flex: 0 0 44px;
	padding: 0;
	line-height: 1;
}

.etn-event-search-wrapper--modern button.etn-filter-icon > svg {
	display: block;
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
}

/* Standalone fallback templates and native block content. */
:root {
	--nf-theme-ink: #12152b;
	--nf-theme-deep: #17133f;
	--nf-theme-purple: #6257e8;
	--nf-theme-yellow: #f6c945;
	--nf-theme-cloud: #f6f7fb;
	--nf-theme-line: #e4e4ef;
	--nf-theme-copy: #55596d;
}

html {
	scroll-behavior: smooth;
}

body.nu-focus-theme {
	margin: 0;
	background: #fff;
	color: var(--nf-theme-ink);
	font-family: "Outfit", Arial, sans-serif;
	line-height: 1.65;
	overflow-wrap: anywhere;
}

body.nu-focus-theme *,
body.nu-focus-theme *::before,
body.nu-focus-theme *::after {
	box-sizing: border-box;
}

.nf-site-main {
	min-height: 50vh;
}

.nf-site-shell {
	width: min(100% - 32px, 1180px);
	margin-inline: auto;
}

.nf-content-layout,
.nf-error-page {
	padding-block: clamp(48px, 8vw, 96px);
}

.nf-entry,
.nf-archive-header,
.nf-empty-state,
.nf-comments {
	max-width: 800px;
	margin-inline: auto;
}

.nf-entry + .nf-entry {
	margin-top: 42px;
	padding-top: 42px;
	border-top: 1px solid var(--nf-theme-line);
}

.nf-entry-title,
.nf-archive-header h1,
.nf-error-page h1 {
	margin: 0 0 18px;
	color: var(--nf-theme-deep);
	font-size: clamp(2rem, 5vw, 3.7rem);
	letter-spacing: -0.035em;
	line-height: 1.08;
}

.nf-entry-title a {
	color: inherit;
	text-decoration: none;
}

.nf-entry-title a:hover,
.nf-entry-title a:focus-visible {
	color: var(--nf-theme-purple);
}

.nf-entry-media img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 20px;
}

.nf-entry-content {
	color: var(--nf-theme-copy);
}

.nf-entry-content > * + * {
	margin-top: 1.25em;
}

.nf-entry-content :is(img, video, iframe) {
	max-width: 100%;
	height: auto;
}

.nf-error-code {
	margin: 0;
	color: var(--nf-theme-purple);
	font-size: clamp(4rem, 16vw, 10rem);
	font-weight: 850;
	line-height: 0.9;
}

.nf-error-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px;
	margin-top: 28px;
}

.nf-theme-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 12px 22px;
	border-radius: 999px;
	background: var(--nf-theme-purple);
	color: #fff;
	font-weight: 750;
	text-decoration: none;
}

body.nu-focus-theme :is(a, button, input, select, textarea, summary):focus-visible {
	outline: 3px solid rgba(98, 87, 232, 0.35);
	outline-offset: 3px;
}

/* Friendly 404: local vector artwork, native search and a clear way home. */
.nf-error-page { text-align:center; max-width:1000px; padding-block:clamp(40px,7vw,76px); }
.nf-error-page .nf-error-kicker { color:var(--nf-theme-purple); font-size:.82rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; margin:0 0 12px; }
.nf-error-art { display:flex; justify-content:center; align-items:center; gap:clamp(0px,1.5vw,18px); margin:0 auto 24px; max-width:620px; color:#dadbfd; line-height:1; }
.nf-error-art > span { font-size:clamp(7rem,23vw,17rem); font-weight:850; letter-spacing:-.08em; }
.nf-error-page .nf-error-art svg.nf-error-character { width:clamp(110px,23vw,235px)!important; height:auto!important; max-width:none; max-height:none; flex-shrink:0; }
.nf-error-page h1 { font-size:clamp(1.9rem,4.7vw,3.35rem); max-width:800px; margin:0 auto 16px; }
.nf-error-intro > p:not(.nf-error-kicker) { max-width:580px; margin:0 auto 25px; color:var(--nf-theme-copy); }
.nf-error-page .nf-theme-button,.nf-error-page .nf-theme-button:visited { background:var(--nf-theme-purple); color:#fff!important; -webkit-text-fill-color:#fff; gap:8px; }
.nf-error-page .nf-theme-button:hover,.nf-error-page .nf-theme-button:focus-visible { background:#4338bd; color:#fff!important; }
.nf-error-search { max-width:570px; margin:32px auto 0; padding:24px; border:1px solid var(--nf-theme-line); border-radius:20px; background:var(--nf-theme-cloud); }
.nf-error-search h2 { margin:0 0 14px; font-size:1.05rem; color:var(--nf-theme-deep); }
.nf-error-search form { display:flex; justify-content:center; align-items:stretch; flex-wrap:wrap; gap:10px; margin:0; }
.nf-error-search label { display:flex; flex:1 1 220px; min-width:0; }
.nf-error-search input[type=search] { width:100%; min-width:0; min-height:48px; padding:10px 15px; border:1px solid #c9c9df; border-radius:12px; background:#fff; font:inherit; color:var(--nf-theme-ink); }
.nf-error-search input[type=submit],.nf-error-search button { min-height:48px; padding:10px 21px; border:0; border-radius:12px; background:var(--nf-theme-purple); color:#fff; font:inherit; font-weight:750; cursor:pointer; }
@media(max-width:480px) { .nf-error-search { padding:18px; } .nf-error-search input[type=submit],.nf-error-search button { flex:1 1 100%; } }

/* Keep the signed-in account control usable on narrow screens. */
@media (max-width: 520px) {
 .nfl-account-session { flex: 0 0 auto; gap: 0; }
 .nfl-account-session .nfl-account-dashboard { display: inline-flex; align-items: center; justify-content: center; width: 38px; min-width: 38px; height: 38px; padding: 0; flex-shrink: 0; white-space: nowrap; }
 .nfl-account-session .nfl-account-dashboard span { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
 .nfl-account-session .nfl-account-dashboard svg { width: 18px; height: 18px; margin: 0; flex-shrink: 0; }
 .nfl-header .nfl-account-session .nfl-account-exit { display: none !important; }
}
