/**
 * Cyber Canvas Theme — Design System
 *
 * Foundation CSS for the Cyber Canvas WordPress theme.
 * Applies to PHP fallback templates; Elementor Theme Builder
 * templates override layout but inherit these CSS custom props.
 *
 * Structure:
 *  1. Design Tokens
 *  2. Reset
 *  3. Typography
 *  4. Layout
 *  5. Header & Navigation
 *  6. Content / Posts
 *  7. Sidebar & Widgets
 *  8. Footer
 *  9. Archive & Page Headers
 * 10. 404 / No Results
 * 11. Comments
 * 12. Pagination
 * 13. Forms & Buttons
 * 14. Tables
 * 15. Dark Mode Utilities
 * 16. Accessibility
 * 17. Reduced Motion
 * 18. Print
 *
 * @package CyberCanvas
 */

/* ============================================================
   1. Design Tokens
   ============================================================ */
:root {
	/* Fonts */
	--cc-font-sans:    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--cc-font-mono:    "JetBrains Mono", "Fira Code", "SF Mono", Consolas, monospace;
	--cc-font-heading: var(--cc-font-sans);

	/* Type scale */
	--cc-text-xs:   0.75rem;
	--cc-text-sm:   0.875rem;
	--cc-text-base: 1rem;
	--cc-text-lg:   1.125rem;
	--cc-text-xl:   1.25rem;
	--cc-text-2xl:  1.5rem;
	--cc-text-3xl:  clamp(1.5rem, 3vw, 2rem);
	--cc-text-4xl:  clamp(1.75rem, 3.5vw, 2.5rem);
	--cc-text-5xl:  clamp(2rem, 4vw, 2.75rem);

	/* Border radii */
	--cc-radius-xs: 4px;
	--cc-radius-sm: 6px;
	--cc-radius-md: 10px;
	--cc-radius-lg: 16px;
	--cc-radius-xl: 24px;
	--cc-radius-full: 9999px;

	/* Spacing */
	--cc-space-1:  0.25rem;
	--cc-space-2:  0.5rem;
	--cc-space-3:  0.75rem;
	--cc-space-4:  1rem;
	--cc-space-5:  1.25rem;
	--cc-space-6:  1.5rem;
	--cc-space-8:  2rem;
	--cc-space-10: 2.5rem;
	--cc-space-12: 3rem;
	--cc-space-16: 4rem;

	/* Layout */
	--cc-container:    1140px;
	--cc-gutter:       clamp(1rem, 4vw, 2.5rem);
	--cc-header-height: 68px;

	/* Shadows */
	--cc-shadow-xs:  0 1px 2px rgba(0,0,0,.06);
	--cc-shadow-sm:  0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.06);
	--cc-shadow-md:  0 4px 6px rgba(0,0,0,.06), 0 2px 4px rgba(0,0,0,.04);
	--cc-shadow-lg:  0 10px 15px rgba(0,0,0,.07), 0 4px 6px rgba(0,0,0,.05);
	--cc-shadow-xl:  0 20px 25px rgba(0,0,0,.08), 0 10px 10px rgba(0,0,0,.04);

	/* Transitions */
	--cc-ease:        cubic-bezier(.4,0,.2,1);
	--cc-duration-fast: 120ms;
	--cc-duration:    200ms;
	--cc-duration-slow: 350ms;

	/*
	 * Colour palette — DO NOT declare --cc-* colour variables here.
	 * ALL colour vars are set by Theme_Settings::output_custom_css()
	 * from DB values. This file only CONSUMES them via var(--cc-*).
	 *
	 * Layout-only vars that are NOT colour (--cc-code-text, --cc-pre-bg,
	 * --cc-surface-2, --cc-border-light) remain here as they are
	 * structural tokens not managed by the colour palette system.
	 */
	--cc-surface-2:    #f1f5f9;
	--cc-border-light: #f1f5f9;
	--cc-code-text: #be185d;
	--cc-pre-bg:    #0f172a;
}

