/*
Theme Name: NFTUniverse Child
Theme URI: https://nftuniverse.com.au
Description: Child theme for Kadence. All NFTUniverse customisation lives here so the parent theme can be updated safely.
Author: NFTUniverse
Template: kadence
Version: 0.1.250
Text Domain: nftuniverse-child
*/

/* Parent styles are enqueued in functions.php, not imported here (@import blocks rendering). */

/* --- 404 page (matches the site's indigo/violet identity) --- */
.nftu-404 {
	background: linear-gradient(135deg, #0d0b2b 0%, #1a1444 55%, #2b1e6e 100%);
	color: #f1f0fc;
	border-radius: 16px;
	padding: clamp(2rem, 5vw, 4rem);
	margin: 2.5rem 0;
}
.nftu-404 .nftu-eyebrow {
	display: inline-block;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: #a78bfa;
	margin-bottom: 0.75rem;
}
.nftu-404-title {
	color: #fff;
	font-size: clamp(2rem, 4.5vw, 3rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	margin: 0 0 1rem;
}
.nftu-404-lede { color: #c9c4ee; font-size: 1.15rem; line-height: 1.65; max-width: 56ch; margin-bottom: 1.75rem; }
.nftu-404-actions { display: flex; gap: 0.75rem; flex-wrap: wrap; margin-bottom: 2rem; }
.nftu-404-btn {
	display: inline-block; padding: 0.7rem 1.3rem; border-radius: 10px;
	font-weight: 600; border: 1px solid transparent; text-decoration: none;
}
.nftu-404-btn:not(.nftu-404-btn--ghost) { background: #4c51bf; color: #ffffff; }
.nftu-404-btn:not(.nftu-404-btn--ghost):hover { background: #3d4099; color: #ffffff; }
.nftu-404-btn--ghost { border-color: rgba(255, 255, 255, 0.45); color: #f1f0fc; }
.nftu-404-btn--ghost:hover { border-color: #ffffff; color: #ffffff; }
.nftu-404-search-label { font-size: 0.85rem; color: #c9c4ee; margin-bottom: 0.5rem; }
.nftu-404-search .search-form { max-width: 28rem; }

/* =========================================================
   Archive cards — stock Kadence loop entries onto the
   indigo/violet identity. CSS-only: no markup change.
   ========================================================= */
body.archive article.loop-entry,
body.search article.loop-entry {
	background: #ffffff;
	border: 1px solid #e6e4f5;
	border-radius: 10px;
	box-shadow: 0 1px 2px rgba(13, 11, 43, 0.06), 0 8px 24px -12px rgba(13, 11, 43, 0.18);
	padding: clamp(1.25rem, 3vw, 2rem);
	margin-bottom: 1.25rem;
}
body.archive article.loop-entry .entry-title,
body.search article.loop-entry .entry-title {
	font-size: clamp(1.25rem, 2.4vw, 1.5rem);
	line-height: 1.3;
	letter-spacing: -0.01em;
}
body.archive article.loop-entry .entry-title a,
body.search article.loop-entry .entry-title a { color: #16132e; }
body.archive article.loop-entry .entry-title a:hover,
body.search article.loop-entry .entry-title a:hover { color: #4c51bf; }
/* Category term as a violet pill. */
body.archive article.loop-entry .category-links a,
body.search article.loop-entry .category-links a {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: #4c51bf;
	background: #eef0fd;
	border: 1px solid #c9cdf5;
	border-radius: 999px;
	padding: 0.18rem 0.7rem;
}
body.archive article.loop-entry .entry-summary,
body.search article.loop-entry .entry-summary { color: #3d3a5c; }
/* Read More as a quiet on-palette button. */
body.archive article.loop-entry .post-more-link,
body.search article.loop-entry .post-more-link {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-weight: 600;
	color: #4c51bf;
	border: 1px solid #e6e4f5;
	border-radius: 8px;
	padding: 0.45rem 0.9rem;
	background: #fafaff;
}
body.archive article.loop-entry .post-more-link:hover,
body.search article.loop-entry .post-more-link:hover {
	border-color: #a78bfa;
	color: #3d4099;
}
@media (max-width: 640px) {
	body.archive article.loop-entry,
	body.search article.loop-entry { padding: 1.1rem 1rem; }
}

/* =========================================================
   Single-post header band — designed title surface in the
   indigo/violet identity. CSS-only.
   ========================================================= */
body.single .entry-header {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(167, 139, 250, 0.10), transparent 60%),
		#f8f7ff;
	border: 1px solid #e6e4f5;
	border-radius: 10px;
	padding: clamp(1.5rem, 4vw, 2.5rem) clamp(1.25rem, 4vw, 2.5rem);
	margin-bottom: 1.5rem;
}
body.single .entry-header .entry-title {
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: #16132e;
	margin-bottom: 0.5rem;
}
body.single .entry-header .category-links a {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: #4c51bf;
	background: #eef0fd;
	border: 1px solid #c9cdf5;
	border-radius: 999px;
	padding: 0.18rem 0.7rem;
}
body.single .entry-header .entry-meta { color: #6b6790; font-size: 0.9rem; }
body.single .entry-header .entry-meta a { color: #6b6790; }
body.single .entry-header .entry-meta a:hover { color: #4c51bf; }
@media (max-width: 640px) {
	body.single .entry-header { padding: 1.25rem 1rem; }
}

/* =========================================================
   Site chrome — header hairline + dark footer band in the
   indigo/violet identity. CSS-only; widget markup untouched.
   ========================================================= */
.site-header-wrap {
	border-bottom: 3px solid transparent;
	border-image: linear-gradient(90deg, #0d0b2b, #a78bfa, #2b1e6e) 1;
}
.site-header-row .main-navigation .menu > .menu-item > .menu-link {
	color: #16132e;
	transition: color 0.15s ease;
}
.site-header-row .main-navigation .menu > .menu-item > .menu-link:hover,
.site-header-row .main-navigation .menu > .menu-item > .menu-link:focus-visible {
	color: #4c51bf;
}
/* Dark footer band — matches the 404/library gradient. */
.site-footer-wrap {
	background:
		radial-gradient(900px 320px at 90% 0%, rgba(167, 139, 250, 0.16), transparent 55%),
		linear-gradient(135deg, #0d0b2b 0%, #1a1444 55%, #2b1e6e 100%);
	color: #d9d5f0;
}
body .site-footer-wrap a { color: #c4b5fd !important; }
body .site-footer-wrap a:hover, body .site-footer-wrap a:focus-visible { color: #ddd6fe !important; }
.site-footer-wrap .site-footer-row { border-top: none; }

/* =========================================================
   Article body typography — reading surface for the library.
   Sectioned headings, tuned links, list + quote polish.
   CSS-only; content markup untouched.
   ========================================================= */
body.single .entry-content h2 {
	margin: 2.5rem 0 1rem;
	padding-left: 0.9rem;
	border-left: 4px solid #4c51bf;
	line-height: 1.25;
}
body.single .entry-content h3,
body.single .entry-content h4 {
	margin: 2rem 0 0.75rem;
	color: #16132e;
}
body.single .entry-content p,
body.single .entry-content ul,
body.single .entry-content ol {
	margin: 0 0 1.15rem;
}
body.single .entry-content a {
	color: #3d4099;
	font-weight: 500;
	text-decoration-line: underline;
	text-decoration-color: rgba(76, 81, 191, 0.35);
	text-decoration-thickness: 1.5px;
	text-underline-offset: 3px;
	transition: color 0.15s ease, text-decoration-color 0.15s ease;
}
body.single .entry-content a:hover,
body.single .entry-content a:focus-visible {
	color: #4c51bf;
	text-decoration-color: #a78bfa;
}
body.single .entry-content li { margin-bottom: 0.4rem; }
body.single .entry-content li::marker { color: #4c51bf; font-weight: 700; }
body.single .entry-content blockquote {
	margin: 2rem 0;
	padding: 1.1rem 1.4rem;
	background: linear-gradient(135deg, rgba(76, 81, 191, 0.05), rgba(167, 139, 250, 0.07));
	border: 1px solid #e6e4f5;
	border-left: 4px solid #4c51bf;
	border-radius: 10px;
	font-style: italic;
}
body.single .entry-content blockquote p { margin-bottom: 0.6rem; }
body.single .entry-content hr {
	margin: 2.5rem auto;
	border: none;
	height: 2px;
	width: 42%;
	background: linear-gradient(90deg, transparent, #a78bfa, transparent);
}
body.single .entry-content table {
	width: 100%;
	border-collapse: collapse;
	margin: 1.75rem 0;
	border: 1px solid #e6e4f5;
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 6px 18px rgba(22, 19, 46, 0.07);
}
body.single .entry-content th {
	background: #1a1444;
	color: #e5e3f5;
	padding: 0.7rem 0.9rem;
	text-align: left;
}
body.single .entry-content td {
	padding: 0.65rem 0.9rem;
	border-top: 1px solid #e6e4f5;
}
body.single .entry-content tr:nth-child(even) td { background: rgba(26, 20, 68, 0.03); }
body.single .entry-content img { border-radius: 10px; }
body.single .entry-content .wp-caption,
body.single .entry-content figcaption {
	font-size: 0.85rem;
	color: #6b6790;
	text-align: center;
	margin-top: 0.5rem;
}

/* =========================================================
   Post navigation — designed prev/next cards at article end.
   CSS-only; nav markup untouched.
   ========================================================= */
body.single .post-navigation .nav-links { gap: 1rem; }
body.single .post-navigation .nav-previous a,
body.single .post-navigation .nav-next a {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 0.35rem;
	background: #fff;
	border: 1px solid #e6e4f5;
	border-radius: 10px;
	box-shadow: 0 6px 18px rgba(22, 19, 46, 0.07);
	padding: 1rem 1.15rem;
	color: #16132e;
	font-weight: 600;
	font-size: 1rem;
	line-height: 1.35;
	text-decoration: none;
	transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
body.single .post-navigation .nav-previous a:hover,
body.single .post-navigation .nav-next a:hover {
	border-color: #4c51bf;
	box-shadow: 0 10px 24px rgba(22, 19, 46, 0.13);
	transform: translateY(-1px);
}
body.single .post-navigation .nav-next a { text-align: right; align-items: flex-end; }
body.single .post-navigation .post-navigation-sub {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: #4c51bf;
}
body.single .post-navigation .post-navigation-sub small { font-size: inherit; }
@media (max-width: 640px) {
	body.single .post-navigation .nav-links { grid-template-columns: 1fr; }
	body.single .post-navigation .nav-next a { text-align: left; align-items: flex-start; }
}

/* =========================================================
   Archive header band — designed title + description surface
   matching the single-post header band. CSS-only.
   ========================================================= */
body.archive .archive-title {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(167, 139, 250, 0.10), transparent 60%),
		#f8f7ff;
	border: 1px solid #e6e4f5;
	border-radius: 10px;
	padding: 1.5rem 1.75rem 1.4rem;
	margin-bottom: 1.5rem;
	font-size: clamp(1.6rem, 3.5vw, 2.25rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: #16132e;
}
/* When a description follows, the two elements form one band. */
body.archive .archive-title:has(+ .archive-description) {
	border-bottom: none;
	border-radius: 10px 10px 0 0;
	padding-bottom: 0.2rem;
	margin-bottom: 0;
}
body.archive .archive-description {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(167, 139, 250, 0.10), transparent 60%),
		#f8f7ff;
	border: 1px solid #e6e4f5;
	border-top: none;
	border-radius: 0 0 10px 10px;
	padding: 0.1rem 1.75rem 1.4rem;
	margin-bottom: 1.5rem;
	color: #6b6790;
	font-size: 1.02rem;
	line-height: 1.55;
}
body.archive .archive-description p { margin: 0; }

/* =========================================================
   Pagination — designed chip row matching the card system
   (bare links currently float under the archive loop).
   CSS-only; markup/rel/URLs unchanged.
   ========================================================= */
body.archive .pagination .nav-links,
body.home .pagination .nav-links,
body.search .pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5rem 0 0.25rem;
}
.pagination .nav-links .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	height: 42px;
	padding: 0 0.65rem;
	margin: 0;
	background: #f8f7ff;
	border: 1px solid #e6e4f5 !important;
	border-radius: 10px !important;
	color: #16132e;
	font-size: 0.95rem;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease, background 160ms ease;
}
a.page-numbers:hover {
	border-color: #4c51bf !important;
	color: #4c51bf;
	background: #f8f7ff;
	transform: translateY(-1px);
	box-shadow: 0 4px 12px -6px rgba(22, 19, 46, 0.3);
}
.pagination .nav-links .page-numbers.current {
	background: linear-gradient(135deg, #4c51bf, #3d4099);
	border-color: transparent !important;
	color: #fff;
}
.pagination .nav-links .page-numbers.dots {
	background: transparent;
	border-color: transparent !important;
	color: #6b6790;
	font-weight: 500;
	min-width: 24px;
	padding: 0;
}
.pagination .nav-links .page-numbers.prev,
.pagination .nav-links .page-numbers.next { padding: 0 0.9rem; }
.pagination .nav-links .page-numbers .kadence-svg-icon { display: inline-flex; }

/* =========================================================
   Related-posts carousel — compact card sizing. The default
   entry-title renders at the 40px archive size inside the
   related slider, stretching every card toward ~1000px with
   dead space under each title. CSS-only.
   ========================================================= */
body.single .entry-related {
	border-top: 1px solid #e6e4f5;
	padding-top: 2rem;
}
body.single .entry-related .entry-related-title {
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: #6b6790;
	margin: 0 0 1.25rem;
}
body.single .entry-related .entry-title {
	font-size: 1.15rem;
	line-height: 1.35;
	letter-spacing: -0.01em;
	margin: 0 0 0.65rem;
}
body.single .entry-related .entry-meta {
	font-size: 0.85rem;
	line-height: 1.4;
}
body.single .entry-related article.loop-entry {
	transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
body.single .entry-related article.loop-entry:hover {
	border-color: #4c51bf;
	transform: translateY(-2px);
	box-shadow: 0 10px 24px -12px rgba(22, 19, 46, 0.35);
}
/* Uniform related cards: the thumbnail exists on only some
   slides and its ratio class drives the whole carousel tall. */
body.single .entry-related .post-thumbnail { display: none; }
body.single .entry-related .entry-summary p {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-size: 0.9rem;
	line-height: 1.45;
	color: #6b6790;
	margin: 0;
}
body.single .entry-related .entry-summary { margin-top: 0.35rem; }
body.single .entry-related .entry-taxonomies { margin-bottom: 0.5rem; }
/* Stop stretching the card to the row's tallest slide. */
body.single .entry-related .splide__list { align-items: flex-start; }
body.single .entry-related li.splide__slide { align-items: flex-start; }
body.single .entry-related li.splide__slide article.entry {
	flex: none;
	height: auto;
	align-self: flex-start;
}
@media (max-width: 640px) {
	body.single .entry-related .entry-title { font-size: 1.05rem; }
}

/* =========================================================
   Mobile navigation drawer — designed surface. The stock
   drawer was a flat near-black panel with 14px links.
   CSS-only.
   ========================================================= */
#mobile-drawer .drawer-inner {
	background: linear-gradient(180deg, rgba(167, 139, 250, 0.16), rgba(22, 19, 46, 0) 180px), #16132e;
}
#mobile-drawer .drawer-inner::before {
	content: "";
	display: block;
	height: 3px;
	background: linear-gradient(90deg, #a78bfa, transparent 70%);
}
#mobile-drawer #mobile-menu > li > a,
#mobile-drawer #mobile-menu .drawer-nav-drop-wrap > a {
	font-size: 1.05rem;
	font-weight: 600;
	padding: 1rem 1.5rem;
	color: #eeecfb;
}
#mobile-drawer #mobile-menu > li.current-menu-item > a,
#mobile-drawer #mobile-menu > li.current-menu-item > .drawer-nav-drop-wrap > a,
#mobile-drawer #mobile-menu > li.current_page_item > a {
	color: #c4b5fd;
	box-shadow: inset 3px 0 0 #a78bfa;
	background: rgba(167, 139, 250, 0.12);
}
#mobile-drawer #mobile-menu ul.sub-menu > li > a {
	font-size: 0.95rem;
	font-weight: 500;
	color: #a5a0c8;
	padding-left: 2.5rem;
}
#mobile-drawer .drawer-sub-toggle {
	width: 52px;
}
#mobile-drawer .drawer-sub-toggle:hover {
	color: #c4b5fd;
}

/* =========================================================
   Sticky site header — persistent nav on scroll + proportionate
   logo. The 177px logo dominated the whole header band; cap it
   and pin the header with an elevation shadow. CSS-only.
   ========================================================= */
body .site-header {
	position: sticky !important;
	top: 0;
	z-index: 40;
	box-shadow: 0 8px 24px -18px rgba(22, 19, 46, 0.55);
}
body.admin-bar .site-header { top: 32px; }
@media screen and (max-width: 782px) {
	body.admin-bar .site-header { top: 46px; }
}
.site-header a.brand img.custom-logo {
	max-height: 84px;
	width: auto;
}

/* =========================================================
   Article lede + framed figures (pass 13). CSS-only.
   ========================================================= */
body.single .entry-content > p.wp-block-paragraph:first-child {
	font-size: 1.14rem;
	line-height: 1.68;
	font-weight: 500;
	color: #16132e;
}
body.single .entry-content figure.wp-block-image { margin: 2.25rem auto; }
body.single .entry-content figure.wp-block-image img {
	border-radius: 12px;
	border: 1px solid #e6e4f5;
	box-shadow: 0 18px 42px -26px rgba(22, 19, 46, 0.35);
}
body.single .entry-content figure.wp-block-image figcaption {
	margin-top: 0.65rem;
	font-size: 0.82rem;
	color: #6b6790;
	text-align: center;
}

/* =========================================================
   Review stamp + list accents (pass 14). CSS-only.
   ========================================================= */
p.nftu-reviewed {
	font-size: 0.82rem;
	letter-spacing: 0.03em;
	color: #6b6790;
	border-left: 3px solid #a78bfa;
	padding-left: 0.7rem;
}
body.single .entry-content ul.wp-block-list li::marker { color: #a78bfa; }

/* =========================================================
   Nav interaction states + anchor scroll offset (pass 15).
   ========================================================= */
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a {
	transition: color 0.15s ease;
}
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a:hover {
	color: #4c51bf;
}
.site-header .main-navigation .primary-menu-container > ul > li.menu-item.current-menu-item > a,
.site-header .main-navigation .primary-menu-container > ul > li.menu-item.current_page_item > a,
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a[aria-current="page"] {
	color: #3d4099;
	font-weight: 650;
	box-shadow: inset 0 -2px 0 #a78bfa;
}
.site-header .main-navigation .primary-menu-container > ul > li.menu-item > a:focus-visible {
	outline: 2px solid #4c51bf;
	outline-offset: 3px;
	border-radius: 4px;
}
[id] { scroll-margin-top: 96px; }
body.admin-bar [id] { scroll-margin-top: 130px; }
@media (max-width: 782px) { body.admin-bar [id] { scroll-margin-top: 142px; } }

/* =========================================================
   Interactive surfaces (pass 16). CSS-only.
   ========================================================= */
.wp-block-button__link {
  background-color: #4c51bf;
  border-radius: 8px;
  font-weight: 600;
  transition: background-color 0.15s ease;
}
.wp-block-button__link:hover,
.wp-block-button__link:focus-visible { background-color: #3d4099; }

#commentform textarea,
#commentform input:not([type="submit"]) {
  border-radius: 8px;
  border-color: #e6e4f5;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
#commentform textarea:focus,
#commentform input:not([type="submit"]):focus {
  border-color: #4c51bf;
  outline: none;
  box-shadow: 0 0 0 3px rgba(76, 81, 191, 0.18);
}
#commentform .submit {
  background: #4c51bf;
  border-radius: 8px;
  font-weight: 650;
  padding: 0.7rem 1.35rem;
  transition: background 0.15s ease;
}
#commentform .submit:hover,
#commentform .submit:focus-visible { background: #3d4099; }

.entry-related-carousel .splide__arrow { background: rgba(22, 19, 46, 0.55); }
.entry-related-carousel .splide__arrow:hover,
.entry-related-carousel .splide__arrow:focus-visible { background: #4c51bf; }
.entry-related-carousel .splide__pagination__page.is-active { background: #4c51bf; }
.entry-related-carousel .splide__pagination__page:hover { background: rgba(76, 81, 191, 0.55); }

/* =========================================================
   Comment reply region (pass 17). CSS-only.
   ========================================================= */
#respond.comment-respond,
.comment-respond #respond {
  background: #faf9ff;
  border: 1px solid #e6e4f5;
  border-radius: 12px;
  padding: 1.25rem 1.4rem 1.4rem;
}
#respond .comment-reply-title,
.comment-respond .comment-reply-title {
  color: #16132e;
  font-size: 1.15rem;
  font-weight: 700;
  border-left: 3px solid #a78bfa;
  padding-left: 0.7rem;
}
#respond .comment-notes,
#respond .logged-in-as,
#respond .logged-in-as a {
  color: #6b6790;
  font-size: 0.85rem;
}

/* =========================================================
   Disclosure box polish (pass 18). CSS-only.
   ========================================================= */
body .nftu-disclosure {
  border: 1px solid #e6e4f5;
  border-left: 3px solid #a78bfa !important;
  border-radius: 10px;
  color: #16132e;
}
body .nftu-disclosure strong,
body .nftu-disclosure b { color: #3d4099; }

/* =========================================================
   Read-progress indicator (pass 19). GPU transform-only bar
   driven by assets/nu-progress.js. a11y-safe (aria-hidden,
   pointer-events none, hidden under reduced-motion).
   ========================================================= */
.read-progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: #4c51bf;
  transform-origin: 0 0;
  transform: scaleX(0);
  z-index: 100000;
  pointer-events: none;
  will-change: transform;
}
@media (prefers-reduced-motion: reduce) {
  .read-progress { display: none; }
}

/* =========================================================
   Branded browser chrome (pass 20). Selection tint, focus
   ring, scrollbar polish — CSS only.
   ========================================================= */
::selection {
  background: rgba(76, 81, 191, 0.18);
  color: #16132e;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid #4c51bf;
  outline-offset: 2px;
  border-radius: 3px;
}
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-track {
  background: #faf9ff;
}
::-webkit-scrollbar-thumb {
  background: #d8d5f0;
  border: 2px solid #faf9ff;
  border-radius: 5px;
}
::-webkit-scrollbar-thumb:hover {
  background: #4c51bf;
}

/* =========================================================
   Back-to-top control (pass 21). Fixed accent chip; fades in
   past 600px scroll via .is-visible. Reduced-motion aware.
   ========================================================= */
.back-to-top {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: #a78bfa;
  color: #16132e;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
  box-shadow: 0 6px 18px rgba(22, 19, 46, 0.28);
  z-index: 99999;
}
.back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.back-to-top:hover {
  filter: brightness(1.06);
}
.back-to-top svg {
  display: block;
}
@media (prefers-reduced-motion: reduce) {
  .back-to-top {
    transition: none;
  }
}

/* =========================================================
   Print styles (pass 22). Strip interactive furniture and
   ink-heavy bands; readable single-column output.
   ========================================================= */
@media print {
  header, footer, nav,
  .read-progress, .back-to-top,
  .post-navigation, .nav-links,
  #comments, #respond, .comment-respond, .comments-area,
  form, button,
  [class*='carousel'], [class*='drawer'], [class*='-filter'] {
    display: none !important;
  }
  * {
    box-shadow: none !important;
    text-shadow: none !important;
  }
  html, body {
    background: #fff !important;
    color: #111 !important;
  }
  a {
    color: inherit;
  }
  [class*='-hero'], [class*='-band'], [class*='-panel'], [class*='-card'] {
    background: #fff !important;
    color: #111 !important;
  }
  h1, h2, h3, h4 {
    color: #000 !important;
    page-break-after: avoid;
  }
  table, article {
    page-break-inside: avoid;
  }
}

/* =========================================================
   Typographic refinements (pass 23). Balanced headings,
   tabular numerals in data tables, tuned link underlines.
   ========================================================= */
h1, h2, h3 {
  text-wrap: balance;
}
table,
[class*='stat'] {
  font-variant-numeric: tabular-nums;
}
article a,
.entry-content a {
  text-underline-offset: 0.15em;
  text-decoration-thickness: 0.06em;
}

/* =========================================================
   Breadcrumb trail (pass 24). Compact wayfinding row above
   article content: Home / Category / Current.
   ========================================================= */
.nu-crumbs {
  margin: 0 0 1.25rem;
}
.nu-crumbs ol {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.nu-crumbs li {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: rgba(22, 19, 46, 0.55);
}
.nu-crumbs li + li::before {
  content: "›";
  color: rgba(22, 19, 46, 0.3);
}
.nu-crumbs a {
  color: rgba(22, 19, 46, 0.7);
  text-decoration: none;
}
.nu-crumbs a:hover {
  color: #4c51bf;
}
.nu-crumbs [aria-current='page'] {
  color: #16132e;
}

/* =========================================================
   Nav search (pass 25). Compact GET search tucked into the
   primary menu; expands on focus, full-width in the drawer.
   ========================================================= */
.nu-nav-search {
  display: flex;
  align-items: center;
}
.nu-nav-search-form {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  margin-left: 0.5rem;
}
input.nu-nav-search-input {
  width: 8.5rem;
  height: 2.1rem;
  padding: 0 0.75rem;
  font-size: 0.85rem;
  color: #16132e;
  background: #fff;
  border: 1px solid rgba(22, 19, 46, 0.18);
  border-radius: 999px;
  transition: width 0.2s ease, border-color 0.2s ease;
}
input.nu-nav-search-input:focus {
  width: 11rem;
  border-color: #4c51bf;
  outline: none;
}
button.nu-nav-search-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.1rem;
  height: 2.1rem;
  padding: 0;
  color: #fff;
  background: #4c51bf;
  border: none;
  border-radius: 50%;
  cursor: pointer;
}
button.nu-nav-search-btn:hover {
  filter: brightness(1.08);
}
@media (max-width: 1024px) {
  .nu-nav-search-form {
    margin: 0.5rem 0 0;
    width: 100%;
  }
  input.nu-nav-search-input {
    flex: 1;
    width: auto;
  }
}

/* =========================================================
   External-link indicator (pass 26). Subtle ↗ after outbound
   links inside article content; internal links untouched.
   ========================================================= */
.entry-content a[href^='http']:not([href*='nftuniverse.com.au'])::after,
article a[href^='http']:not([href*='nftuniverse.com.au'])::after {
  content: '↗';
  display: inline-block;
  margin-left: 0.12em;
  font-size: 0.72em;
  line-height: 1;
  vertical-align: 0.08em;
  opacity: 0.6;
  transition: opacity 0.15s ease;
}
.entry-content a[href^='http']:not([href*='nftuniverse.com.au']):hover::after,
article a[href^='http']:not([href*='nftuniverse.com.au']):hover::after {
  opacity: 1;
}

/* =========================================================
   Footer sitemap band (pass 27). Ink section above the dark
   footer with Explore/Latest link columns.
   ========================================================= */
.nu-sitemap {
  background: #16132e;
  padding: 2rem max(1.25rem, 4vw) 0.75rem;
  color: rgba(226, 224, 240, 0.72);
}
.nu-sitemap-grid {
  max-width: 72rem;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 1.5rem;
}
.nu-sitemap-head {
  margin: 0 0 0.625rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #c7d2fe;
}
.nu-sitemap ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.375rem;
}
.nu-sitemap a {
  color: rgba(226, 224, 240, 0.78);
  text-decoration: none;
  font-size: 0.9rem;
}
.nu-sitemap a:hover { color: #a5b4fc; }

/* =========================================================
   Reading-time chip (pass 28). Right-aligned pill inside the
   breadcrumb row; muted like the trail, chip-outlined.
   ========================================================= */
.nu-crumbs li.nu-readtime::before { content: none; }
.nu-crumbs .nu-readtime {
  margin-left: auto;
  padding: 0.125rem 0.625rem;
  border: 1px solid rgba(22, 19, 46, 0.15);
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: rgba(22, 19, 46, 0.5);
  text-transform: none;
}
@media (max-width: 640px) {
  .nu-crumbs .nu-readtime { margin-left: 0; }
}

/* =========================================================
   Heading anchor links (pass 29). '#' deep-link affordance
   revealed on heading hover / keyboard focus.
   ========================================================= */
.entry-content h2 .nu-anchor,
.entry-content h3 .nu-anchor {
  margin-left: 0.45rem;
  font-size: 0.8em;
  font-weight: 600;
  color: #4c51bf;
  text-decoration: none;
  opacity: 0;
  transition: opacity 0.15s ease;
}
.entry-content h2:hover .nu-anchor,
.entry-content h3:hover .nu-anchor,
.entry-content .nu-anchor:focus-visible {
  opacity: 0.85;
}
.entry-content .nu-anchor:hover { opacity: 1; }

/* =========================================================
   Byline chip bar (pass 30). Entry meta becomes compact
   accent-tinted pills: author chip + date chip; dot divider
   suppressed inside the chip row.
   ========================================================= */
.entry-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.entry-meta.entry-meta-divider-dot .posted-by::before,
.entry-meta.entry-meta-divider-dot .posted-on::before {
  content: none;
}
.entry-meta .posted-by,
.entry-meta .posted-on {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.7rem;
  border: 1px solid rgba(22, 19, 46, 0.12);
  border-radius: 999px;
  background: rgba(76, 81, 191, 0.06);
  font-size: 0.78rem;
  color: rgba(22, 19, 46, 0.7);
}
.entry-meta .posted-by .meta-label {
  color: rgba(22, 19, 46, 0.45);
}
.entry-meta .author a {
  color: #16132e;
  font-weight: 600;
  text-decoration: none;
}
.entry-meta .author a:hover {
  color: #4c51bf;
}

/* =========================================================
   Author box (pass 31). Branded author card at article end.
   ========================================================= */
.nu-authorbox {
  margin-top: 2.5rem;
  display: flex;
  gap: 0.9rem;
  align-items: flex-start;
  padding: 1.125rem 1.25rem;
  border: 1px solid rgba(22, 19, 46, 0.1);
  border-left: 3px solid #4c51bf;
  border-radius: 12px;
  background: rgba(22, 19, 46, 0.02);
}
.nu-authorbox-mono {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 999px;
  background: #4c51bf;
  color: #ffffff;
  font-weight: 700;
  font-size: 1rem;
  flex: none;
}
.nu-authorbox-label {
  display: block;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(22, 19, 46, 0.5);
}
.nu-authorbox-name {
  font-weight: 600;
  color: #16132e;
  text-decoration: none;
  font-size: 1rem;
}
.nu-authorbox-name:hover {
  color: #4c51bf;
}
.nu-authorbox-bio {
  margin: 0.3rem 0 0;
  font-size: 0.85rem;
  color: rgba(22, 19, 46, 0.65);
  line-height: 1.5;
}

/* =========================================================
   In-article table of contents (pass 32). Jump list card
   before the first heading on multi-section posts.
   ========================================================= */
.nu-toc {
  margin: 0 0 2rem;
  padding: 1rem 1.25rem;
  border: 1px solid rgba(22, 19, 46, 0.1);
  border-radius: 14px;
  background: rgba(76, 81, 191, 0.04);
  max-width: 26rem;
}
.nu-toc-head {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(22, 19, 46, 0.5);
  margin-bottom: 0.5rem;
}
.nu-toc-list {
  margin: 0;
  padding-left: 1.15rem;
  display: grid;
  gap: 0.3rem;
  font-size: 0.88rem;
}
.nu-toc-list li::marker {
  color: #4c51bf;
}
.nu-toc-list a {
  color: #16132e;
  text-decoration: none;
}
.nu-toc-list a:hover {
  color: #4c51bf;
  text-decoration: underline;
}
.nu-toc-sub {
  margin-left: 1rem;
  font-size: 0.95em;
  list-style: circle;
}

/* =========================================================
   Filed-under category chips (pass 33). Real categories as
   accent pills at article end.
   ========================================================= */
.nu-filed {
  margin-top: 1.25rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.nu-filed-label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(22, 19, 46, 0.5);
}
.nu-filed-chip {
  display: inline-flex;
  padding: 0.25rem 0.75rem;
  border: 1px solid rgba(76, 81, 191, 0.35);
  border-radius: 999px;
  background: rgba(76, 81, 191, 0.05);
  color: #4c51bf;
  font-size: 0.78rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.nu-filed-chip:hover {
  background: #4c51bf;
  color: #ffffff;
}

/* =========================================================
   Freshness stamp (pass 34). Muted "Updated <date>" token in
   the meta row, injected by nu-totop.js when updated differs.
   ========================================================= */
.nu-fresh {
  font-size: 0.72rem;
  font-weight: 600;
  color: rgba(22, 19, 46, 0.45);
  white-space: nowrap;
}

/* =========================================================
   ToC scrollspy (pass 35). Accent state on the current
   section's jump-list link, toggled by nu-totop.js.
   ========================================================= */
.nu-toc-list a.nu-toc-active {
  color: #4c51bf;
  font-weight: 600;
}

/* =========================================================
   Category topic chips (pass 36). Sibling/child category
   pill row above the archive grid.
   ========================================================= */
.nu-catsub {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0 0 1.25rem;
}
.nu-catsub-chip {
  display: inline-flex;
  padding: 0.28rem 0.8rem;
  border: 1px solid rgba(76, 81, 191, 0.3);
  border-radius: 999px;
  background: rgba(76, 81, 191, 0.05);
  color: #4c51bf;
  font-size: 0.78rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.nu-catsub-chip:hover {
  background: #4c51bf;
  color: #ffffff;
}
.nu-catsub-chip.nu-catsub-current {
  background: #4c51bf;
  color: #ffffff;
}

/* =========================================================
   Search-results refine bar (pass 37). Prefilled form +
   result count above the results grid.
   ========================================================= */
.nu-sres {
  margin: 0 0 1.5rem;
  padding: 1.1rem 1.25rem 1rem;
  border: 1px solid rgba(76, 81, 191, 0.25);
  border-radius: 14px;
  background: rgba(76, 81, 191, 0.04);
}
.nu-sres-label {
  display: block;
  font-size: 1.05rem;
  font-weight: 700;
  color: #16132e;
  margin-bottom: 0.75rem;
}
.nu-sres-row {
  display: flex;
  gap: 0.6rem;
}
.nu-sres-input {
  flex: 1;
  min-width: 0;
  padding: 0.6rem 0.9rem;
  border: 1px solid rgba(76, 81, 191, 0.35);
  border-radius: 9px;
  font: inherit;
  color: #16132e;
  background: #ffffff;
}
.nu-sres-input:focus {
  outline: 2px solid rgba(76, 81, 191, 0.45);
  outline-offset: 1px;
}
.nu-sres-btn {
  padding: 0.6rem 1.3rem;
  border: 0;
  border-radius: 9px;
  background: #4c51bf;
  color: #ffffff;
  font-weight: 600;
  font-size: 0.92rem;
  cursor: pointer;
  transition: filter 0.15s ease;
}
.nu-sres-btn:hover {
  filter: brightness(1.08);
}
.nu-sres-count {
  margin: 0.6rem 0 0;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(22, 19, 46, 0.45);
}

/* =========================================================
   Archive sort controls (pass 38). Newest/Oldest/Title A–Z
   chip row above archive grids.
   ========================================================= */
.nu-sort {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 1.1rem;
}
.nu-sort-label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(22, 19, 46, 0.5);
}
.nu-sort-chip {
  display: inline-flex;
  padding: 0.24rem 0.7rem;
  border: 1px solid rgba(76, 81, 191, 0.3);
  border-radius: 999px;
  background: rgba(76, 81, 191, 0.05);
  color: #4c51bf;
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.nu-sort-chip:hover {
  background: #4c51bf;
  color: #ffffff;
}
.nu-sort-chip.nu-sort-current {
  background: #4c51bf;
  color: #ffffff;
}

/* =========================================================
   Reader font-size control (pass 39). A− / A / A+ chips in
   the meta row; scales .entry-content body text.
   ========================================================= */
.nu-fontctl {
  display: inline-flex;
  gap: 0.3rem;
  margin-left: 0.5rem;
  vertical-align: middle;
}
.nu-fontctl-btn {
  min-width: 1.7rem;
  padding: 0.12rem 0.35rem;
  border: 1px solid rgba(76, 81, 191, 0.3);
  border-radius: 7px;
  background: rgba(76, 81, 191, 0.05);
  color: #4c51bf;
  font-size: 0.72rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.nu-fontctl-btn:hover {
  background: #4c51bf;
  color: #ffffff;
}
.nu-fontctl-btn.nu-fontctl-on {
  background: #4c51bf;
  color: #ffffff;
}

/* =========================================================
   Freshness badge (pass 40). Accent "New" pill on card
   titles for posts under 21 days old.
   ========================================================= */
.nu-fresh {
  display: inline-block;
  margin-right: 0.45rem;
  padding: 0.08rem 0.45rem;
  border-radius: 999px;
  background: #4c51bf;
  color: #ffffff;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  vertical-align: middle;
  transform: translateY(-1px);
}

/* =========================================================
   Archive intelligence (pass 41). Reading-time chip on card
   titles + post-count line in the archive header band.
   ========================================================= */
.nu-card-rt {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.08rem 0.45rem;
  border: 1px solid rgba(76, 81, 191, 0.3);
  border-radius: 999px;
  background: rgba(76, 81, 191, 0.05);
  color: #4c51bf;
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  vertical-align: middle;
  transform: translateY(-1px);
  white-space: nowrap;
}
.nu-archive-count {
  display: block;
  margin: 0 0 0.9rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: rgba(22, 19, 46, 0.55);
}

/* =========================================================
   Updated badge (pass 42). Outlined "Updated" pill on cards
   for posts meaningfully revised after publish.
   ========================================================= */
.nu-fresh.nu-updated {
  background: rgba(76, 81, 191, 0.08);
  color: #4c51bf;
  border: 1px solid rgba(76, 81, 191, 0.35);
}

/* =========================================================
   Zero-results search guidance (pass 44). Topic chips + latest
   links inside a designed panel on search-no-results.
   ========================================================= */
.nu-none {
  margin: 1.2rem 0;
  padding: 1.4rem 1.5rem;
  border: 1px solid rgba(76, 81, 191, 0.18);
  border-radius: 0.9rem;
  background: rgba(76, 81, 191, 0.04);
}
.nu-none-title {
  margin: 0 0 0.35rem;
  font-size: 1.15rem;
  font-weight: 700;
  color: #16132e;
}
.nu-none-sub {
  margin: 0 0 0.9rem;
  font-size: 0.85rem;
  color: rgba(22, 19, 46, 0.6);
}
.nu-none-topics {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-bottom: 1rem;
}
.nu-none-chip {
  display: inline-block;
  padding: 0.3rem 0.75rem;
  border: 1px solid rgba(76, 81, 191, 0.3);
  border-radius: 999px;
  background: #fff;
  color: #4c51bf;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-decoration: none;
}
.nu-none-chip:hover {
  background: #4c51bf;
  color: #fff;
}
.nu-none-latest {
  display: grid;
  gap: 0.35rem;
}
.nu-none-link {
  font-size: 0.85rem;
  font-weight: 600;
  color: #16132e;
  text-decoration: none;
}
.nu-none-link:hover {
  color: #4c51bf;
}

/* =========================================================
   Copy-link share chip (pass 45). Copies the canonical URL to
   the clipboard from the filed-under row.
   ========================================================= */
.nu-share {
  margin-left: auto;
  padding: 0.3rem 0.8rem;
  border: 1px solid rgba(76, 81, 191, 0.35);
  border-radius: 999px;
  background: #fff;
  color: #4c51bf;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  cursor: pointer;
}
.nu-share:hover,
.nu-share.nu-share-done {
  background: #4c51bf;
  color: #fff;
  border-color: #4c51bf;
}

/* =========================================================
   404 browse-ramp (pass 46). Real category chips + latest posts
   inside the branded 404 — dead end becomes a directory.
   ========================================================= */
.nftu-404-ramp {
  margin-top: 1.6rem;
  text-align: left;
}
.nftu-404-ramp .nu-none-topics {
  margin-bottom: 1rem;
}

/* =========================================================
   Sticky section rail (pass 47). A right-edge dot-nav cloned
   from the in-article ToC on wide viewports — scrollspy-synced
   anchors for long records without stealing content width.
   ========================================================= */
.nu-rail {
  display: none;
}
@media (min-width: 1360px) {
  .nu-rail {
    position: fixed;
    right: 18px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 60;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: 180px;
  }
  .nu-rail a {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.45rem;
    font-size: 0;
    line-height: 1;
    text-decoration: none;
    color: rgba(22, 19, 46, 0.45);
  }
  .nu-rail a::after {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 999px;
    background: rgba(76, 81, 191, 0.35);
    flex: none;
    transition: transform 0.15s ease, background 0.15s ease;
  }
  .nu-rail a:hover,
  .nu-rail a.nu-rail-active {
    font-size: 0.68rem;
    font-weight: 700;
    color: #16132e;
  }
  .nu-rail a.nu-rail-active::after {
    background: #4c51bf;
    transform: scale(1.35);
  }
}

/* =========================================================
   Share cluster (pass 48). The copy-link chip grows into a
   real share group: outbound share intent links to X,
   Facebook and Reddit as accent-ringed icon buttons beside
   the copy pill. Icons carry no ↗ marker (they're affordances,
   not content links).
   ========================================================= */
.nu-sharegrp {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.nu-sharegrp .nu-share {
  margin-left: 0;
}
.nu-share-a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid rgba(76, 81, 191, 0.35);
  border-radius: 999px;
  color: #4c51bf;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.nu-share-a svg {
  fill: currentColor;
  display: block;
}
.nu-share-a:hover {
  background: #4c51bf;
  border-color: #4c51bf;
  color: #fff;
}
article a.nu-share-a::after,
.entry-content a.nu-share-a::after {
  content: none;
}

/* =========================================================
   Author profile band (pass 49). Author archives open with a
   designed profile card — accent monogram, display name, real
   published count and (when set) the user's bio — instead of a
   bare "Author: X" header row.
   ========================================================= */
.nu-author-band {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  margin: 0 0 1.4rem;
  padding: 1.1rem 1.3rem;
  background: #fff;
  border: 1px solid rgba(22, 19, 46, 0.09);
  border-radius: 16px;
}
.nu-author-band-mono {
  width: 52px;
  height: 52px;
  border-radius: 999px;
  background: #4c51bf;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  font-weight: 800;
  flex: none;
}
.nu-author-band-meta {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.nu-author-band-meta strong {
  font-size: 1.05rem;
  color: #16132e;
}
.nu-author-band-meta span {
  font-size: 0.78rem;
  color: rgba(22, 19, 46, 0.55);
}
.nu-author-band-desc {
  margin-top: 0.25rem;
}

/* =========================================================
   Search-term highlighting (pass 50). On search results the
   matched terms in card titles and excerpts are wrapped in
   accent-tinted marks so the relevance of each result is
   visible at a glance.
   ========================================================= */
mark.nu-mark {
  background: rgba(76, 81, 191, 0.14);
  color: inherit;
  padding: 0 0.12em;
  border-radius: 3px;
}

/* =========================================================
   Designed dropdown menu panels (pass 51). Desktop primary
   nav sub-menus render as white card panels — rounded,
   shadowed, token-weight links with accent hover — instead of
   the theme's flat dark default strip.
   ========================================================= */
@media (min-width: 1025px) {
  .site-header .main-navigation .menu-item-has-children .sub-menu {
    background: #fff;
    border: 1px solid rgba(22, 19, 46, 0.09);
    border-radius: 12px;
    box-shadow: 0 12px 30px rgba(22, 19, 46, 0.14);
    padding: 0.5rem;
    min-width: 220px;
  }
  .site-header .main-navigation .menu-item-has-children .sub-menu li a {
    background: transparent;
    color: #16132e;
    font-weight: 600;
    font-size: 0.85rem;
    border-radius: 8px;
    padding: 0.55em 0.8em;
  }
  .site-header .main-navigation .menu-item-has-children .sub-menu li a:hover,
  .site-header .main-navigation .menu-item-has-children .sub-menu li a:focus {
    background: rgba(76, 81, 191, 0.08);
    color: #4c51bf;
  }
}

/* =========================================================
   Archive description surface (pass 52). Category archives
   render the real curated category description under the
   title row — previously it only reached meta tags.
   ========================================================= */
.nu-arch-desc {
  margin: 0 0 1.1rem;
  font-size: 0.92rem;
  line-height: 1.65;
  color: rgba(22, 19, 46, 0.66);
  max-width: 64ch;
}
.nu-arch-desc a {
  color: #4c51bf;
}

/* =========================================================
   Topic RSS subscribe chip (pass 53). Category archives
   surface their real feed as a right-aligned chip in the
   sort row — live subscribe surface per topic.
   ========================================================= */
.nu-sort-rss {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
  padding: 0.24rem 0.7rem;
  border: 1px solid rgba(76, 81, 191, 0.3);
  border-radius: 999px;
  color: #4c51bf;
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
}
.nu-sort-rss:hover,
.nu-sort-rss:focus {
  background: #4c51bf;
  color: #ffffff;
}

/* =========================================================
   Archive breadcrumb trail (pass 54). Category and author
   archives get a real Home / ... / Here crumb row at the
   top of the archive band — IA context singular posts
   already had.
   ========================================================= */
.nu-crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 0.7rem;
  font-size: 0.76rem;
  font-weight: 600;
}
.nu-crumbs a {
  color: #4c51bf;
  text-decoration: none;
}
.nu-crumbs a:hover,
.nu-crumbs a:focus {
  text-decoration: underline;
}
.nu-crumbs span:last-child {
  color: rgba(22, 19, 46, 0.6);
}
.nu-crumb-sep {
  color: rgba(22, 19, 46, 0.35);
}

/* =========================================================
   Comment CTA chip (pass 55). A comments_open()-gated
   "Comment" pill beside the share cluster — only renders on
   posts with an open discussion; scrolls to #respond.
   ========================================================= */
.nu-cta-comment {
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
  margin-left: 0.45rem;
  padding: 0.24rem 0.7rem;
  border: 1px solid rgba(76, 81, 191, 0.3);
  border-radius: 999px;
  color: #4c51bf;
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
}
.nu-cta-comment:hover,
.nu-cta-comment:focus {
  background: #4c51bf;
  color: #fff;
}

/* =========================================================
   Archive card lift (pass 56). Loop cards get a transform/
   shadow-only hover raise + accent border tint, and the lead
   card of each archive/search gets an accent top rail —
   lifts the top-of-list entry without invented labels.
   ========================================================= */
body.archive article.loop-entry,
body.search article.loop-entry,
body.single .entry-related article.loop-entry {
	transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}
body.archive article.loop-entry:hover,
body.archive article.loop-entry:focus-within,
body.search article.loop-entry:hover,
body.search article.loop-entry:focus-within,
body.single .entry-related article.loop-entry:hover,
body.single .entry-related article.loop-entry:focus-within {
	transform: translateY(-3px);
	box-shadow: 0 10px 30px rgba(22, 19, 46, 0.1);
	border-color: rgba(76, 81, 191, 0.35);
}
body.archive #archive-container > li.entry-list-item:first-of-type article.loop-entry,
body.search #archive-container > li.entry-list-item:first-of-type article.loop-entry {
	border-top: 3px solid #4c51bf;
}
@media (prefers-reduced-motion: reduce) {
	body.archive article.loop-entry,
	body.search article.loop-entry,
	body.single .entry-related article.loop-entry {
		transition: none;
	}
}

/* =========================================================
   Card meta pill row (pass 57). The By/Posted-on meta inside
   archive/search cards becomes a quiet chip row — muted
   pills matching the site's chip vocabulary instead of bare
   dot-separated text.
   ========================================================= */
body.archive article.loop-entry .entry-meta,
body.search article.loop-entry .entry-meta,
body.single .entry-related article.loop-entry .entry-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
	font-size: 0.75rem;
}
body.archive article.loop-entry .entry-meta .posted-by,
body.search article.loop-entry .entry-meta .posted-by,
body.archive article.loop-entry .entry-meta .posted-on,
body.search article.loop-entry .entry-meta .posted-on,
body.single .entry-related article.loop-entry .entry-meta .posted-by,
body.single .entry-related article.loop-entry .entry-meta .posted-on {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.2rem 0.65rem;
	border: 1px solid rgba(76, 81, 191, 0.16);
	border-radius: 999px;
	background: rgba(76, 81, 191, 0.05);
	color: rgba(22, 19, 46, 0.72);
	font-weight: 500;
}
body.archive article.loop-entry .entry-meta a,
body.search article.loop-entry .entry-meta a,
body.single .entry-related article.loop-entry .entry-meta a {
	color: inherit;
	text-decoration: none;
}
body.archive article.loop-entry .entry-meta a:hover,
body.search article.loop-entry .entry-meta a:hover,
body.single .entry-related article.loop-entry .entry-meta a:hover {
	color: #4c51bf;
}
body.archive article.loop-entry .entry-meta .meta-label,
body.search article.loop-entry .entry-meta .meta-label,
body.single .entry-related article.loop-entry .entry-meta .meta-label {
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: rgba(22, 19, 46, 0.45);
}

/* =========================================================
   Static-page header band (pass 58). Pages (About etc.)
   still render the stock bare h1 while posts get the
   designed band — mirror the single-post header treatment
   on body.page. CSS-only.
   ========================================================= */
body.page:not(.home) .entry-header {
	background:
		radial-gradient(600px 180px at 100% 0%, rgba(167, 139, 250, 0.10), transparent 60%),
		#f8f7ff;
	border: 1px solid #e6e4f5;
	border-radius: 10px;
	padding: clamp(1.5rem, 4vw, 2.5rem) clamp(1.25rem, 4vw, 2.5rem);
	margin-bottom: 1.5rem;
}
body.page:not(.home) .entry-header .entry-title {
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: #16132e;
	margin-bottom: 0;
}
@media (max-width: 640px) {
	body.page:not(.home) .entry-header { padding: 1.25rem 1rem; }
}

/* =========================================================
   NU VISUAL RESCUE (pass 58.5 — dedicated audit).
   Repairs five real live defects found on the production site:

   1. GRID CONTAINMENT — the archive posts grid renders
      loop_start emitters (crumbs, count, intro, topic chips,
      sort) as grid COLUMNS, producing vertical chip towers.
      Every non-item child now spans the full grid row.
   2. SPLIT ARCHIVE BAND — the h1 was a lone pill floating
      above a separate description band; unify into one band.
   3. DUPLICATED INTRO — .nu-arch-desc repeats the hero's
      .archive-description verbatim; hide the grid duplicate.
   4. RAIL LABEL LEAK — the active rail link printed its text
      at the viewport edge; labels now appear on hover only.
   5. HERO BADGE — the figcaption badge rendered concatenated
      spans ("NUNFTUniverseThe..."); now a real chip.
   ========================================================= */

/* 1 — any emitter inside the posts grid is a full-width row. */
ul.content-wrap.kadence-posts-list > *:not(li) {
	grid-column: 1 / -1;
}

/* 2 — one unified archive band (title + description). */
body.archive .entry-header.post-archive-title {
	background:
		radial-gradient(640px 200px at 100% 0%, rgba(167, 139, 250, 0.12), transparent 62%),
		#f8f7ff;
	border: 1px solid #e6e4f5;
	border-radius: 14px;
	padding: clamp(1.75rem, 4.5vw, 2.75rem) clamp(1.25rem, 4vw, 2.5rem);
	margin-bottom: 1.5rem;
	text-align: center;
}
body.archive .entry-header .archive-title,
body.archive .entry-header .archive-title:has(+ .archive-description) {
	background: none;
	border: none;
	border-radius: 0;
	padding: 0;
	margin: 0 0 0.45rem;
	font-size: clamp(1.9rem, 4.2vw, 2.6rem);
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: #16132e;
}
body.archive .entry-header .archive-description {
	background: none;
	border: none;
	border-radius: 0;
	padding: 0;
	margin: 0 auto;
	max-width: 52rem;
	color: #6b6790;
	font-size: 1.02rem;
	line-height: 1.55;
}
@media (max-width: 640px) {
	body.archive .entry-header.post-archive-title { padding: 1.25rem 1rem; }
}

/* 3 — hero already prints the same description; kill the grid duplicate. */
.nu-arch-desc { display: none; }

/* 4 — rail labels appear on hover only; active keeps the accent dot. */
@media (min-width: 1360px) {
	.nu-rail a.nu-rail-active {
		font-size: 0;
		font-weight: 500;
		color: rgba(22, 19, 46, 0.45);
	}
	.nu-rail a.nu-rail-active::after {
		background: #4c51bf;
		transform: scale(1.35);
	}
}

/* 5 — hero badge: identity plate over the illustration (mirrors the design
layer so the plate survives a customizer-css reset). */
.nftu-hero-img {
	position: relative;
}
.nftu-hero-badge {
	position: absolute;
	left: 14px;
	bottom: 14px;
	margin-top: 0;
	display: flex;
	align-items: center;
	gap: 0.55rem;
	padding: 0.42rem 0.85rem 0.42rem 0.45rem;
	border-radius: 999px;
	background: rgba(11, 10, 30, 0.74);
	border: 1px solid rgba(255, 255, 255, 0.16);
	color: #fff;
	text-align: left;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.nftu-hero-badge .nftu-mono {
	display: grid;
	place-items: center;
	flex: 0 0 auto;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: linear-gradient(135deg, #7d6ff5, #5b4fd8);
	color: #fff;
	font-size: 0.66rem;
	font-weight: 800;
	letter-spacing: 0.02em;
}
.nftu-hero-badge .nftu-hero-badge-text {
	display: flex;
	flex-direction: column;
	line-height: 1.15;
}
.nftu-hero-badge .nftu-hero-badge-sub {
	font-size: 0.58rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: none;
	opacity: 0.72;
}
@supports (backdrop-filter: blur(1px)) {
	.nftu-hero-badge { backdrop-filter: blur(6px); }
}
@media (max-width: 480px) {
	.nftu-hero-badge { left: 10px; bottom: 10px; font-size: 0.66rem; }
}

/* =========================================================
   Lead feature card (pass 60). nu archives have real featured
   images, so the first card on page 1 becomes a two-column
   hero — image left edge-to-edge, title + full excerpt right —
   instead of another uniform cell. Page 2+ keeps the even
   grid (body.paged guard). CSS-only; markup/URLs unchanged.
   ========================================================= */
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type {
	grid-column: 1 / -1;
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
	padding: 0;
	overflow: hidden;
	border-left: 4px solid #4c51bf;
	background:
		radial-gradient(700px 240px at 100% 0%, rgba(76, 81, 191, 0.06), transparent 60%),
		#ffffff;
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .post-thumbnail,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .post-thumbnail {
	height: 100%;
	min-height: 280px;
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .post-thumbnail-inner,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .post-thumbnail-inner {
	inset: 0;
	height: 100%;
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .post-thumbnail img,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .post-thumbnail img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-content-wrap,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-content-wrap {
	padding: clamp(1.5rem, 3vw, 2.4rem);
	display: flex;
	flex-direction: column;
	justify-content: center;
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-title,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-title {
	font-size: clamp(1.55rem, 3vw, 2.1rem);
}
body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-summary,
body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .entry-summary {
	font-size: 1.02rem;
	line-height: 1.65;
}
@media (max-width: 820px) {
	body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry,
	body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry {
		grid-template-columns: minmax(0, 1fr);
		border-left-width: 3px;
	}
	body.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .post-thumbnail,
	body.search:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .post-thumbnail {
		min-height: 200px;
	}
}

/* ---------------------------------------------------------------
   Dense archive view (pass 66). The sort row's View group toggles
   ?density=compact -> body.nu-dense: a 4-up tight grid with the
   excerpt/read-more/byline folded away for fast registry scans.
   --------------------------------------------------------------- */
body.nu-dense.archive ul.content-wrap.kadence-posts-list,
body.nu-dense.search ul.content-wrap.kadence-posts-list,
body.nu-dense.blog ul.content-wrap.kadence-posts-list {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.9rem;
}
body.nu-dense article.loop-entry .post-thumbnail {
	height: 110px;
	padding-bottom: 0;
}
body.nu-dense article.loop-entry .entry-content-wrap {
	padding: 0.9rem 1rem 1rem;
}
body.nu-dense article.loop-entry .entry-title {
	font-size: 1rem;
	line-height: 1.35;
}
body.nu-dense article.loop-entry .entry-summary,
body.nu-dense article.loop-entry .post-more-link,
body.nu-dense article.loop-entry .entry-meta .posted-by {
	display: none;
}
body.nu-dense article.loop-entry .entry-meta {
	font-size: 0.68rem;
	gap: 0.3rem;
}
body.nu-dense.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type {
	grid-column: span 2;
}
body.nu-dense.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry {
	display: block;
}
body.nu-dense.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type article.loop-entry .post-thumbnail {
	min-height: 0;
	height: 150px;
	padding-bottom: 0;
}
body.nu-dense.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type .entry-content-wrap {
	padding: 0.9rem 1rem 1rem;
}
body.nu-dense.archive:not(.paged) #archive-container > li.entry-list-item:first-of-type .entry-title {
	font-size: 1.35rem;
}
@media (max-width: 1080px) {
	body.nu-dense.archive ul.content-wrap.kadence-posts-list,
	body.nu-dense.search ul.content-wrap.kadence-posts-list,
	body.nu-dense.blog ul.content-wrap.kadence-posts-list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (max-width: 700px) {
	body.nu-dense.archive ul.content-wrap.kadence-posts-list,
	body.nu-dense.search ul.content-wrap.kadence-posts-list,
	body.nu-dense.blog ul.content-wrap.kadence-posts-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 460px) {
	body.nu-dense.archive ul.content-wrap.kadence-posts-list,
	body.nu-dense.search ul.content-wrap.kadence-posts-list,
	body.nu-dense.blog ul.content-wrap.kadence-posts-list {
		grid-template-columns: 1fr;
	}
}

/* ---------------------------------------------------------------
   Live search dropdown (pass 72). nu-search-live.js renders
   debounced /wp-json hits under every search input — a designed
   card with hit rows + an "All results" footer link.
   --------------------------------------------------------------- */
form.nu-live-wrap {
	position: relative;
}
.nu-search-drop {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	right: 0;
	z-index: 60;
	display: none;
	background: #fff;
	border: 1px solid #e6e4f5;
	border-radius: 12px;
	box-shadow: 0 12px 32px rgba(22, 19, 46, 0.14), 0 2px 6px rgba(22, 19, 46, 0.08);
	overflow: hidden;
}
.nu-search-drop.is-open {
	display: block;
}
.nu-search-drop-head {
	padding: 0.45rem 0.8rem;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	color: #6b6790;
	border-bottom: 1px solid #e6e4f5;
}
.nu-hit-title {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
a.nu-search-hit {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.6rem;
	padding: 0.55rem 0.8rem;
	font-size: 0.85rem;
	color: #16132e;
	text-decoration: none;
}
a.nu-search-hit:hover,
a.nu-search-hit:focus {
	background: #fafaff;
	outline: none;
}
a.nu-search-hit + a.nu-search-hit {
	border-top: 1px solid #e6e4f5;
}
.nu-hit-kind {
	flex: 0 0 auto;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #4c51bf;
	background: rgba(76, 81, 191, 0.1);
	border-radius: 999px;
	padding: 0.15rem 0.5rem;
}
a.nu-search-all {
	display: block;
	padding: 0.55rem 0.8rem;
	font-size: 0.82rem;
	font-weight: 600;
	color: #4c51bf;
	text-decoration: none;
	border-top: 1px solid #e6e4f5;
	background: #fafaff;
}
a.nu-search-all:hover,
a.nu-search-all:focus {
	color: #3a3f96;
	outline: none;
}

/* ---------------------------------------------------------------
   Progressive archive loading (pass 78). nu-loadmore.js fetches the
   next archive page and appends its real card markup.
   --------------------------------------------------------------- */
.nu-loadmore-wrap {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	grid-column: 1 / -1;
	margin: 1.4rem 0 0.6rem;
}
button.nu-loadmore-btn {
	font: inherit;
	font-size: 0.88rem;
	font-weight: 600;
	color: #4c51bf;
	background: #fff;
	border: 1.5px solid #4c51bf;
	border-radius: 999px;
	padding: 0.6rem 1.6rem;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}
button.nu-loadmore-btn:hover:not(:disabled),
button.nu-loadmore-btn:focus:not(:disabled) {
	background: #4c51bf;
	color: #fff;
	box-shadow: 0 4px 14px rgba(76, 81, 191, 0.25);
	outline: none;
}
button.nu-loadmore-btn:disabled {
	opacity: 0.55;
	cursor: default;
}
.nu-loadmore-status {
	font-size: 0.8rem;
	color: #6b6790;
}
li.nu-loadmore-sep {
	list-style: none;
	grid-column: 1 / -1;
	display: flex;
	align-items: center;
	gap: 0.9rem;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #6b6790;
	margin: 0.5rem 0 0.15rem;
	padding: 0;
}
li.nu-loadmore-sep::before,
li.nu-loadmore-sep::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: #e6e4f5;
}
li.nu-loadmore-sep::before {
	max-width: 2.5rem;
}

/* ---------------------------------------------------------------
   Command palette (pass 84). Ctrl/Cmd+K opens a site-wide search
   overlay powered by /wp-json — discoverable via a Ctrl+K chip in
   the nav search form.
   --------------------------------------------------------------- */
body.nu-pal-open {
	overflow: hidden;
}
.nu-pal-backdrop {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: none;
	background: rgba(22, 19, 46, 0.45);
	backdrop-filter: blur(2px);
	padding: 12vh 1rem 1rem;
}
.nu-pal-backdrop.is-open {
	display: block;
}
.nu-pal {
	max-width: 34rem;
	margin: 0 auto;
	background: #fff;
	border: 1px solid #e6e4f5;
	border-radius: 16px;
	box-shadow: 0 24px 64px rgba(22, 19, 46, 0.28), 0 4px 12px rgba(22, 19, 46, 0.12);
	overflow: hidden;
}
.nu-pal-input {
	width: 100%;
	font: inherit;
	font-size: 1rem;
	padding: 0.9rem 1.1rem;
	border: none;
	border-bottom: 1px solid #e6e4f5;
	outline: none;
	background: #fff;
	color: #16132e;
}
.nu-pal-list {
	max-height: 22rem;
	overflow-y: auto;
}
.nu-pal-hint {
	padding: 0.8rem 1.1rem;
	font-size: 0.82rem;
	color: #6b6790;
}
a.nu-pal-hit {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.6rem;
	padding: 0.6rem 1.1rem;
	font-size: 0.9rem;
	color: #16132e;
	text-decoration: none;
}
a.nu-pal-hit:hover,
a.nu-pal-hit:focus {
	background: #fafaff;
	outline: none;
}
a.nu-pal-hit + a.nu-pal-hit {
	border-top: 1px solid #e6e4f5;
}
.nu-pal-hit-title {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.nu-pal-hit-kind {
	flex: 0 0 auto;
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #4c51bf;
	background: #fafaff;
	border: 1px solid #e6e4f5;
	border-radius: 999px;
	padding: 0.15rem 0.5rem;
}
a.nu-pal-all {
	display: block;
	padding: 0.6rem 1.1rem;
	font-size: 0.85rem;
	font-weight: 600;
	color: #4c51bf;
	text-decoration: none;
	border-top: 1px solid #e6e4f5;
	background: #fafaff;
}
a.nu-pal-all:hover,
a.nu-pal-all:focus {
	color: #343a9a;
	outline: none;
}
.nu-pal-foot {
	display: flex;
	gap: 1rem;
	padding: 0.5rem 1.1rem;
	font-size: 0.72rem;
	color: #6b6790;
	border-top: 1px solid #e6e4f5;
	background: #fafaff;
}
.nu-pal-foot kbd,
.nu-pal-chip kbd {
	font: inherit;
	font-size: 0.68rem;
	font-weight: 700;
	background: #fff;
	border: 1px solid #e6e4f5;
	border-bottom-width: 2px;
	border-radius: 4px;
	padding: 0.05rem 0.35rem;
}
button.nu-pal-chip {
	flex: 0 0 auto;
	display: inline-flex;
	gap: 2px;
	font: inherit;
	background: none;
	border: none;
	padding: 0.15rem;
	cursor: pointer;
	opacity: 0.75;
}
button.nu-pal-chip:hover,
button.nu-pal-chip:focus {
	opacity: 1;
	outline: none;
}
@media (max-width: 700px) {
	.nu-pal-foot {
		display: none;
	}
}

/* ---------------------------------------------------------------
   Resume reading (pass 90). nu-resume.js remembers scroll depth per
   article; this chip offers one-click return on revisit.
   --------------------------------------------------------------- */
button.nu-resume-chip {
	position: fixed;
	left: 1.1rem;
	bottom: 1.1rem;
	z-index: 110;
	font: inherit;
	font-size: 0.8rem;
	font-weight: 600;
	color: #4c51bf;
	background: #fff;
	border: 1.5px solid #4c51bf;
	border-radius: 999px;
	padding: 0.5rem 1.1rem;
	cursor: pointer;
	box-shadow: 0 8px 24px rgba(22, 19, 46, 0.18);
	opacity: 0;
	transform: translateY(8px);
	transition: opacity 0.3s ease, transform 0.3s ease, background 0.15s ease, color 0.15s ease;
}
button.nu-resume-chip.is-visible {
	opacity: 1;
	transform: translateY(0);
}
button.nu-resume-chip:hover,
button.nu-resume-chip:focus {
	background: #4c51bf;
	color: #fff;
	outline: none;
}

/* Search topic filter (pass 96). Category chips narrowing a search
   via the native 'cat' query var, under the refine bar. */
.nu-stopic {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.45rem;
	margin: -0.4rem 0 1.1rem;
}
.nu-stopic-label {
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #6b6790;
}
.nu-stopic-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.24rem 0.7rem;
	border: 1px solid rgba(76, 81, 191, 0.3);
	border-radius: 999px;
	background: rgba(76, 81, 191, 0.06);
	color: #4c51bf;
	font-size: 0.75rem;
	font-weight: 600;
	text-decoration: none;
	transition: background 0.15s ease, color 0.15s ease;
}
.nu-stopic-chip:hover {
	background: #4c51bf;
	color: #ffffff;
}
.nu-stopic-chip.nu-stopic-current {
	background: #4c51bf;
	color: #ffffff;
}
.nu-stopic-n {
	opacity: 0.65;
	font-size: 0.9em;
}

/* Link previews (pass 102). Floating title + excerpt card shown on
   hover/focus of internal article links; positioned by nu-previews.js. */
.nu-peek {
	position: absolute;
	z-index: 140;
	display: none;
	flex-direction: column;
	gap: 0.3rem;
	padding: 0.75rem 0.9rem;
	background: #ffffff;
	border: 1px solid #e3e3f0;
	border-left: 3px solid #4c51bf;
	border-radius: 10px;
	box-shadow: 0 12px 32px rgba(22, 19, 46, 0.18);
	pointer-events: none;
}
.nu-peek.is-visible {
	display: flex;
}
.nu-peek-kind {
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #4c51bf;
}
.nu-peek-title {
	font-size: 0.82rem;
	font-weight: 600;
	line-height: 1.35;
	color: #16132e;
}
.nu-peek-ex {
	font-size: 0.75rem;
	line-height: 1.5;
	color: #6b6790;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* Contextual reading bar (pass 108). Slim bar pinned under the sticky
   header on articles once the reader passes the title. */
.nu-cbar {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 120;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.45rem 1.1rem;
	background: rgba(255, 255, 255, 0.97);
	border-bottom: 1px solid #e3e3f0;
	box-shadow: 0 4px 18px rgba(22, 19, 46, 0.08);
	transform: translateY(-110%);
	transition: transform 0.28s ease;
	pointer-events: none;
}
.nu-cbar.is-on {
	transform: translateY(0);
}
.nu-cbar-title {
	font-size: 0.8rem;
	font-weight: 600;
	color: #16132e;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 78vw;
}
.nu-cbar-title::before {
	content: "";
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 2px;
	background: #4c51bf;
	margin-right: 0.5rem;
	vertical-align: 1px;
}
.nu-cbar-pct {
	flex-shrink: 0;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: #4c51bf;
	background: rgba(76, 81, 191, 0.1);
	border: 1px solid rgba(76, 81, 191, 0.3);
	border-radius: 999px;
	padding: 0.12rem 0.55rem;
}
@media (max-width: 640px) {
	.nu-cbar-title {
		max-width: 62vw;
		font-size: 0.72rem;
	}
}

/* Save-for-later (pass 114). Persistent reading list: ☆/★ chip in the
   article meta row + floating shelf of saved reads. */
.nu-save {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.2rem 0.65rem;
	font: inherit;
	font-size: 0.72rem;
	font-weight: 600;
	color: #4c51bf;
	background: rgba(76, 81, 191, 0.08);
	border: 1px solid rgba(76, 81, 191, 0.32);
	border-radius: 999px;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}
.nu-save:hover {
	background: rgba(76, 81, 191, 0.16);
}
.nu-save.is-saved {
	color: #ffffff;
	background: #4c51bf;
	border-color: #4c51bf;
}
.nu-shelf {
	position: fixed;
	left: 1rem;
	bottom: 1rem;
	z-index: 130;
	display: none;
}
.nu-shelf.has-items {
	display: block;
}
.nu-shelf-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.5rem 0.8rem;
	font: inherit;
	font-size: 0.85rem;
	font-weight: 700;
	color: #ffffff;
	background: #4c51bf;
	border: 0;
	border-radius: 999px;
	box-shadow: 0 8px 22px rgba(76, 81, 191, 0.4);
	cursor: pointer;
}
.nu-shelf-panel {
	position: absolute;
	left: 0;
	bottom: calc(100% + 0.6rem);
	width: 280px;
	max-height: 320px;
	overflow-y: auto;
	display: none;
	flex-direction: column;
	background: #ffffff;
	border: 1px solid #e3e3f0;
	border-radius: 12px;
	box-shadow: 0 16px 40px rgba(22, 19, 46, 0.2);
}
.nu-shelf-panel.is-open {
	display: flex;
}
.nu-shelf-head {
	padding: 0.6rem 0.9rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #6b6790;
	border-bottom: 1px solid #e3e3f0;
}
.nu-shelf-empty {
	padding: 0.8rem 0.9rem;
	font-size: 0.78rem;
	color: #6b6790;
}
.nu-shelf-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	padding: 0.55rem 0.9rem;
	font-size: 0.8rem;
	line-height: 1.35;
	color: #16132e;
	text-decoration: none;
	border-bottom: 1px solid #e3e3f0;
}
.nu-shelf-item:last-child {
	border-bottom: 0;
}
.nu-shelf-item:hover {
	background: #f4f4fb;
	color: #4c51bf;
}
.nu-shelf-item-x {
	flex-shrink: 0;
	width: 18px;
	height: 18px;
	line-height: 16px;
	text-align: center;
	border-radius: 50%;
	font-size: 0.85rem;
	color: #6b6790;
}
.nu-shelf-item-x:hover {
	background: rgba(76, 81, 191, 0.15);
	color: #4c51bf;
}

/* Since-your-last-visit (pass 120). Slim banner on listings naming the
   articles published since the reader's prior visit. */
.nu-since {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.4rem 0.75rem;
	padding: 0.6rem 1rem;
	margin: 0 0 1.25rem;
	background: rgba(76, 81, 191, 0.06);
	border: 1px solid rgba(76, 81, 191, 0.25);
	border-radius: 12px;
	font-size: 0.8rem;
}
.nu-since-count {
	font-weight: 700;
	color: #4c51bf;
	white-space: nowrap;
}
.nu-since-list {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 0.35rem 0.85rem;
	min-width: 0;
}
.nu-since-item {
	color: #16132e;
	text-decoration: none;
	border-bottom: 1px dotted rgba(76, 81, 191, 0.45);
}
.nu-since-item:hover {
	color: #4c51bf;
	border-bottom-style: solid;
}
.nu-since-more {
	color: #6b6790;
	font-weight: 600;
}

/* Keyboard navigation (pass 126). j/k selection ring + ? shortcuts sheet. */
.nu-keysel {
	outline: 2px solid #4c51bf !important;
	outline-offset: 3px;
	border-radius: 10px;
	scroll-margin-top: 40vh;
}
.entry-content h2.nu-keysel,
.entry-content h3.nu-keysel {
	outline-width: 0;
	border-left: 4px solid #4c51bf;
	padding-left: 0.5rem;
}
.nu-keysheet {
	position: fixed;
	inset: 0;
	z-index: 140;
	display: none;
	align-items: center;
	justify-content: center;
	background: rgba(22, 19, 46, 0.45);
	backdrop-filter: blur(2px);
}
.nu-keysheet.is-open {
	display: flex;
}
.nu-keysheet-card {
	background: #ffffff;
	border: 1px solid #e3e3f0;
	border-radius: 14px;
	box-shadow: 0 24px 60px rgba(22, 19, 46, 0.3);
	padding: 1.1rem 1.4rem;
	min-width: 280px;
}
.nu-keysheet-head {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #6b6790;
	margin-bottom: 0.7rem;
}
.nu-keysheet-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.45rem;
}
.nu-keysheet-list li {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	font-size: 0.82rem;
	color: #16132e;
}
.nu-keysheet-list kbd {
	font-family: inherit;
	font-size: 0.72rem;
	font-weight: 700;
	padding: 0.12rem 0.45rem;
	background: #f4f4fb;
	border: 1px solid #e3e3f0;
	border-bottom-width: 2px;
	border-radius: 6px;
	color: #4c51bf;
}

/* Related posts band (leg 13) — same-topic siblings at article end. */
.nu-related {
	grid-column: 1 / -1;
	margin-top: 2.2rem;
	padding: 1.3rem 1.4rem;
	background: #f4f4fb;
	border: 1px solid #e3e3f0;
	border-radius: 14px;
}
.nu-related-title {
	margin: 0 0 0.9rem;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #4c51bf;
}
.nu-related-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 0.8rem;
}
.nu-related-card {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	padding: 0.85rem 1rem;
	background: #ffffff;
	border: 1px solid #e3e3f0;
	border-radius: 10px;
	text-decoration: none;
	transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
}
.nu-related-card:hover,
.nu-related-card:focus-visible {
	transform: translateY(-2px);
	border-color: #4c51bf;
	box-shadow: 0 6px 18px rgba(76, 81, 191, 0.16);
}
.nu-related-date {
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #6b6790;
}
.nu-related-name {
	font-size: 0.88rem;
	font-weight: 650;
	line-height: 1.35;
	color: #16132e;
}

/* Select-to-copy quote chip (leg 14) — floats above a text selection. */
.nu-quote {
	position: absolute;
	z-index: 150;
	display: none;
	padding: 0.42rem 0.85rem;
	background: #4c51bf;
	border: none;
	border-radius: 999px;
	box-shadow: 0 8px 22px rgba(76, 81, 191, 0.38);
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: #ffffff;
	cursor: pointer;
	transition: opacity 0.15s ease, transform 0.15s ease;
}
.nu-quote.is-open {
	display: block;
	animation: nuquotein 0.16s ease;
}
@keyframes nuquotein {
	from { opacity: 0; transform: translateY(4px); }
	to { opacity: 1; transform: translateY(0); }
}

/* Recently-viewed rail (leg 16) — prior articles at article end. */
.nu-recent {
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	flex-wrap: wrap;
	margin-top: 2rem;
	padding-top: 1.25rem;
	border-top: 1px solid #e3e3f0;
}
.nu-recent-label {
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #6b6790;
	white-space: nowrap;
}
.nu-recent-row {
	display: flex;
	gap: 0.5rem;
	flex-wrap: wrap;
}
.nu-recent-chip {
	display: inline-block;
	padding: 0.3rem 0.75rem;
	border: 1px solid #e3e3f0;
	border-radius: 999px;
	background: #f4f4fb;
	color: #16132e;
	font-size: 0.8rem;
	font-weight: 600;
	text-decoration: none;
	transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.nu-recent-chip:hover {
	border-color: #4c51bf;
	color: #4c51bf;
	background: #ffffff;
}

/* Listen-to-article chip (leg 17) — meta-row Web Speech control. */
.nu-listen {
	display: inline-block;
	padding: 0.22rem 0.7rem;
	border: 1px solid #4c51bf;
	border-radius: 999px;
	background: transparent;
	color: #4c51bf;
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	cursor: pointer;
	vertical-align: middle;
	transition: background 0.15s ease, color 0.15s ease;
}
.nu-listen:hover {
	background: #4c51bf;
	color: #ffffff;
}
.nu-listen.is-on {
	background: #4c51bf;
	color: #ffffff;
}

/* Focus mode (leg 18) — meta-row chip hides chrome for distraction-free reading. */
.nu-focus {
	display: inline-block;
	padding: 0.22rem 0.7rem;
	border: 1px solid #4c51bf;
	border-radius: 999px;
	background: transparent;
	color: #4c51bf;
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	cursor: pointer;
	vertical-align: middle;
	transition: background 0.15s ease, color 0.15s ease;
}
.nu-focus:hover {
	background: #4c51bf;
	color: #ffffff;
}
.nu-focus.is-on {
	background: #4c51bf;
	color: #ffffff;
}
.nu-focus-mode #masthead,
.nu-focus-mode #colophon,
.nu-focus-mode .nu-crumbs,
.nu-focus-mode .nu-toc,
.nu-focus-mode .nu-rail,
.nu-focus-mode .nu-related,
.nu-focus-mode .nu-authorbox,
.nu-focus-mode .nu-filed,
.nu-focus-mode .nu-share,
.nu-focus-mode .nu-recent,
.nu-focus-mode .nu-quote,
.nu-focus-mode .post-navigation {
	display: none !important;
}

/* Reading-width control (leg 19) — cycles article column Default / Cozy / Wide. */
.nu-width {
	display: inline-block;
	padding: 0.22rem 0.7rem;
	border: 1px solid #4c51bf;
	border-radius: 999px;
	background: transparent;
	color: #4c51bf;
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	cursor: pointer;
	vertical-align: middle;
	transition: background 0.15s ease, color 0.15s ease;
}
.nu-width:hover {
	background: #4c51bf;
	color: #ffffff;
}
.nu-width.is-on {
	background: #4c51bf;
	color: #ffffff;
}
body.nu-w-cozy article.single-entry {
	max-width: 46rem;
	margin-left: auto;
	margin-right: auto;
}
body.nu-w-wide article.single-entry {
	max-width: none;
}

/* Saved-marker (leg 20) — '★' on cards whose article is in the shelf. */
.nu-saved-mark {
	color: #4c51bf;
	font-size: 0.8em;
	vertical-align: baseline;
}

/* Comment-count chip (leg 21) — real count pill on listing cards. */
.nu-comments {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.08rem 0.45rem;
  border: 1px solid rgba(76, 81, 191, 0.3);
  border-radius: 999px;
  background: rgba(76, 81, 191, 0.05);
  color: var(--nu-accent, #4c51bf);
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  vertical-align: middle;
  transform: translateY(-1px);
  white-space: nowrap;
}

/* Table-scroll (leg 22) — wide tables get a scroll region + edge shadows. */
.nu-tscroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	max-width: 100%;
	background-image:
		linear-gradient(to right, var(--nu-bg, #ffffff), var(--nu-bg, #ffffff)),
		linear-gradient(to left, var(--nu-bg, #ffffff), var(--nu-bg, #ffffff)),
		radial-gradient(farthest-side at 0 50%, rgba(0, 0, 0, 0.16), transparent),
		radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.16), transparent);
	background-position: 0 0, 100% 0, 0 0, 100% 0;
	background-repeat: no-repeat;
	background-size: 14px 100%, 14px 100%, 8px 100%, 8px 100%;
	background-attachment: local, local, scroll, scroll;
}
.nu-tscroll table {
	min-width: 100%;
}

/* Image lightbox (leg 23) — click-to-zoom overlay on article images. */
.nu-zoomable {
	cursor: zoom-in;
}
.nu-zoom {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: none;
	align-items: center;
	justify-content: center;
	flex-direction: column;
	padding: 2rem;
	background: rgba(10, 15, 30, 0.9);
	backdrop-filter: blur(4px);
}
.nu-zoom.is-open {
	display: flex;
}
.nu-zoom img {
	max-width: 92vw;
	max-height: 82vh;
	border-radius: 8px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}
.nu-zoom-cap {
	margin: 0.8rem 0 0;
	color: #cbd5e1;
	font-size: 0.8rem;
	text-align: center;
}
body.nu-zoom-lock {
	overflow: hidden;
}

/* Collapsible ToC (leg 24) — 'In this article' head flips the jump list. */
.nv-toc-flippable .nv-toc-head {
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: space-between;
	user-select: none;
}
.nv-toc-flippable .nv-toc-head::after {
	content: '';
	display: inline-block;
	width: 0.45rem;
	height: 0.45rem;
	border-right: 2px solid var(--nu-accent, #4c51bf);
	border-bottom: 2px solid var(--nu-accent, #4c51bf);
	transform: rotate(45deg) translateY(-2px);
	transition: transform 0.2s ease;
}
.nv-toc-flippable.is-collapsed .nv-toc-head::after {
	transform: rotate(-45deg) translateY(2px);
}
.nv-toc-flippable.is-collapsed .nv-toc-list {
	display: none;
}

/* Article-meta sticky bar (leg 25) — title + copy-link pinned under the header on scroll. */
.nv-articlebar {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 9998;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.45rem 1rem;
	background: rgba(255, 255, 255, 0.92);
	backdrop-filter: blur(6px);
	border-bottom: 1px solid rgba(15, 23, 42, 0.08);
	box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06);
	transform: translateY(-110%);
	transition: transform 0.25s ease;
}
.nv-articlebar.is-open {
	transform: translateY(0);
}
.nv-articlebar-title {
	font-weight: 700;
	font-size: 0.82rem;
	color: #0f172a;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.nv-articlebar-copy {
	flex: none;
	padding: 0.28rem 0.8rem;
	border: 1px solid rgba(76, 81, 191, 0.35);
	border-radius: 999px;
	background: rgba(76, 81, 191, 0.06);
	color: var(--nu-accent, #4c51bf);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background 0.2s ease;
}
.nv-articlebar-copy:hover {
	background: rgba(76, 81, 191, 0.14);
}

/* Reveal-on-scroll (leg 26) — cards and article blocks fade up as they enter. */
.nu-reveal {
	opacity: 0;
	transform: translateY(14px);
	transition: opacity 0.5s ease, transform 0.5s ease;
}
.nu-reveal.is-in {
	opacity: 1;
	transform: none;
}
@media (prefers-reduced-motion: reduce) {
	.nu-reveal {
		transition: none;
	}
}

.nu-articlebar-prog{color:rgba(15,23,42,.55);font-size:.66rem;font-weight:700;letter-spacing:.04em;white-space:nowrap}
@media (max-width: 640px){.nu-articlebar-prog{display:none}}


/* nu dark — floating mode toggle + full dark palette overrides */
.nu-dark-wrap{position:fixed;top:.55rem;right:.75rem;z-index:10001}
.nu-dark{width:30px;height:30px;border-radius:999px;border:1px solid rgba(15,23,42,.15);background:#fff;color:#0f172a;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px rgba(15,23,42,.12);padding:0}
.nu-dark:hover{border-color:rgba(8,145,178,.5);color:#4c51bf}
.nu-dark-on .nu-dark{background:#0f172a;color:#cbd5e1;border-color:rgba(226,232,240,.3);box-shadow:0 2px 8px rgba(0,0,0,.4)}
.nu-dark-on .nu-dark:hover{color:#a5b4fc;border-color:rgba(165,180,252,.5)}

html.nu-dark-on{color-scheme:dark}
.nu-dark-on,.nu-dark-on body,.nu-dark-on .site,.nu-dark-on .content-container,.nu-dark-on .content-wrap{background:#0b1220;color:#cbd5e1}
.nu-dark-on .entry-content,.nu-dark-on .entry-content p,.nu-dark-on .entry-title,.nu-dark-on .entry-content h1,.nu-dark-on .entry-content h2,.nu-dark-on .entry-content h3,.nu-dark-on .entry-content h4{color:#e2e8f0}
.nu-dark-on .entry-content em,.nu-dark-on .entry-content strong{color:inherit}
.nu-dark-on a{color:#a5b4fc}
.nu-dark-on a:hover{color:#c7d2fe}
.nu-dark-on .site-header,.nu-dark-on #masthead,.nu-dark-on .header-menu-nav,.nu-dark-on .main-navigation,.nu-dark-on .nav-menu,.nu-dark-on .menu{background:#0f172a;border-color:rgba(148,163,184,.2);box-shadow:0 1px 0 rgba(148,163,184,.12)}
.nu-dark-on .menu a,.nu-dark-on .nav-menu a,.nu-dark-on .menu-item a{color:#cbd5e1}
.nu-dark-on .menu a:hover,.nu-dark-on .nav-menu a:hover,.nu-dark-on .current-menu-item>a{color:#a5b4fc}
.nu-dark-on .menu .sub-menu,.nu-dark-on .sub-menu{background:#111c30;border-color:rgba(148,163,184,.2);box-shadow:0 8px 24px rgba(0,0,0,.5)}
.nu-dark-on article.post,.nu-dark-on article.entry,.nu-dark-on .nu-card,.nu-dark-on .nu-registry-item,.nu-dark-on .nftu-tool,.nu-dark-on .nu-record,.nu-dark-on .lead-card,.nu-dark-on .post,.nu-dark-on .type-post,.nu-dark-on .nu-keysheet-card,.nu-dark-on .nu-authorbox,.nu-dark-on .nu-toc,.nu-dark-on .nu-sitemap-grid,.nu-dark-on .nu-404,.nu-dark-on .error404 .entry,.nu-dark-on .nu-share,.nu-dark-on .nu-sort,.nu-dark-on .nu-refine,.nu-dark-on .nu-authorband,.nu-dark-on .nu-palette,.nu-dark-on .nu-palette-list,.nu-dark-on .comment-body,.nu-dark-on .comment-respond,.nu-dark-on .comments-area,.nu-dark-on .nu-stat,.nu-dark-on .nu-band,.nu-dark-on .nu-hero,.nu-dark-on .nu-meta-pill,.nu-dark-on .nu-filed,.nu-dark-on .nu-postnav a,.nu-dark-on .nu-zeroguide{background:#111c30;border-color:rgba(148,163,184,.2);color:#cbd5e1}
.nu-dark-on article.post:hover,.nu-dark-on article.entry:hover,.nu-dark-on .nu-card:hover,.nu-dark-on .nu-registry-item:hover{box-shadow:0 8px 28px rgba(0,0,0,.45)}
.nu-dark-on .entry-title a,.nu-dark-on .entry-title a:visited,.nu-dark-on h1,.nu-dark-on h2,.nu-dark-on h3,.nu-dark-on h4,.nu-dark-on .nu-card-title,.nu-dark-on .site-title,.nu-dark-on .site-title a{color:#f1f5f9}
.nu-dark-on .entry-title a:hover{color:#a5b4fc}
.nu-dark-on .entry-meta,.nu-dark-on .posted-on,.nu-dark-on .byline,.nu-dark-on .meta,.nu-dark-on .nu-meta,.nu-dark-on .nu-excerpt,.nu-dark-on .entry-summary,.nu-dark-on .description,.nu-dark-on .archive-description,.nu-dark-on .nu-toc-list a,.nu-dark-on .nu-sitemap a,.nu-dark-on .nu-latest a,.nu-dark-on .nu-filed a{color:#94a3b8}
.nu-dark-on .nu-filed a:hover,.nu-dark-on .nu-toc-list a:hover,.nu-dark-on .nu-toc-active{color:#a5b4fc}
.nu-dark-on .nu-articlebar{background:rgba(15,23,42,.94);border-bottom-color:rgba(148,163,184,.2);box-shadow:0 4px 16px rgba(0,0,0,.4)}
.nu-dark-on .nu-articlebar-title{color:#e2e8f0}
.nu-dark-on .nu-articlebar-copy,.nu-dark-on .nu-articlebar-prog{color:#94a3b8}
.nu-dark-on .nu-articlebar-copy{background:rgba(165,180,252,.1);border-color:rgba(165,180,252,.35);color:#a5b4fc}
.nu-dark-on .nu-breadcrumb,.nu-dark-on .nu-breadcrumb a,.nu-dark-on .nu-crumbs,.nu-dark-on .nu-crumbs a{color:#94a3b8}
.nu-dark-on .nu-breadcrumb a:hover,.nu-dark-on .nu-crumbs a:hover{color:#a5b4fc}
.nu-dark-on input,.nu-dark-on textarea,.nu-dark-on select,.nu-dark-on .search-field,.nu-dark-on .nu-search input,.nu-dark-on .nu-refine input,.nu-dark-on .nu-palette input{background:#0f172a;color:#e2e8f0;border-color:rgba(148,163,184,.35)}
.nu-dark-on input::placeholder{color:#64748b}
.nu-dark-on input:focus,.nu-dark-on textarea:focus,.nu-dark-on select:focus{border-color:rgba(165,180,252,.6);outline:none}
.nu-dark-on table,.nu-dark-on th,.nu-dark-on td{border-color:rgba(148,163,184,.25)}
.nu-dark-on th{background:#0f172a;color:#94a3b8}
.nu-dark-on td{background:transparent}
.nu-dark-on blockquote{border-color:rgba(165,180,252,.4);background:rgba(165,180,252,.06);color:#cbd5e1}
.nu-dark-on code,.nu-dark-on pre{background:#0f172a;color:#c7d2fe;border-color:rgba(148,163,184,.25)}
.nu-dark-on mark{background:rgba(165,180,252,.25);color:#f8fafc}
.nu-dark-on hr{border-color:rgba(148,163,184,.25)}
.nu-dark-on .nu-chips a,.nu-dark-on .nu-sort a,.nu-dark-on .nu-view,.nu-dark-on .nu-view a,.nu-dark-on .nu-font a,.nu-dark-on .page-numbers,.nu-dark-on .nu-loadmore,.nu-dark-on .nu-share a,.nu-dark-on .nu-share button,.nu-dark-on .nu-rss,.nu-dark-on .nu-cta{background:rgba(165,180,252,.08);border-color:rgba(165,180,252,.3);color:#a5b4fc}
.nu-dark-on .nu-chips a:hover,.nu-dark-on .nu-sort a:hover,.nu-dark-on .page-numbers:hover,.nu-dark-on .page-numbers.current,.nu-dark-on .nu-loadmore:hover,.nu-dark-on .nu-share a:hover,.nu-dark-on .nu-sort .is-active,.nu-dark-on .nu-sort a.is-active,.nu-dark-on .nu-view .is-active,.nu-dark-on .nu-view a.is-active,.nu-dark-on .nu-font a.is-active,.nu-dark-on .nu-font .is-active{background:#a5b4fc;color:#0f172a;border-color:#a5b4fc}
.nu-dark-on .nu-badge,.nu-dark-on .nu-new,.nu-dark-on .nu-updated,.nu-dark-on .nu-fresh,.nu-dark-on .nu-rt,.nu-dark-on .nu-card-rt,.nu-dark-on .nu-read,.nu-dark-on .nu-comments,.nu-dark-on .nu-verified{background:rgba(165,180,252,.15);color:#a5b4fc;border-color:rgba(165,180,252,.3)}
.nu-dark-on .nu-zoom{background:rgba(5,8,16,.94)}
.nu-dark-on .nu-rail a{background:rgba(148,163,184,.25)}
.nu-dark-on .nu-rail a.is-active,.nu-dark-on .nu-rail .is-active{background:#a5b4fc}
.nu-dark-on .nu-progress{background:rgba(148,163,184,.2)}
.nu-dark-on .nu-backtop{background:#0f172a;color:#a5b4fc;border-color:rgba(165,180,252,.3)}
.nu-dark-on .nu-backtop:hover{border-color:#a5b4fc}
.nu-dark-on .site-footer,.nu-dark-on .site-bottom-footer-wrap,.nu-dark-on footer{background:#0a1018}
.nu-dark-on .site-footer a{color:#94a3b8}
.nu-dark-on .site-footer a:hover{color:#a5b4fc}
.nu-dark-on ::selection{background:rgba(165,180,252,.35);color:#f8fafc}
.nu-dark-on img{filter:brightness(.92)}
.nu-dark-on ::-webkit-scrollbar-thumb{background:rgba(165,180,252,.3)}
.nu-dark-on ::-webkit-scrollbar-track{background:#0b1220}
.nu-dark-on .nu-palette{background:#0f172a;border-color:rgba(148,163,184,.3);box-shadow:0 16px 48px rgba(0,0,0,.6)}
.nu-dark-on .nu-palette-list a,.nu-dark-on .nu-palette a{color:#cbd5e1}
.nu-dark-on .nu-palette-list a:hover,.nu-dark-on .nu-palette a:hover,.nu-dark-on .nu-palette .is-active{color:#a5b4fc}
.nu-dark-on .nu-zoom-cap{color:#cbd5e1}
.nu-dark-on .nu-search-drop,.nu-dark-on .nu-livesearch{background:#111c30;border-color:rgba(148,163,184,.25)}
.nu-dark-on .nu-search-drop a,.nu-dark-on .nu-livesearch a{color:#cbd5e1}
.nu-dark-on .nu-search-drop a:hover,.nu-dark-on .nu-livesearch a:hover{background:rgba(165,180,252,.1);color:#a5b4fc}


/* nu visited — muted 'Read' state on already-read listing cards */
.nu-read .entry-title a,.nu-read a.nu-read-title{opacity:.55}
.nu-read-chip{display:inline-block;margin-left:.45rem;padding:.1rem .45rem;border-radius:999px;font-size:.58rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:rgba(76,81,191,.9);background:rgba(76,81,191,.1);border:1px solid rgba(76,81,191,.3);vertical-align:.12em;opacity:1;white-space:nowrap}


/* Infinite archive loading hint (leg 30) */
.nu-loadmore-hint{display:block;margin-top:.5rem;font-size:.62rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:rgba(76,81,191,.75)}

/* Focus mode — distraction-free reading (leg 31) */
.nu-focus-btn{margin-left:auto;font:inherit;font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#4c51bf;background:rgba(76,81,191,.08);border:1px solid rgba(76,81,191,.4);border-radius:999px;padding:.3rem .8rem;cursor:pointer;white-space:nowrap}
.nu-focus-btn:hover{background:rgba(76,81,191,.16)}
.nu-focus-btn[aria-pressed="true"]{color:#fff;background:#4c51bf;border-color:#4c51bf}
html.nu-focus-on .site-header,
html.nu-focus-on .site-footer,
html.nu-focus-on .nu-related,
html.nu-focus-on .nu-share,
html.nu-focus-on .nu-sitemap,
html.nu-focus-on .nu-totop,
html.nu-focus-on .nu-railnav,
html.nu-focus-on .nu-section-rail,
html.nu-focus-on .nu-search,
html.nu-focus-on .nu-drawer,
html.nu-focus-on .nu-breadcrumbs,
html.nu-focus-on .comments-area,
html.nu-focus-on #comments{display:none!important}
html.nu-focus-on .nu-articlebar{top:0!important}
html.nu-focus-on .entry-content{max-width:46rem;margin-inline:auto}

/* Inline related — 'Read next' card (leg 32) */
.nu-inread{margin:1.6rem 0;padding:1.1rem 1.25rem 1.2rem;background:rgba(76,81,191,.05);border:1px solid rgba(76,81,191,.22);border-left:4px solid #4c51bf;border-radius:10px}
.nu-inread-k{display:block;font-size:.6rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#4c51bf;margin-bottom:.35rem}
.nu-inread-title{display:block;font-size:1.05rem;font-weight:750;line-height:1.3;color:#0f172a;text-decoration:none}
.nu-inread-title:hover{text-decoration:underline}
.nu-inread-meta{margin:.4rem 0 0;font-size:.72rem;color:rgba(15,23,42,.55)}


/* Recently viewed rail — session history strip at article end (leg 33). */
.nu-recent {
	margin: 2rem 0 0;
	padding: 1.1rem 1.25rem 1.2rem;
	border-top: 1px solid rgba(76,81,191,.2);
}
.nu-recent-k {
	display: block;
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: rgba(76,81,191,.85);
	margin-bottom: .7rem;
}
.nu-recent-row {
	display: flex;
	gap: .6rem;
	overflow-x: auto;
	padding-bottom: .2rem;
	scrollbar-width: thin;
}
.nu-recent-item {
	flex: 0 0 auto;
	max-width: 16rem;
	padding: .55rem .8rem;
	font-size: .82rem;
	font-weight: 600;
	line-height: 1.35;
	color: inherit;
	text-decoration: none;
	background: rgba(76,81,191,.05);
	border: 1px solid rgba(76,81,191,.22);
	border-radius: 8px;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.nu-recent-item:hover {
	border-color: #4c51bf;
	background: rgba(76,81,191,.1);
}


/* Reader typeface toggle — serif article body (leg 34). */
.nu-serif-btn {
	margin-left: .5rem;
	padding: .3rem .8rem;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: #4c51bf;
	background: rgba(76,81,191,.08);
	border: 1px solid rgba(76,81,191,.3);
	border-radius: 999px;
	cursor: pointer;
}
.nu-serif-btn:hover {
	background: rgba(76,81,191,.16);
}
.nu-serif-btn[aria-pressed="true"] {
	color: #fff;
	background: #4c51bf;
	border-color: #4c51bf;
}
html.nu-serif-on .entry-content,
html.nu-serif-on .entry-content p,
html.nu-serif-on .entry-content li,
html.nu-serif-on .entry-content blockquote {
	font-family: Georgia, 'Times New Roman', serif;
}
html.nu-serif-on .entry-content p,
html.nu-serif-on .entry-content li {
	font-size: 1.04em;
	line-height: 1.75;
}


/* Skeleton shimmer — load-more placeholder cards (leg 35). */
.nu-skel {
	height: 9rem;
	border-radius: 10px;
	background: linear-gradient( 100deg, rgba(76,81,191,.06) 40%, rgba(76,81,191,.16) 50%, rgba(76,81,191,.06) 60% );
	background-size: 200% 100%;
	animation: nu-skel-shimmer 1.2s linear infinite;
}
@keyframes nu-skel-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

/* Archive card topic chip — category link rendered as an accent pill (leg 36). */
.entry-taxonomies .category-links a {
	display: inline-block;
	padding: .28rem .7rem;
	border-radius: 999px;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: rgb(76,81,191);
	background: rgba(76,81,191,.1);
	text-decoration: none;
	transition: background .15s, color .15s;
}
.entry-taxonomies .category-links a:hover,
.entry-taxonomies .category-links a:focus-visible {
	background: rgb(76,81,191);
	color: #fff;
}

/* New-since-last-visit archive banner (leg 37). */
.nu-newsin {
	display: inline-block;
	margin: 0 0 1rem;
	padding: .35rem .9rem;
	border-radius: 999px;
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: #0891b2;
	background: rgba(76,81,191,.1);
	border: 1px solid rgba(76,81,191,.25);
}

/* ── Cite this article — citation panel behind the share-row chip ── */
.nu-cite-btn {
	display: inline-flex;
	align-items: center;
	gap: .35em;
	padding: .3em .85em;
	font-size: .72rem;
	font-weight: 700;
	line-height: 1.3;
	border: 1px solid rgba( 76,81,191, .45 );
	border-radius: 999px;
	background: rgba( 76,81,191, .06 );
	color: #4c51bf;
	cursor: pointer;
}
.nu-cite-btn:hover, .nu-cite-btn[aria-expanded="true"] {
	background: rgba( 76,81,191, .14 );
}
.nu-cite {
	margin: .65em 0 0;
	padding: .9em 1.1em 1em;
	border: 1px solid rgba( 76,81,191, .3 );
	border-left: 3px solid #4c51bf;
	border-radius: 8px;
	background: rgba( 76,81,191, .05 );
}
.nu-cite figcaption {
	margin-bottom: .45em;
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: #4c51bf;
}
.nu-cite-text {
	margin: 0 0 .6em;
	font-size: .82rem;
	line-height: 1.55;
	color: inherit;
}
.nu-cite-copy {
	padding: .3em .9em;
	font-size: .72rem;
	font-weight: 700;
	border: 1px solid rgba( 76,81,191, .45 );
	border-radius: 999px;
	background: #fff;
	color: #4c51bf;
	cursor: pointer;
}
.nu-cite-copy:hover {
	background: rgba( 76,81,191, .12 );
}
@media print {
	.nu-cite-btn, .nu-cite { display: none; }
}

/* ── Quote-share popover — select article text → copy/share affordance ── */
.nu-qshare {
	position: absolute;
	z-index: 100000;
	display: inline-flex;
	align-items: center;
	gap: .4em;
	padding: .3em .45em;
	border-radius: 999px;
	background: #111827;
	box-shadow: 0 4px 18px rgba( 0,0,0,.28 );
	white-space: nowrap;
}
.nu-qshare-copy {
	padding: .28em .8em;
	font-size: .68rem;
	font-weight: 700;
	border: 0;
	border-radius: 999px;
	background: #4c51bf;
	color: #fff;
	cursor: pointer;
}
.nu-qshare-copy:hover {
	filter: brightness( 1.12 );
}
.nu-qshare-x {
	display: inline-flex;
	align-items: center;
	gap: .3em;
	padding: .28em .7em;
	font-size: .68rem;
	font-weight: 700;
	color: #e5e7eb;
	text-decoration: none;
	border-radius: 999px;
}
.nu-qshare-x:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.nu-qshare-x svg {
	fill: currentColor;
}
.nu-qshare-search {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .68rem;
	font-weight: 700;
	color: #e5e7eb;
	text-decoration: none;
	border-left: 1px solid rgba( 226,232,240,.18 );
}
.nu-qshare-search:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.nu-qshare-card {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .68rem;
	font-weight: 700;
	color: #e5e7eb;
	background: none;
	border: 0;
	border-left: 1px solid rgba( 226,232,240,.18 );
	border-radius: 0;
	cursor: pointer;
}
.nu-qshare-card:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.nu-qshare-speak {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .66rem;
	font-weight: 700;
	line-height: 1;
	color: #e5e7eb;
	background: none;
	border: 0;
	border-left: 1px solid rgba( 226,232,240,.18 );
	border-radius: 0;
	cursor: pointer;
}
.nu-qshare-speak:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}

.nu-qshare-define {
	display: inline-flex;
	align-items: center;
	padding: .28em .7em;
	font-size: .66rem;
	font-weight: 700;
	line-height: 1;
	color: #e5e7eb;
	background: none;
	border: 0;
	border-left: 1px solid rgba( 226,232,240,.18 );
	border-radius: 0;
	cursor: pointer;
}
.nu-qshare-define:hover {
	background: rgba( 255,255,255,.12 );
	color: #fff;
}
.nu-qshare-def {
	position: absolute;
	top: calc( 100% + 8px );
	left: 0;
	width: 17rem;
	max-height: 16rem;
	overflow: auto;
	padding: .7em .85em;
	border-radius: 12px;
	background: #111827;
	box-shadow: 0 8px 26px rgba( 0,0,0,.34 );
	font-size: .72rem;
	font-weight: 400;
	line-height: 1.5;
	color: #e5e7eb;
	white-space: normal;
}
.nu-qshare-pos {
	text-transform: uppercase;
	font-size: .62rem;
	font-weight: 700;
	color: var( --nu-accent, #818cf8 );
}
.nu-qshare-def-more {
	color: #fff;
	text-decoration: underline;
	font-size: .68rem;
}



@media print {
	.nu-qshare { display: none; }
}

/* ---------------------------------------------------------------
   Mobile section navigator — floating 'Sections' chip (≤768px only)
   opens a bottom sheet mirroring the article ToC (leg 40).
   --------------------------------------------------------------- */
.nu-sectnav {
	position: fixed;
	left: 16px;
	bottom: 16px;
	z-index: 9000;
	display: none;
	align-items: center;
	gap: 6px;
	padding: 9px 15px;
	border: none;
	border-radius: 999px;
	background: #4c51bf;
	color: #fff;
	font: 700 .8rem/1 system-ui, sans-serif;
	letter-spacing: .02em;
	cursor: pointer;
	box-shadow: 0 6px 20px rgba(8, 145, 178, .4), 0 1px 4px rgba(0, 0, 0, .18);
}
.nu-sectnav:active {
	transform: translateY(1px);
}
.nu-sectnav-scrim {
	position: fixed;
	inset: 0;
	z-index: 9001;
	background: rgba(17, 24, 39, .45);
}
.nu-sectnav-sheet {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 9002;
	max-height: 62vh;
	overflow-y: auto;
	padding: 16px 20px 28px;
	background: #fff;
	border-radius: 16px 16px 0 0;
	box-shadow: 0 -8px 30px rgba(0, 0, 0, .22);
	animation: nu-sectnav-rise .18s ease-out;
}
@keyframes nu-sectnav-rise {
	from { transform: translateY(40px); opacity: 0; }
	to { transform: translateY(0); opacity: 1; }
}
.nu-sectnav-head {
	display: block;
	font: 700 .72rem/1 system-ui, sans-serif;
	text-transform: uppercase;
	letter-spacing: .09em;
	color: #4c51bf;
	margin-bottom: 10px;
}
.nu-sectnav-close {
	position: absolute;
	top: 10px;
	right: 14px;
	border: none;
	background: none;
	font-size: 1.5rem;
	line-height: 1;
	color: #6b7280;
	cursor: pointer;
	padding: 4px;
}
.nu-sectnav-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.nu-sectnav-list li {
	margin: 0;
}
.nu-sectnav-list a {
	display: block;
	padding: 11px 6px;
	border-bottom: 1px solid #f1f5f9;
	color: #1f2937;
	font: 500 .95rem/1.3 system-ui, sans-serif;
	text-decoration: none;
}
.nu-sectnav-list a:active,
.nu-sectnav-list a.nu-toc-active {
	color: #4c51bf;
	font-weight: 700;
}
.nu-sectnav-list li.nu-toc-sub a {
	padding-left: 22px;
	font-size: .88rem;
	color: #4b5563;
}
@media (max-width: 768px) {
	.nu-sectnav { display: inline-flex; }
}
@media print {
	.nu-sectnav, .nu-sectnav-scrim, .nu-sectnav-sheet { display: none !important; }
}

/* ---------------------------------------------------------------
   'Unread only' archive filter — toggle appended to the sort row;
   filters listing cards against the visited store (leg 41).
   --------------------------------------------------------------- */
button.nu-unread {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin-left: auto;
	padding: 5px 12px;
	border: 1px solid rgba(8, 145, 178, .3);
	border-radius: 999px;
	background: #fff;
	color: #4c51bf;
	font: 700 .76rem/1 system-ui, sans-serif;
	cursor: pointer;
	transition: background .15s, color .15s;
}
button.nu-unread:hover {
	background: rgba(8, 145, 178, .07);
}
button.nu-unread .nu-unread-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: rgba(8, 145, 178, .35);
	transition: background .15s;
}
button.nu-unread.nu-sort-current {
	background: #4c51bf;
	border-color: #4c51bf;
	color: #fff;
}
button.nu-unread.nu-sort-current .nu-unread-dot {
	background: #fff;
}
p.nu-unread-empty {
	margin: 8px 0 14px;
	padding: 10px 14px;
	border: 1px dashed rgba(8, 145, 178, .35);
	border-radius: 10px;
	background: rgba(8, 145, 178, .05);
	color: #4c51bf;
	font: 600 .82rem/1.4 system-ui, sans-serif;
}
@media print {
	button.nu-unread { display: none !important; }
}

/* ---------------------------------------------------------------
   'Continue reading' strip — persistent cross-page resume banner on
   listing surfaces (leg 42). Accent-rail card above the post list.
   --------------------------------------------------------------- */
.nu-continue {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 14px;
	margin: 0 0 18px;
	padding: 12px 16px;
	border: 1px solid rgba(8, 145, 178, .25);
	border-left: 4px solid #4c51bf;
	border-radius: 10px;
	background: rgba(8, 145, 178, .05);
}
.nu-continue-k {
	flex: 0 0 100%;
	font: 700 .68rem/1 system-ui, sans-serif;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: #4c51bf;
}
.nu-continue-t {
	flex: 1 1 auto;
	min-width: 0;
	font: 700 .95rem/1.35 system-ui, sans-serif;
	color: #111827;
	text-decoration: none;
}
.nu-continue-t:hover {
	color: #4c51bf;
	text-decoration: underline;
}
.nu-continue-p {
	flex: 0 0 auto;
	font: 600 .78rem/1 system-ui, sans-serif;
	color: #6b7280;
}
.nu-continue-x {
	flex: 0 0 auto;
	border: none;
	background: none;
	padding: 2px 6px;
	font-size: 1.25rem;
	line-height: 1;
	color: #9ca3af;
	cursor: pointer;
}
.nu-continue-x:hover {
	color: #111827;
}
@media print {
	.nu-continue { display: none !important; }
}

/* ---------------------------------------------------------------
   'Up next' slide-in card — bottom-right card surfacing the first
   related post near article end (leg 43). Accent-rail, rise-in.
   --------------------------------------------------------------- */
.nu-nextread {
	position: fixed;
	right: 18px;
	bottom: 78px;
	z-index: 8000;
	max-width: 320px;
	padding: 12px 34px 12px 14px;
	border: 1px solid rgba(8, 145, 178, .25);
	border-left: 4px solid #4c51bf;
	border-radius: 10px;
	background: #fff;
	box-shadow: 0 12px 32px rgba(17, 24, 39, .18);
	opacity: 0;
	transform: translateY(18px);
	pointer-events: none;
	transition: opacity .28s ease, transform .28s ease;
}
.nu-nextread.nu-nextread-on {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}
.nu-nextread-k {
	display: block;
	margin-bottom: 4px;
	font: 700 .66rem/1 system-ui, sans-serif;
	text-transform: uppercase;
	letter-spacing: .1em;
	color: #4c51bf;
}
.nu-nextread-t {
	display: block;
	font: 700 .92rem/1.35 system-ui, sans-serif;
	color: #111827;
	text-decoration: none;
}
.nu-nextread-t:hover {
	color: #4c51bf;
	text-decoration: underline;
}
.nu-nextread-x {
	position: absolute;
	top: 6px;
	right: 8px;
	border: none;
	background: none;
	padding: 2px 6px;
	font-size: 1.25rem;
	line-height: 1;
	color: #9ca3af;
	cursor: pointer;
}
.nu-nextread-x:hover {
	color: #111827;
}
@media (max-width: 640px) {
	.nu-nextread {
		left: 18px;
		max-width: none;
	}
}
@media print {
	.nu-nextread { display: none !important; }
}

/* 'Minutes left' progress chip (leg 44) */
.nu-progchip {
	position: fixed; left: 18px; bottom: 70px; z-index: 7990;
	display: flex; align-items: center; gap: 10px;
	padding: 8px 14px; border-radius: 999px;
	background: #ffffff; border: 1px solid #e2e8f0;
	box-shadow: 0 6px 18px rgba(2, 6, 23, .10);
	opacity: 0; transform: translateY(8px); pointer-events: none;
	transition: opacity .25s ease, transform .25s ease;
}
.nu-progchip-on { opacity: 1; transform: none; }
.nu-progchip-rail { width: 56px; height: 4px; border-radius: 2px; background: #e2e8f0; overflow: hidden; }
.nu-progchip-fill { display: block; height: 100%; width: 0; background: #4c51bf; border-radius: 2px; transition: width .2s ease; }
.nu-progchip-t { font-size: 12.5px; font-weight: 600; color: #475569; white-space: nowrap; }
@media (max-width:767px){.nu-progchip{display:none!important}}
@media print { .nu-progchip { display: none !important; } }

/* Find-in-article tool (leg 45) */
.nu-find {
	margin-left: auto; padding: 4px 10px; border-radius: 999px;
	border: 1px solid #e2e8f0; background: #f8fafc; color: #475569;
	font-size: 12px; font-weight: 600; cursor: pointer;
	display: inline-flex; align-items: center; gap: 6px;
}
.nu-find:hover { border-color: #4c51bf; color: #4c51bf; }
.nu-find kbd {
	font: 600 10px/1 ui-monospace, monospace; color: #64748b;
	border: 1px solid #cbd5e1; border-bottom-width: 2px; border-radius: 4px;
	padding: 2px 5px; background: #fff;
}
.nu-findbar {
	position: fixed; top: 12vh; left: 50%; z-index: 7998;
	display: flex; align-items: center; gap: 8px;
	padding: 8px 10px; border-radius: 12px; width: min(430px, 92vw);
	background: #ffffff; border: 1px solid #e2e8f0;
	box-shadow: 0 12px 32px rgba(2, 6, 23, .16);
	opacity: 0; transform: translate(-50%, -8px); pointer-events: none;
	transition: opacity .2s ease, transform .2s ease;
}
.nu-findbar-on { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.nu-findbar-in {
	flex: 1; min-width: 0; border: 0; outline: none; font-size: 14px;
	padding: 6px 8px; border-radius: 8px; background: #f1f5f9; color: #0f172a;
}
.nu-findbar-n { font-size: 12px; font-weight: 700; color: #64748b; min-width: 34px; text-align: center; font-variant-numeric: tabular-nums; }
.nu-findbar button, .nu-findbar-up, .nu-findbar-dn, .nu-findbar-x {
	border: 1px solid #e2e8f0; background: #fff; color: #475569;
	width: 28px; height: 28px; border-radius: 8px; cursor: pointer;
	font-size: 13px; line-height: 1; display: inline-flex; align-items: center; justify-content: center;
}
.nu-findbar button:hover { border-color: #4c51bf; color: #4c51bf; }
mark.nu-findhit { background: rgba(8, 145, 178, .22); color: inherit; padding: 0 1px; border-radius: 2px; }
mark.nu-findhit-cur { background: #4c51bf; color: #fff; }
@media print { .nu-find, .nu-findbar { display: none !important; } }

/* Relative-time stamps (leg 46) */
.nu-rel { font-size: .85em; color: #94a3b8; margin-left: 4px; white-space: nowrap; }
@media print { .nu-rel { display: none !important; } }

/* Sibling-topic chips on articles (leg 47) */
.nu-morecats { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; }
.nu-morecats-label { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #64748b; margin-right: 2px; }
.nu-morecats-chip { display: inline-flex; padding: .22rem .72rem; border: 1px solid #e2e8f0; border-radius: 999px; background: #fff; color: #475569; font-size: .78rem; font-weight: 600; text-decoration: none; transition: border-color .15s, color .15s; }
.nu-morecats-chip:hover { border-color: rgba(76,81,191,.45); color: #4c51bf; }
@media print { .nu-morecats { display: none !important; } }

/* Copy section link (leg 48) */
.entry-content .nu-anchor { position: relative; }
.entry-content .nu-anchor-copied { opacity: 1; color: #4c51bf; }
.entry-content .nu-anchor-copied::after { content: attr(data-label); position: absolute; left: 50%; bottom: 140%; transform: translateX(-50%); background: #0f172a; color: #fff; font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 5px; white-space: nowrap; }
@media print { .entry-content .nu-anchor-copied::after { display: none; } }

/* Sticky share rail (leg 50) */
.nu-sharerail { position: fixed; left: 14px; top: 50%; transform: translateY(-50%); z-index: 7900; display: flex; flex-direction: column; gap: 8px; opacity: 0; animation: nu-sharerail-in .4s ease .6s forwards; }
@keyframes nu-sharerail-in { to { opacity: 1; } }
.nu-sharerail-b { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; background: #fff; border: 1px solid #e2e8f0; color: #64748b; cursor: pointer; transition: color .15s, border-color .15s, box-shadow .15s; box-shadow: 0 1px 3px rgba(15,23,42,.06); padding: 0; }
.nu-sharerail-b:hover { color: #4c51bf; border-color: rgba(76,81,191,.45); box-shadow: 0 4px 10px rgba(15,23,42,.12); }
.nu-sharerail-copy { position: relative; }
.nu-sharerail-copy.nu-sharerail-on { color: #fff; background: #4c51bf; border-color: #4c51bf; }
.nu-sharerail-copy.nu-sharerail-on::after { content: attr(data-label); position: absolute; left: 46px; top: 50%; transform: translateY(-50%); background: #0f172a; color: #fff; font-size: 10px; font-weight: 600; padding: 3px 8px; border-radius: 5px; white-space: nowrap; }
@media (max-width: 1359px) { .nu-sharerail { display: none; } }
@media print { .nu-sharerail { display: none !important; } }

/* Date-range filter row under the sort row (leg 51) */
.nu-datefilter{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-6px 0 14px}
@media print{.nu-datefilter{display:none}}

/* Search type facets above the sort row (leg 52) */
.nu-searchtabs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
@media print{.nu-searchtabs{display:none}}

/* A–Z index surface at /az/ (leg 53) */
.nu-az-head{margin:28px 0 10px}
.nu-az-title{margin:0 0 4px;font-size:1.5rem}
.nu-az-count{color:#64748b;font-size:.85rem;margin:0 0 14px}
.nu-az-jump{display:flex;flex-wrap:wrap;gap:6px}
.nu-az-letter{min-width:30px;text-align:center;padding:.28rem .5rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-weight:600;font-size:.8rem;text-decoration:none}
.nu-az-letter:hover{border-color:#4c51bf;color:#4c51bf}
.nu-az-group{margin:22px 0 8px}
.nu-az-group-head{font-size:.95rem;letter-spacing:.08em;text-transform:uppercase;color:#4c51bf;border-bottom:2px solid rgba(76,81,191,.35);padding-bottom:4px;margin:0 0 8px}
.nu-az-list{list-style:none;margin:0;padding:0;columns:2;column-gap:28px}
.nu-az-list li{break-inside:avoid;display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:4px 0;border-bottom:1px dashed #eef2f7}
.nu-az-list a{color:#1e293b;text-decoration:none;font-size:.92rem}
.nu-az-list a:hover{color:#4c51bf}
.nu-az-type{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8;white-space:nowrap}
@media (max-width:700px){.nu-az-list{columns:1}}
@media print{.nu-az-jump{display:none}}

/* Jump-to-page control in archive pagination (leg 54) */
.nu-pagejump{display:inline-flex;align-items:center;gap:6px;margin-left:8px}
.nu-pagejump input{width:64px;padding:.3rem .5rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-size:.8rem;font-weight:600}
.nu-pagejump input:focus{outline:2px solid rgba(76,81,191,.4);border-color:#4c51bf}
.nu-pagejump button{padding:.3rem .7rem;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#475569;font-size:.8rem;font-weight:700;cursor:pointer}
.nu-pagejump button:hover{border-color:#4c51bf;color:#4c51bf}
@media print{.nu-pagejump{display:none}}


/* Markdown export chip (leg 55) */
.nu-md{margin-left:2px}

/* Reader highlighter (leg 56) */
mark.nu-hl{background:rgba(76,81,191,.22);color:inherit;padding:0 1px;border-radius:3px;cursor:pointer;border-bottom:1px dashed rgba(76,81,191,.5)}
mark.nu-hl:hover{background:rgba(76,81,191,.35)}
.nu-hltip{padding:.32rem .7rem;border:none;border-radius:999px;background:#4c51bf;color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.02em;cursor:pointer;box-shadow:0 4px 14px rgba(76,81,191,.4)}
.nu-hltip:hover{filter:brightness(1.08)}
@media print{mark.nu-hl{background:none;border-bottom:none}}

/* In-topic prev/next chips (leg 57) */
.nu-intopic{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0}
.nu-intopic-label{font-size:.68rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#94a3b8;margin-right:2px}
.nu-intopic-a{display:inline-flex;align-items:center;gap:6px;max-width:44%;padding:.4rem .8rem;border:1px solid #e2e8f0;border-radius:999px;background:#fff;color:#475569;font-size:.8rem;font-weight:600;text-decoration:none;line-height:1.3}
.nu-intopic-a:hover{border-color:#4c51bf;color:#4c51bf}
.nu-intopic-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nu-intopic-dir{font-weight:800}
.nu-intopic-next{margin-left:auto}
@media(max-width:640px){.nu-intopic-a{max-width:100%}}
@media print{.nu-intopic{display:none}}

/* Archive read-coverage chip (leg 58) */
.nu-coverage{display:inline-flex;align-items:center;gap:.45rem;margin-left:auto;padding:.32rem .75rem;border:1px solid #e2e8f0;border-radius:999px;background:#f8fafc;color:#475569;font-size:.72rem;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.nu-coverage-bar{display:inline-block;width:34px;height:5px;border-radius:999px;background:#e2e8f0;overflow:hidden;vertical-align:1px}
.nu-coverage-bar i{display:block;height:100%;background:#4c51bf;border-radius:999px}
@media print{.nu-coverage{display:none}}

/* Sticky reading bar (leg 59) */
.nu-readbar{position:fixed;top:0;left:0;right:0;z-index:90;display:flex;align-items:center;gap:14px;padding:.55rem 1.1rem;background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border-bottom:1px solid #e2e8f0;box-shadow:0 6px 18px rgba(15,23,42,.06);transform:translateY(-110%);transition:transform .25s ease}
.nu-readbar.on{transform:translateY(0)}
.nu-readbar-t{flex:1;min-width:0;font-size:.85rem;font-weight:800;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nu-readbar-track{flex:0 1 180px;height:4px;border-radius:999px;background:#e2e8f0;overflow:hidden}
.nu-readbar-fill{display:block;height:100%;background:#4c51bf;border-radius:999px}
.nu-readbar-pct{font-size:.72rem;font-weight:800;color:#4c51bf;font-variant-numeric:tabular-nums}
@media(max-width:640px){.nu-readbar-track{display:none}}
@media print{.nu-readbar{display:none}}

/* Surprise-me random-read chip (leg 61) */
.nu-random{border-style:dashed}
@media print{.nu-random{display:none}}

/* Filter-list input in the archive sort row (leg 62) */
.nu-listfilter{display:inline-flex;align-items:center;gap:.45rem}
.nu-listfilter-in{padding:.35rem .8rem;border:1px solid #e2e8f0;border-radius:999px;font-size:.75rem;font-weight:600;color:#334155;background:#fff;min-width:8.5rem;outline:none}
.nu-listfilter-in:focus{border-color:rgba(8,145,178,.55);box-shadow:0 0 0 3px rgba(8,145,178,.12)}
.nu-listfilter-n{font-size:.68rem;font-weight:700;color:#94a3b8;font-variant-numeric:tabular-nums;white-space:nowrap}
.nu-lf-hide{display:none !important}
@media print{.nu-listfilter{display:none}}

/* nu-timeline — month-grouped archive view */
.nu-tlv { cursor: pointer; }
ul.nu-tl-on { grid-template-columns: 1fr !important; gap: 1.1rem !important; }
.nu-tl-wrap { display: block; grid-column: 1 / -1; }
.nu-tl-group { display: grid; gap: 1rem; grid-template-columns: repeat(3, minmax(0, 1fr)); padding-bottom: 1.2rem; margin-bottom: 1.2rem; border-bottom: 1px solid rgba(15, 23, 42, 0.08); position: relative; }
.nu-tl-group::before { content: ""; position: absolute; left: 0; top: 0.4rem; bottom: 0.4rem; width: 3px; border-radius: 3px; background: rgba(76, 81, 191, 0.55); }
.nu-tl-month { grid-column: 1 / -1; margin: 0 0 0.2rem; padding: 0.28rem 0.9rem 0.28rem 1rem; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: #4c51bf; }
@media (max-width: 980px) { .nu-tl-group { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .nu-tl-group { grid-template-columns: 1fr; } }
@media print { .nu-tlv { display: none; } }

/* nu-stick — sticky archive toolbar */
.nu-sort.nu-stick { position: sticky; top: var(--nu-stick-top, 90px); z-index: 26; background: #fff; padding: 0.55rem 0.6rem; margin-bottom: 0.8rem; border-radius: 12px; transition: box-shadow 0.18s ease; }
.nu-sort.nu-stick.nu-stuck { box-shadow: 0 12px 26px -14px rgba(15, 23, 42, 0.5); }
.nu-dark-on .nu-sort.nu-stick { background: #0e1626; }
@media print { .nu-sort.nu-stick { position: static; } }

/* nu-azview — alphabetical index view for archives */
.nu-azv { cursor: pointer; }
.nu-az-wrap { display: block; grid-column: 1 / -1; background: #fff; border: 1px solid rgba(15, 23, 42, 0.08); border-radius: 12px; padding: 1.1rem 1.3rem; }
.nu-az-group { margin-bottom: 1.15rem; }
.nu-az-group:last-child { margin-bottom: 0; }
.nu-az-letter { font-size: 0.72rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--nu-accent, #0891b2); border-bottom: 1px solid rgba(15, 23, 42, 0.1); padding-bottom: 0.3rem; margin: 0 0 0.55rem; }
.nu-az-list { list-style: none; margin: 0; padding: 0; columns: 3; column-gap: 1.6rem; }
.nu-az-list li { break-inside: avoid; margin-bottom: 0.32rem; }
.nu-az-list a { font-size: 0.84rem; color: #0f172a; text-decoration: none; }
.nu-az-list a:hover { color: var(--nu-accent, #0891b2); text-decoration: underline; }
.nu-dark-on .nu-az-wrap { background: #111c30; border-color: rgba(148, 163, 184, 0.2); }
.nu-dark-on .nu-az-list a { color: #cbd5e1; }
@media (max-width: 980px) { .nu-az-list { columns: 2; } }
@media (max-width: 600px) { .nu-az-list { columns: 1; } }
@media print { .nu-azv { display: none; } }

/* nu-notes — per-article reader notes dock */
.nu-notes-n { display: inline-block; min-width: 1.1em; margin-left: 0.25rem; padding: 0 0.3rem; border-radius: 999px; background: var(--nu-accent, #0891b2); color: #fff; font-size: 0.68rem; font-weight: 700; }
.nu-notes-dock { position: fixed; right: 1.1rem; bottom: 1.1rem; z-index: 60; width: 300px; max-width: calc(100vw - 2.2rem); background: #fff; border: 1px solid rgba(15, 23, 42, 0.1); border-top: 3px solid var(--nu-accent, #0891b2); border-radius: 12px; box-shadow: 0 18px 44px -14px rgba(15, 23, 42, 0.4); padding: 0.85rem 0.95rem; display: none; }
.nu-notes-dock.is-open { display: block; }
.nu-notes-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; }
.nu-notes-head strong { font-size: 0.82rem; color: #0f172a; }
.nu-notes-x { border: 0; background: none; font-size: 1.1rem; line-height: 1; color: #94a3b8; cursor: pointer; }
.nu-notes-x:hover { color: #0f172a; }
.nu-notes-list { max-height: 170px; overflow-y: auto; margin-bottom: 0.55rem; }
.nu-notes-empty { font-size: 0.76rem; color: #94a3b8; margin: 0 0 0.4rem; }
.nu-notes-item { position: relative; padding: 0.5rem 1.2rem 0.5rem 0.6rem; margin-bottom: 0.4rem; background: rgba(15, 23, 42, 0.04); border-left: 3px solid var(--nu-accent, #0891b2); border-radius: 6px; }
.nu-notes-text { font-size: 0.8rem; color: #1e293b; margin: 0 0 0.15rem; white-space: pre-wrap; }
.nu-notes-ts { font-size: 0.66rem; color: #94a3b8; }
.nu-notes-rm { position: absolute; top: 0.3rem; right: 0.35rem; border: 0; background: none; color: #94a3b8; cursor: pointer; font-size: 0.95rem; line-height: 1; }
.nu-notes-rm:hover { color: #dc2626; }
.nu-notes-ta { width: 100%; box-sizing: border-box; font-size: 0.8rem; color: #0f172a; border: 1px solid rgba(15, 23, 42, 0.15); border-radius: 8px; padding: 0.45rem 0.55rem; resize: vertical; font-family: inherit; }
.nu-notes-ta:focus { outline: none; border-color: var(--nu-accent, #0891b2); box-shadow: 0 0 0 3px rgba(8, 145, 178, 0.15); }
.nu-notes-add { margin-top: 0.45rem; width: 100%; border: 0; border-radius: 8px; background: var(--nu-accent, #0891b2); color: #fff; font-size: 0.78rem; font-weight: 700; padding: 0.45rem 0; cursor: pointer; }
.nu-notes-add:hover { filter: brightness(1.07); }
.nu-dark-on .nu-notes-dock { background: #111c30; border-color: rgba(148, 163, 184, 0.25); }
.nu-dark-on .nu-notes-head strong { color: #e2e8f0; }
.nu-dark-on .nu-notes-item { background: rgba(148, 163, 184, 0.1); }
.nu-dark-on .nu-notes-text { color: #cbd5e1; }
.nu-dark-on .nu-notes-ta { background: #0e1626; color: #e2e8f0; border-color: rgba(148, 163, 184, 0.3); }
@media (max-width: 600px) { .nu-notes-dock { right: 0.6rem; bottom: 0.6rem; } }
@media print { .nu-notes, .nu-notes-dock { display: none !important; } }

/* =========================================================
   Labeled section rail (leg 69). On very wide screens the
   dot rail becomes an always-visible 'On this page' index —
   titles show without hovering; dots stay under 1600px.
   ========================================================= */
@media (min-width: 1600px) {
  .nu-rail {
    right: 1.4rem;
    padding: 0.8rem 0.9rem;
    background: #fff;
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-radius: 14px;
    box-shadow: 0 10px 30px -14px rgba(15, 23, 42, 0.2);
    gap: 0.3rem;
  }
  .nu-rail::before {
    content: "On this page";
    font-size: 0.6rem;
    font-weight: 800;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--nu-accent);
    margin-bottom: 0.25rem;
  }
  .nu-rail a {
    flex-direction: row-reverse;
    justify-content: flex-end;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.3;
    color: rgba(15, 23, 42, 0.55);
  }
  .nu-rail a::after { width: 5px; height: 5px; }
  .nu-rail a:hover, .nu-rail a.nu-rail-active { font-size: 0.72rem; }
  .nu-dark-on .nu-rail { background: #0e1626; border-color: rgba(148, 163, 184, 0.15); }
  .nu-dark-on .nu-rail a { color: rgba(226, 232, 240, 0.6); }
} /* wide-rail */

/* 'Start at the beginning' chip (leg 121) */
a.nu-startbegin {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.4em;
	margin: 0.9em 0 0;
	padding: 0.5em 1em;
	border: 1px solid var(--nu-line, #e2e8f0);
	border-left: 3px solid var(--nu-accent, #0891b2);
	border-radius: 10px;
	text-decoration: none;
	background: var(--nu-card, #fff);
	grid-column: 1 / -1;
}
a.nu-startbegin:hover { border-color: var(--nu-accent, #0891b2); }
.nu-startbegin-k { font-size: 0.66rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--nu-accent, #0891b2); }
.nu-startbegin-t { font-size: 0.92rem; font-weight: 600; color: inherit; }
@media print { a.nu-startbegin { display: none; } }

/* Topic-scoped search (leg 122) */
.nu-topicsearch {
	display: flex;
	align-items: center;
	gap: 0.5em;
	margin: 0.7em 0 0;
	padding: 0.35em 0.4em 0.35em 0.9em;
	border: 1px solid var(--nu-line, #e2e8f0);
	border-radius: 999px;
	background: var(--nu-card, #fff);
	max-width: 560px;
	grid-column: 1 / -1;
}
.nu-topicsearch-q {
	flex: 1;
	min-width: 0;
	border: 0;
	background: transparent;
	font: inherit;
	font-size: 0.9rem;
	color: inherit;
	outline: none;
}
.nu-topicsearch-btn {
	border: 0;
	border-radius: 999px;
	padding: 0.42em 1.1em;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #fff;
	background: var(--nu-accent, #0891b2);
	cursor: pointer;
}
.nu-topicsearch-btn:hover { filter: brightness(1.08); }
@media print { .nu-topicsearch { display: none; } }

/* 'From the archive' daily pick (leg 123) */
.nu-dailypick {
	display: block;
	margin: 0 0 1.4em;
	padding: 1em 1.4em 1.1em;
	border: 1px solid var(--nu-line, #e2e8f0);
	border-left: 3px solid var(--nu-accent, #0891b2);
	border-radius: 12px;
	background: var(--nu-card, #fff);
	grid-column: 1 / -1;
}
.nu-dailypick-k {
	display: block;
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--nu-accent, #0891b2);
	margin-bottom: 0.35em;
}
.nu-dailypick-t { margin: 0; font-size: 1.3rem; line-height: 1.3; }
.nu-dailypick-t a { color: inherit; text-decoration: none; }
.nu-dailypick-t a:hover { color: var(--nu-accent, #0891b2); }
.nu-dailypick-c {
	display: inline-block;
	margin-top: 0.55em;
	font-size: 0.72rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--nu-muted, #64748b);
	text-decoration: none;
}
.nu-dailypick-c:hover { color: var(--nu-accent, #0891b2); }

.nu-qshare-md {
	font-size: .66rem;
	font-weight: 700;
	color: #e5e7eb;
	background: #111827;
	border: 0;
	border-left: 1px solid rgba( 255,255,255,.14 );
	padding: .45em .8em;
	cursor: pointer;
	white-space: nowrap;
}
.nu-qshare-md:hover { color: var( --nu-accent, #6366f1 ); }

/* ---------------------------------------------------------------
   Rows view (?density=rows, leg 198) — a third archive density:
   single-column one-line scan rows (title + meta), no excerpts or
   imagery, for fastest registry scanning.
   ============================================================ */
body.nu-rows.archive ul.content-wrap.kadence-posts-list,
body.nu-rows.search ul.content-wrap.kadence-posts-list,
body.nu-rows.blog ul.content-wrap.kadence-posts-list {
	grid-template-columns: 1fr;
	gap: 0;
}
body.nu-rows li.entry-list-item {
	border: none;
	border-radius: 0;
	box-shadow: none;
	border-bottom: 1px solid rgba(0,0,0,.08);
}
body.nu-rows article.loop-entry {
	display: flex;
	align-items: baseline;
	gap: .9rem;
	padding: .5rem .4rem;
	margin: 0;
	box-shadow: none;
}
body.nu-rows article.loop-entry .entry-title {
	font-size: .95rem;
	line-height: 1.35;
	margin: 0;
}
body.nu-rows article.loop-entry .entry-summary,
body.nu-rows article.loop-entry .post-more-link,
body.nu-rows article.loop-entry .post-thumbnail,
body.nu-rows article.loop-entry figure,
body.nu-rows article.loop-entry .entry-content {
	display: none;
}
body.nu-rows article.loop-entry .entry-meta {
	font-size: .7rem;
	margin-left: auto;
	white-space: nowrap;
}
body.nu-rows article.loop-entry .category-links {
	margin-left: auto;
}
body.nu-rows article.loop-entry .category-links a {
	font-size: .62rem;
	padding: .1rem .45rem;
}

/* Rows internal layout — header flattens into the flex row, footer
   and decorative blocks hide; title ellipsizes to one line. */
body.nu-rows article.loop-entry .entry-content-wrap {
	display: flex;
	align-items: center;
	gap: .8rem;
	width: 100%;
	min-width: 0;
}
body.nu-rows article.loop-entry .entry-header { display: contents; }
body.nu-rows article.loop-entry .entry-footer { display: none; }
body.nu-rows article.loop-entry .entry-title {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
body.nu-rows article.loop-entry .entry-taxonomies { margin: 0; }
body.nu-rows article.loop-entry .entry-meta { margin-left: auto; }

/* Rows — collapse Kadence's generous card padding. */
body.nu-rows article.loop-entry .entry-content-wrap { padding: .4rem .8rem; }
body.nu-rows article.loop-entry { padding: 0; }
body.nu-rows li.entry-list-item.nv-lead-card,
body.nu-rows li.entry-list-item { min-height: 0; }