/* ============================================================
   2. Reset
   ============================================================ */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
	-webkit-text-size-adjust: 100%;
	tab-size: 4;
}

body {
	margin: 0;
	font-family: var(--cc-font-sans);
	font-size: var(--cc-text-base);
	line-height: 1.7;
	color: var(--cc-text);
	background-color: var(--cc-site-bg, var(--cc-bg));
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

img,
video,
svg {
	max-width: 100%;
	height: auto;
	display: block;
}

ul,
ol {
	padding-left: 1.5em;
}

/* ============================================================
   3. Typography
   ============================================================ */
h1, h2, h3, h4, h5, h6 {
	font-family: var(--cc-font-heading);
	color: var(--cc-heading);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.02em;
	margin: 0 0 var(--cc-space-4);
}

h1 { font-size: var(--cc-text-5xl); }
h2 { font-size: var(--cc-text-4xl); }
h3 { font-size: var(--cc-text-3xl); }
h4 { font-size: var(--cc-text-xl); }
h5 { font-size: var(--cc-text-lg); }
h6 { font-size: var(--cc-text-base); letter-spacing: 0; }

p {
	margin: 0 0 var(--cc-space-5);
}

p:last-child {
	margin-bottom: 0;
}

small {
	font-size: var(--cc-text-sm);
	color: var(--cc-muted);
}

strong {
	font-weight: 700;
}

em {
	font-style: italic;
}

a {
	color: var(--cc-link);
	text-decoration: none;
	transition: color var(--cc-duration-fast) var(--cc-ease);
}

a:hover {
	color: var(--cc-link-hover);
}

::selection {
	background: var(--cc-primary);
	color: var(--cc-btn-text);
}

:focus-visible {
	outline: 2px solid var(--cc-primary);
	outline-offset: 3px;
	border-radius: var(--cc-radius-xs);
}

blockquote {
	margin: var(--cc-space-8) 0;
	padding: var(--cc-space-5) var(--cc-space-6);
	border-left: 3px solid var(--cc-primary);
	background: var(--cc-surface);
	border-radius: 0 var(--cc-radius-md) var(--cc-radius-md) 0;
	color: var(--cc-muted);
	font-style: italic;
	font-size: var(--cc-text-lg);
}

blockquote cite {
	display: block;
	margin-top: var(--cc-space-3);
	font-size: var(--cc-text-sm);
	font-style: normal;
	font-weight: 600;
	color: var(--cc-text);
}

code,
kbd,
samp {
	font-family: var(--cc-font-mono);
	font-size: 0.875em;
}

code {
	background: var(--cc-code-bg);
	padding: 0.15em 0.45em;
	border-radius: var(--cc-radius-xs);
	color: var(--cc-code-text);
	word-break: break-word;
}

pre {
	overflow-x: auto;
	padding: var(--cc-space-5) var(--cc-space-6);
	background: var(--cc-pre-bg);
	color: var(--cc-code-text);
	border-radius: var(--cc-radius-md);
	line-height: 1.65;
	font-size: var(--cc-text-sm);
	tab-size: 2;
}

pre code {
	background: none;
	padding: 0;
	color: inherit;
	font-size: inherit;
	border-radius: 0;
	word-break: normal;
}

kbd {
	background: var(--cc-surface-2);
	border: 1px solid var(--cc-border);
	border-radius: var(--cc-radius-xs);
	padding: 0.1em 0.5em;
	font-size: 0.8125em;
	box-shadow: 0 1px 0 var(--cc-border);
}

hr {
	border: none;
	height: 1px;
	background: var(--cc-border);
	margin: var(--cc-space-10) 0;
}

/* ============================================================
   4. Layout
   ============================================================ */
.site-content-wrapper {
	min-height: calc(100vh - var(--cc-header-height) - 200px);
}

.site-main {
	max-width: var(--cc-container);
	margin: 0 auto;
	padding: clamp(2rem, 6vw, 4rem) var(--cc-gutter);
}

.container {
	max-width: var(--cc-container);
	margin-inline: auto;
	padding-inline: var(--cc-gutter);
}

.cc-container {
	max-width: var(--cc-container);
	margin-inline: auto;
	padding-inline: var(--cc-gutter);
}

/* ── Elementor full-width: strip all theme wrapper constraints ── */
.cc-elementor-page .site-main,
.cc-elementor-page #content,
.cc-elementor-page #content-wrapper {
	max-width: none;
	width: 100%;
	padding: 0;
	margin: 0;
}

.cc-elementor-page .site-content-wrapper {
	min-height: 0;
}

/* Elementor Canvas template: also hide the fallback header/footer */
.cc-elementor-canvas .site-header,
.cc-elementor-canvas .site-footer {
	display: none;
}

/* ============================================================
   5. Header & Navigation
   ============================================================ */
.site-header {
	height: var(--cc-header-height);
	position: sticky;
	top: 0;
	z-index: 200;
	background: rgba(255,255,255,.88);
	border-bottom: 1px solid var(--cc-border);
	backdrop-filter: blur(16px) saturate(180%);
	-webkit-backdrop-filter: blur(16px) saturate(180%);
	transition:
		background-color var(--cc-duration) var(--cc-ease),
		border-color var(--cc-duration) var(--cc-ease),
		box-shadow var(--cc-duration) var(--cc-ease);
}

[data-theme="dark"] .site-header {
	background: color-mix(in srgb, var(--cc-bg) 88%, transparent);
	border-bottom-color: var(--cc-border-light);
}

.site-header__inner {
	max-width: var(--cc-container);
	height: 100%;
	margin-inline: auto;
	padding-inline: var(--cc-gutter);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--cc-space-8);
}

/* Branding */
.site-branding {
	display: flex;
	align-items: center;
	gap: var(--cc-space-3);
	flex-shrink: 0;
	text-decoration: none;
}

.site-branding img {
	display: block;
	height: 36px;
	width: auto;
}

.site-title {
	margin: 0;
	font-size: var(--cc-text-xl);
	font-weight: 800;
	letter-spacing: -0.03em;
	line-height: 1;
}

.site-title a {
	color: var(--cc-heading);
	text-decoration: none;
	transition: opacity var(--cc-duration-fast) var(--cc-ease);
}

.site-title a:hover {
	opacity: 0.7;
}

.site-description {
	margin: 0;
	font-size: var(--cc-text-xs);
	color: var(--cc-muted);
	display: none;
}

@media (min-width: 640px) {
	.site-description {
		display: block;
	}
}

/* Primary nav */
.main-navigation {
	display: flex;
	align-items: center;
}

.main-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	gap: var(--cc-space-1);
}

.main-navigation li {
	position: relative;
}

.main-navigation a {
	display: flex;
	align-items: center;
	padding: var(--cc-space-2) var(--cc-space-3);
	font-size: var(--cc-text-sm);
	font-weight: 500;
	color: var(--cc-muted);
	border-radius: var(--cc-radius-sm);
	transition:
		color var(--cc-duration-fast) var(--cc-ease),
		background-color var(--cc-duration-fast) var(--cc-ease);
	white-space: nowrap;
}

.main-navigation a:hover,
.main-navigation .current-menu-item > a,
.main-navigation .current-menu-ancestor > a {
	color: var(--cc-heading);
	background: var(--cc-surface);
}

/* Dropdown */
.main-navigation .sub-menu {
	position: absolute;
	top: calc(100% + var(--cc-space-2));
	left: 0;
	min-width: 200px;
	background: var(--cc-bg);
	border: 1px solid var(--cc-border);
	border-radius: var(--cc-radius-md);
	box-shadow: var(--cc-shadow-lg);
	flex-direction: column;
	gap: var(--cc-space-1);
	padding: var(--cc-space-2);
	display: none;
	z-index: 300;
}

.main-navigation li:hover > .sub-menu,
.main-navigation li:focus-within > .sub-menu {
	display: flex;
}

.main-navigation .sub-menu a {
	width: 100%;
	border-radius: var(--cc-radius-sm);
}

/* ============================================================
   6. Content / Posts
   ============================================================ */
article.post,
article.page {
	margin-bottom: var(--cc-space-12);
}

article.post:not(:last-child) {
	padding-bottom: var(--cc-space-12);
	border-bottom: 1px solid var(--cc-border);
}

.entry-header {
	margin-bottom: var(--cc-space-6);
}

.entry-title {
	margin: 0 0 var(--cc-space-2);
	font-size: clamp(1.5rem, 3vw, 2.25rem);
}

.entry-title a {
	color: inherit;
	text-decoration: none;
	transition: color var(--cc-duration-fast) var(--cc-ease);
}

.entry-title a:hover {
	color: var(--cc-primary);
}

.entry-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--cc-space-4);
	font-size: var(--cc-text-sm);
	color: var(--cc-muted);
}

.entry-meta a {
	color: var(--cc-muted);
	text-decoration: none;
}

.entry-meta a:hover {
	color: var(--cc-primary);
}

.entry-content {
	font-size: var(--cc-text-lg);
	line-height: 1.8;
	color: var(--cc-text);
}

.entry-content > * + * {
	margin-top: var(--cc-space-5);
}

.entry-content > *:first-child {
	margin-top: 0;
}

.post-thumbnail {
	margin-bottom: var(--cc-space-8);
	overflow: hidden;
	border-radius: var(--cc-radius-lg);
	box-shadow: var(--cc-shadow-md);
}

.post-thumbnail img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	transition: transform var(--cc-duration-slow) var(--cc-ease);
}

.post-thumbnail a:hover img {
	transform: scale(1.04);
}

.entry-footer {
	margin-top: var(--cc-space-10);
	padding-top: var(--cc-space-6);
	border-top: 1px solid var(--cc-border);
	font-size: var(--cc-text-sm);
	color: var(--cc-muted);
	display: flex;
	flex-wrap: wrap;
	gap: var(--cc-space-4);
}

.entry-footer a {
	color: var(--cc-primary);
	text-decoration: none;
}

.entry-footer a:hover {
	text-decoration: underline;
}

/* ============================================================
   7. Sidebar & Widgets
   ============================================================ */
.widget-area {
	max-width: var(--cc-container);
	margin: 0 auto;
	padding: 0 var(--cc-gutter) var(--cc-space-12);
}

.widget {
	margin-bottom: var(--cc-space-8);
	padding: var(--cc-space-6);
	background: var(--cc-surface);
	border-radius: var(--cc-radius-lg);
	border: 1px solid var(--cc-border);
}

.widget-title {
	font-size: var(--cc-text-xs);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--cc-muted);
	margin: 0 0 var(--cc-space-4);
	padding-bottom: var(--cc-space-3);
	border-bottom: 2px solid var(--cc-primary);
}

.widget ul {
	list-style: none;
	padding: 0;
	margin: 0;
}

.widget li {
	padding: var(--cc-space-2) 0;
	border-bottom: 1px solid var(--cc-border-light);
	font-size: var(--cc-text-sm);
}

.widget li:last-child {
	border-bottom: none;
}

.widget li a {
	color: var(--cc-text);
	text-decoration: none;
}

.widget li a:hover {
	color: var(--cc-primary);
}

/* ============================================================
   8. Footer
   ============================================================ */
.site-footer {
	background: var(--cc-surface);
	border-top: 1px solid var(--cc-border);
	padding: var(--cc-space-10) var(--cc-gutter);
	margin-top: auto;
}

.site-footer__inner {
	max-width: var(--cc-container);
	margin-inline: auto;
}

.footer-widgets {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: var(--cc-space-8);
	text-align: left;
	margin-bottom: var(--cc-space-8);
	padding-bottom: var(--cc-space-8);
	border-bottom: 1px solid var(--cc-border);
}

.site-info {
	font-size: var(--cc-text-sm);
	color: var(--cc-muted);
	text-align: center;
}

.site-info a {
	color: var(--cc-muted);
	font-weight: 500;
	text-decoration: none;
}

.site-info a:hover {
	color: var(--cc-primary);
}

/* ============================================================
   9. Archive & Page Headers
   ============================================================ */
.page-header {
	margin-bottom: var(--cc-space-10);
	padding-bottom: var(--cc-space-6);
	border-bottom: 1px solid var(--cc-border);
}

.page-title {
	font-size: var(--cc-text-4xl);
	color: var(--cc-heading);
	margin-bottom: var(--cc-space-2);
}

.archive-description {
	font-size: var(--cc-text-lg);
	color: var(--cc-muted);
	line-height: 1.7;
}

/* ============================================================
   10. 404 / No Results
   ============================================================ */
.error-404 .page-content,
.no-results .page-content {
	text-align: center;
	padding: var(--cc-space-16) var(--cc-space-4);
}

.error-404 .page-title {
	font-size: clamp(2.5rem, 6vw, 4rem);
	margin-bottom: var(--cc-space-3);
}

.error-404 p,
.no-results p {
	font-size: var(--cc-text-lg);
	color: var(--cc-muted);
	max-width: 480px;
	margin-inline: auto;
	margin-bottom: var(--cc-space-8);
}

/* ============================================================
   11. Comments
   ============================================================ */
.comments-area {
	max-width: 720px;
	margin: var(--cc-space-12) auto;
	padding: 0 var(--cc-gutter);
}

.comments-title {
	font-size: var(--cc-text-2xl);
	margin-bottom: var(--cc-space-6);
}

.comment-list {
	list-style: none;
	padding: 0;
	margin: 0;
}

.comment-list .comment {
	padding: var(--cc-space-5) 0;
	border-bottom: 1px solid var(--cc-border);
}

.comment-list .comment:last-child {
	border-bottom: none;
}

.comment-author {
	display: flex;
	align-items: center;
	gap: var(--cc-space-3);
	margin-bottom: var(--cc-space-3);
}

.comment-author .avatar {
	border-radius: var(--cc-radius-full);
}

.comment-respond {
	margin-top: var(--cc-space-8);
	padding: var(--cc-space-8);
	background: var(--cc-surface);
	border-radius: var(--cc-radius-lg);
	border: 1px solid var(--cc-border);
}

.comment-reply-title {
	font-size: var(--cc-text-xl);
	margin-bottom: var(--cc-space-5);
}

/* ============================================================
   12. Pagination
   ============================================================ */
.nav-links {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: var(--cc-space-2);
	margin: var(--cc-space-12) 0;
}

.nav-links a,
.nav-links span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 var(--cc-space-3);
	font-size: var(--cc-text-sm);
	font-weight: 500;
	border-radius: var(--cc-radius-sm);
	border: 1px solid var(--cc-border);
	color: var(--cc-text);
	text-decoration: none;
	transition:
		background var(--cc-duration-fast) var(--cc-ease),
		border-color var(--cc-duration-fast) var(--cc-ease),
		color var(--cc-duration-fast) var(--cc-ease);
}

.nav-links a:hover {
	background: var(--cc-surface);
	border-color: var(--cc-primary);
	color: var(--cc-primary);
}

.nav-links .current {
	background: var(--cc-primary);
	border-color: var(--cc-primary);
	color: var(--cc-btn-text);
}

.post-navigation {
	margin: var(--cc-space-12) 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--cc-space-4);
}

@media (max-width: 640px) {
	.post-navigation {
		grid-template-columns: 1fr;
	}
}

.post-navigation a {
	display: block;
	padding: var(--cc-space-5);
	background: var(--cc-surface);
	border: 1px solid var(--cc-border);
	border-radius: var(--cc-radius-md);
	text-decoration: none;
	transition:
		border-color var(--cc-duration-fast) var(--cc-ease),
		box-shadow var(--cc-duration-fast) var(--cc-ease);
}

.post-navigation a:hover {
	border-color: var(--cc-primary);
	box-shadow: var(--cc-shadow-sm);
}

.post-navigation .nav-subtitle {
	display: block;
	font-size: var(--cc-text-xs);
	text-transform: uppercase;
	letter-spacing: 0.07em;
	font-weight: 700;
	color: var(--cc-muted);
	margin-bottom: var(--cc-space-2);
}

.post-navigation .nav-title {
	font-size: var(--cc-text-sm);
	font-weight: 600;
	color: var(--cc-heading);
	line-height: 1.4;
}

/* ============================================================
   13. Forms & Buttons
   ============================================================ */
input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="tel"],
textarea,
select {
	font-family: var(--cc-font-sans);
	font-size: var(--cc-text-base);
	line-height: 1.5;
	padding: var(--cc-space-3) var(--cc-space-4);
	border: 1px solid var(--cc-input-border);
	border-radius: var(--cc-radius-sm);
	background: var(--cc-input-bg);
	color: var(--cc-text);
	width: 100%;
	max-width: 100%;
	outline: none;
	appearance: none;
	transition:
		border-color var(--cc-duration-fast) var(--cc-ease),
		box-shadow var(--cc-duration-fast) var(--cc-ease);
}

input:focus,
textarea:focus,
select:focus {
	border-color: var(--cc-primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--cc-primary) 18%, transparent);
}

textarea {
	resize: vertical;
	min-height: 120px;
}

::placeholder {
	color: var(--cc-placeholder);
	opacity: 1;
}

label {
	display: block;
	font-size: var(--cc-text-sm);
	font-weight: 600;
	color: var(--cc-heading);
	margin-bottom: var(--cc-space-2);
}

.form-group {
	margin-bottom: var(--cc-space-5);
}

/* Buttons */
button,
.button,
input[type="submit"],
input[type="button"],
input[type="reset"] {
	font-family: var(--cc-font-sans);
	font-size: var(--cc-text-sm);
	font-weight: 600;
	line-height: 1;
	padding: var(--cc-space-3) var(--cc-space-6);
	border: 1px solid transparent;
	border-radius: var(--cc-radius-sm);
	background: var(--cc-btn-bg, var(--cc-primary));
	color: var(--cc-btn-text);
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--cc-space-2);
	text-decoration: none;
	transition:
		background-color var(--cc-duration-fast) var(--cc-ease),
		transform var(--cc-duration-fast) var(--cc-ease),
		box-shadow var(--cc-duration-fast) var(--cc-ease);
	user-select: none;
}

button:hover,
.button:hover,
input[type="submit"]:hover,
input[type="button"]:hover {
	background: color-mix(in srgb, var(--cc-btn-bg, var(--cc-primary)) 82%, var(--cc-link-hover, var(--cc-accent)));
	transform: translateY(-1px);
	box-shadow: var(--cc-shadow-md);
}

button:active,
input[type="submit"]:active,
.button:active {
	transform: translateY(0);
	box-shadow: none;
}

button:disabled,
input[type="submit"]:disabled {
	opacity: 0.55;
	cursor: not-allowed;
	transform: none;
}

/* Search */
.search-form {
	display: flex;
	gap: var(--cc-space-2);
	max-width: 480px;
}

.search-form .search-field {
	flex: 1;
}

.search-form .search-submit {
	flex-shrink: 0;
}

/* ============================================================
   14. Tables
   ============================================================ */
table {
	width: 100%;
	border-collapse: collapse;
	margin: var(--cc-space-6) 0;
	font-size: var(--cc-text-sm);
}

thead tr {
	border-bottom: 2px solid var(--cc-border);
}

th,
td {
	padding: var(--cc-space-3) var(--cc-space-4);
	text-align: left;
	border-bottom: 1px solid var(--cc-border);
}

th {
	font-size: var(--cc-text-xs);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--cc-muted);
	background: var(--cc-surface);
}

tbody tr:hover td {
	background: var(--cc-surface);
}

/* ============================================================
   15. Dark Mode Utilities
   ============================================================ */

/* Visibility */
[data-theme="dark"] .cc-dm-light-only {
	display: none !important;
}

[data-theme="light"] .cc-dm-dark-only,
:root:not([data-theme]) .cc-dm-dark-only {
	display: none !important;
}

/* Filter */
[data-theme="dark"] [data-cc-dm-filter] {
	filter: var(--cc-dm-el-filter);
}

/* Image swap */
[data-cc-dm-image] img {
	transition: opacity var(--cc-duration) var(--cc-ease);
}

/*
 * Dark mode structural tokens only.
 * ALL colour vars (--cc-surface, --cc-border, --cc-muted, etc.)
 * are set by Theme_Settings::output_custom_css() from DB values.
 * Only non-colour layout tokens belong here.
 */
[data-theme="dark"] {
	--cc-surface-2:    #1a2540;
	--cc-border-light: rgba(255,255,255,.06);
	--cc-shadow-sm:    0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.2);
	--cc-shadow-md:    0 4px 6px rgba(0,0,0,.3), 0 2px 4px rgba(0,0,0,.2);
	--cc-shadow-lg:    0 10px 15px rgba(0,0,0,.35), 0 4px 6px rgba(0,0,0,.2);
}

/* ============================================================
   Woo Product Loop — cc-ps-card template override
   Resets default WooCommerce li.product styles and applies the
   Product Showcase grid layout to all product loops.
   ============================================================ */
.cc-ps-woo-loop ul.products {
	display: grid !important;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
	list-style: none;
	padding: 0;
	margin: 0;
	float: none !important;
	width: 100% !important;
}

.cc-ps-woo-loop ul.products::before,
.cc-ps-woo-loop ul.products::after {
	display: none !important;           /* kill clearfix floats */
}

.cc-ps-woo-loop ul.products li.product {
	list-style: none;
	margin: 0 !important;
	padding: 0 !important;
	width: auto !important;
	float: none !important;
	background: none !important;
	border: none !important;
	box-shadow: none !important;
	overflow: visible !important;
	text-align: left;
}

/* Responsive columns — mirror product-showcase.css breakpoints */
@media (min-width: 769px) and (max-width: 1024px) {
	.cc-ps-woo-loop ul.products {
		grid-template-columns: repeat(3, 1fr);
	}
}

@media (max-width: 768px) {
	.cc-ps-woo-loop ul.products {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 480px) {
	.cc-ps-woo-loop ul.products {
		grid-template-columns: 1fr;
	}
}

/* ============================================================
   16. Accessibility
   ============================================================ */
.screen-reader-text {
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	width: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	word-wrap: normal !important;
}

.screen-reader-text:focus {
	clip: auto !important;
	clip-path: none;
	display: block;
	height: auto;
	width: auto;
	z-index: 100000;
	background: var(--cc-bg);
	color: var(--cc-heading);
	font-size: var(--cc-text-sm);
	font-weight: 600;
	padding: var(--cc-space-4) var(--cc-space-6);
	border-radius: var(--cc-radius-sm);
	box-shadow: var(--cc-shadow-xl);
	top: var(--cc-space-4);
	left: var(--cc-space-4);
}

.skip-link {
	position: absolute;
	transform: translateY(-200%);
}

.skip-link:focus {
	transform: translateY(0);
}

/* ============================================================
   17. Reduced Motion
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ============================================================
   18. Print
   ============================================================ */
@media print {
	.site-header,
	.site-footer,
	.main-navigation,
	.comments-area,
	.post-navigation,
	.nav-links,
	.widget-area {
		display: none !important;
	}

	body {
		color: #000;
		background: #fff;
		font-size: 12pt;
		line-height: 1.6;
	}

	a {
		color: #000;
		text-decoration: underline;
	}

	a[href^="http"]::after {
		content: " (" attr(href) ")";
		font-size: 0.8em;
		color: #555;
	}

	h1, h2, h3, h4, h5, h6 {
		page-break-after: avoid;
		color: #000;
	}

	img {
		max-width: 100%;
		page-break-inside: avoid;
	}

	.entry-content {
		font-size: 11pt;
	}
}
