/*
Theme Name: Flash Cache 2026
Theme URI: https://flashcache.net/
Author: etruel
Author URI: https://etruel.com/
Description: Theme of flashcache.net. Classic, dependency-free, built for speed.
Version: 1.0
Requires at least: 6.3
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: flash-cache-2026
*/

/* ---------- Tokens ---------- */
:root {
	--fc-accent: #00e065;
	--fc-accent-ink: #fff;
	--fc-pro: #0e9fd2;
	--fc-text: #333;
	--fc-text-2: #555;
	--fc-heading: #333;
	--fc-dark: #191919;
	--fc-black: #0a0a0a;
	--fc-light: #f7f7f7;
	--fc-line: #e5e5e5;
	--fc-font: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--fc-max: 1200px;
	--fc-gutter: 15px;
	--fc-header-h: 164px;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
	margin: 0;
	font: 400 18px/1.44 var(--fc-font);
	color: var(--fc-text);
	background: #fff;
	-webkit-font-smoothing: antialiased;
}
img, video, svg { max-width: 100%; height: auto; }
a { color: inherit; }
h1, h2, h3, h4, h5, h6 { margin: 0 0 .5em; font-weight: 800; line-height: 1.15; color: var(--fc-heading); }
h1 { font-size: 36px; }
h2 { font-size: 30px; }
h3 { font-size: 24px; }
h4 { font-size: 20px; }
h5, h6 { font-size: 18px; }
p { margin: 0 0 1.2em; }
.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px); white-space: nowrap;
}
.screen-reader-text:focus {
	position: fixed !important; top: 8px; left: 8px; z-index: 100000; width: auto; height: auto;
	padding: 12px 20px; clip: auto; background: #fff; color: #000; box-shadow: 0 0 6px rgba(0,0,0,.4);
}
.container { width: 100%; max-width: var(--fc-max); margin-inline: auto; padding-inline: var(--fc-gutter); }

/* Buttons */
.button,
.wp-block-button__link,
.wp-element-button,
input[type="submit"],
button.submit {
	display: inline-block;
	padding: .8em 1.7em;
	border: 2px solid var(--fc-accent);
	border-radius: 0;
	background: var(--fc-accent);
	color: var(--fc-accent-ink);
	font: 500 16px/1.2 var(--fc-font);
	text-decoration: none;
	cursor: pointer;
	transition: background-color .2s, color .2s, border-color .2s;
}
.button:hover, .button:focus-visible,
.wp-block-button__link:hover, .wp-element-button:hover, input[type="submit"]:hover {
	background: transparent;
	color: var(--fc-accent);
}
.wp-block-button.is-style-outline .wp-block-button__link { background: transparent; color: var(--fc-accent); }
.wp-block-button.is-style-outline .wp-block-button__link:hover { background: var(--fc-accent); color: var(--fc-accent-ink); }

/* Forms */
input[type="text"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], textarea, select {
	width: 100%; padding: .7em .9em; border: 1px solid #ccc; border-radius: 0; background: #fff;
	color: var(--fc-text); font: inherit;
}
input:focus-visible, textarea:focus-visible, select:focus-visible { outline: 2px solid var(--fc-accent); outline-offset: 0; }
.search-form { display: flex; gap: 8px; }
.search-form label { flex: 1; }
.search-form .search-submit { width: auto; }

/* ---------- Header ---------- */
.site-header {
	position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 50;
	background: var(--fc-dark); color: #fff;
	transition: transform .3s ease, background-color .3s ease;
}
.site-header.is-stuck { background: var(--fc-black); }
.site-header.is-hidden { transform: translateY(-100%); }
.site-header-inner {
	display: flex; align-items: center; justify-content: space-between; gap: 24px;
	min-height: var(--fc-header-h);
}
.site-branding img { display: block; width: auto; max-width: 120px; height: auto; max-height: 120px; }
.site-title { font-size: 24px; font-weight: 800; text-decoration: none; color: #fff; }
.site-nav .menu { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0 10px; margin: 0; padding: 0; list-style: none; }
.site-nav .menu > li { position: relative; margin: 0 10px 0 0; }
.site-nav a {
	display: block; padding: 10px 0; font-weight: 600; line-height: 1.2; color: #fff; text-decoration: none;
	border-bottom: 3px solid transparent;
}
.site-nav a:hover, .site-nav a:focus-visible { color: var(--fc-accent); }
.site-nav .current-menu-item > a,
.site-nav .current-menu-ancestor > a,
.site-nav .current-menu-parent > a { border-bottom-color: var(--fc-accent); }
.site-nav .sub-menu {
	position: absolute; top: 100%; left: 0; min-width: 200px; margin: 0; padding: 8px 16px; list-style: none;
	background: var(--fc-black); opacity: 0; visibility: hidden; transition: opacity .2s;
}
.site-nav li:hover > .sub-menu, .site-nav li:focus-within > .sub-menu { opacity: 1; visibility: visible; }
.nav-toggle {
	display: none; align-items: center; gap: 10px; padding: 8px 0; border: 0; background: none;
	color: #fff; font: 600 16px/1 var(--fc-font); cursor: pointer;
}
.nav-toggle-bars, .nav-toggle-bars::before, .nav-toggle-bars::after {
	display: block; width: 22px; height: 2px; background: currentColor; content: ""; transition: transform .2s;
}
.nav-toggle-bars { position: relative; }
.nav-toggle-bars::before { position: absolute; top: -7px; }
.nav-toggle-bars::after { position: absolute; top: 7px; }

/* Landing pages that open with a hero: the header floats transparent over it, menu centred, logo hidden. */
.has-hero .site-header { position: absolute; inset: var(--wp-admin--admin-bar--height, 0px) 0 auto 0; background: transparent; }
.has-hero .site-header.is-stuck { position: fixed; background: var(--fc-black); }
.has-hero .site-header-inner { min-height: 180px; justify-content: center; }
.has-hero .site-header .site-branding { display: none; }
.has-hero .site-header .site-nav .menu { justify-content: center; }
.has-hero .site-header.is-stuck .site-header-inner { min-height: 80px; }

@media (max-width: 991px) {
	:root { --fc-header-h: 90px; }
	.nav-toggle { display: inline-flex; }
	.site-nav {
		position: absolute; top: 100%; left: 0; right: 0; display: none; padding: 8px var(--fc-gutter) 20px;
		background: var(--fc-black);
	}
	.nav-open .site-nav { display: block; }
	.site-nav .menu { flex-direction: column; gap: 0; }
	.site-nav .menu > li { margin: 0; }
	.site-nav a { padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.1); }
	.site-nav .sub-menu { position: static; opacity: 1; visibility: visible; padding: 0 0 0 16px; background: none; }
	.site-branding img { max-width: 64px; max-height: 64px; }
	.has-hero .site-header-inner { min-height: 90px; justify-content: flex-end; }
	.has-hero .site-header.is-stuck .site-header-inner { min-height: 70px; }
}

/* ---------- Footer ---------- */
.site-footer { position: relative; background: var(--fc-dark); color: #fff; }
.footer-widgets { padding: 60px 0 20px; border-bottom: 1px solid rgba(255,255,255,.1); }
.footer-widgets-inner { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 40px; }
.footer-widgets .widget-title { color: #fff; font-size: 16px; }
.footer-info { padding: 22px 0; font-size: 16px; }
.footer-info-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 24px; }
.footer-copy a { text-decoration: underline; text-underline-offset: 3px; }
.footer-copy a:hover { color: var(--fc-accent); }
.footer-credit img { vertical-align: baseline; height: 13px; width: auto; margin-top: -5px; }
.to-top {
	position: fixed; right: 24px; bottom: 24px; z-index: 40; width: 50px; height: 50px;
	display: flex; align-items: center; justify-content: center;
	border: 1px solid var(--fc-line); background: #fff; color: #000; box-shadow: 0 2px 10px rgba(0,0,0,.15);
	cursor: pointer; opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity .2s, transform .2s, visibility .2s;
}
.to-top.is-visible { opacity: 1; visibility: visible; transform: none; }
.to-top:hover { background: var(--fc-accent); color: #fff; border-color: var(--fc-accent); }

/* ---------- Listings ---------- */
.listing, .single, .page-simple { padding-block: 60px; }
.listing-header { margin-bottom: 40px; }
.listing-title { font-size: 36px; }
.post-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px; }
.post-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.card { padding: 4px; background: #fff; box-shadow: 0 0 12px rgba(0,0,0,.12); }
.card-thumb { display: block; }
.card-thumb img { display: block; width: 100%; height: auto; }
.card-body { padding: 18px 12px 14px; }
.card-title { margin: 0 0 .25em; font-size: 20px; line-height: 1.2; }
.card-title a { text-decoration: none; }
.card-title a:hover { color: var(--fc-accent); }
.card-date { display: block; margin-bottom: 1.2em; font-size: 12px; color: var(--fc-text-2); }
.card-excerpt { margin-bottom: 1.4em; font-size: 14px; color: var(--fc-text-2); }
.navigation.pagination { margin-top: 40px; }
.navigation.pagination .nav-links { display: flex; flex-wrap: wrap; gap: 6px; }
.page-numbers { padding: 8px 14px; border: 1px solid var(--fc-line); text-decoration: none; font-size: 16px; }
.page-numbers.current, a.page-numbers:hover { background: var(--fc-accent); border-color: var(--fc-accent); color: #fff; }

/* ---------- Single / simple page ---------- */
.single-layout { display: block; max-width: 760px; margin-inline: auto; }
.single-layout.has-sidebar { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 40px; max-width: 1100px; }
.entry-title { font-size: 32px; margin-bottom: .2em; }
.entry-meta { margin-bottom: 1.6em; font-size: 12px; color: var(--fc-text-2); }
.entry-meta a { text-decoration: none; }
.entry-meta a:hover { color: var(--fc-accent); }
.entry-meta-sep { margin: 0 4px; }
.entry-thumb { margin: 0 0 1.6em; padding: 4px; box-shadow: 0 0 12px rgba(0,0,0,.12); }
.entry-thumb img { display: block; width: 100%; }
.entry-content { overflow-wrap: break-word; }
.entry-content a { color: inherit; text-decoration-color: var(--fc-accent); text-underline-offset: 3px; }
.entry-content img { height: auto; }
.entry-content pre, .entry-content code { font-size: .85em; }
.entry-content pre { overflow: auto; padding: 16px; background: var(--fc-light); }
.entry-content blockquote { margin: 1.5em 0; padding: 0 0 0 20px; border-left: 4px solid var(--fc-accent); }
.entry-content table { width: 100%; border-collapse: collapse; }
.entry-content th, .entry-content td { padding: 8px 10px; border: 1px solid var(--fc-line); }
.entry-tags a { display: inline-block; margin: 0 6px 6px 0; padding: 4px 10px; background: var(--fc-light); font-size: 13px; text-decoration: none; }
.page-simple .entry { max-width: 760px; margin-inline: auto; }
.sidebar .widget { margin-bottom: 40px; font-size: 15px; }
.sidebar .widget-title, .sidebar h2 { font-size: 16px; }
.sidebar ul { margin: 0; padding-left: 1.1em; }
.sidebar li { margin-bottom: .4em; }
.related { margin-top: 80px; }
.related-title { font-size: 24px; margin-bottom: 24px; }
.comments { max-width: 760px; margin: 60px auto 0; }
.comments-title { font-size: 24px; }
.comment-list, .comment-list ol { margin: 0; padding: 0; list-style: none; }
.comment-list .children { margin-left: 32px; }
.comment-body { padding: 18px 0; border-top: 1px solid var(--fc-line); }
.comment-meta { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; font-size: 14px; }
.comment-meta img { border-radius: 50%; }
.comment-author { font-weight: 600; }
.comment-date { color: var(--fc-text-2); text-decoration: none; }
.comment-text { font-size: 16px; }
.comment-reply-link { font-size: 14px; }
.comment-respond { margin-top: 30px; }

@media (max-width: 991px) {
	.single-layout.has-sidebar { grid-template-columns: minmax(0, 1fr); }
	.post-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
	body { font-size: 17px; }
	h1, .listing-title { font-size: 30px; }
	.post-grid, .post-grid-3 { grid-template-columns: minmax(0, 1fr); }
	.listing, .single, .page-simple { padding-block: 40px; }
	.entry-title { font-size: 26px; }
}

/* Rank Math table of contents */
.entry-content .wp-block-rank-math-toc-block { padding: 15px; background: var(--fc-light); }
.entry-content .wp-block-rank-math-toc-block h5 { margin-bottom: 15px; }
.entry-content .wp-block-rank-math-toc-block nav ul { margin: 0; padding: 0; list-style: none; }
.entry-content .wp-block-rank-math-toc-block nav li { display: flex; text-align: left; }
.entry-content .wp-block-rank-math-toc-block nav li:not(:last-child) { margin-bottom: 10px; }
.entry-content .wp-block-rank-math-toc-block nav li::before {
	content: ""; flex: 0 0 8px; height: 8px; margin: 7px 10px 0 0; border-radius: 50%; background: var(--fc-accent);
}
.entry-content .wp-block-rank-math-toc-block nav a { color: var(--fc-text); text-decoration: none; }
@media (min-width: 992px) { .entry-content .wp-block-rank-math-toc-block { max-width: 300px; padding: 30px; } }

/* ---------- Landing sections ---------- */
.landing > * { margin-block: 0; }
.alignfull { width: 100%; max-width: none; }
.is-pro { --fc-accent: var(--fc-pro); }
:root { --fc-pro: #00ccff; }

/* Sections run edge to edge; their content is held to the page width. */
.fc-hero-pin > *, .fc-section > *, .fc-banner > * {
	width: 100%; max-width: var(--fc-max); margin-inline: auto; padding-inline: var(--fc-gutter);
}
.fc-eyebrow { margin-block: 0 .5em; font-size: 20px; line-height: 1.3; color: var(--fc-accent); }
.fc-section-title { font-size: 48px; }
.landing .wp-block-buttons { margin-block: 0; }
.fc-hero-pin .wp-block-buttons, .fc-banner .wp-block-buttons, .fc-section > .wp-block-buttons { padding-inline: var(--fc-gutter); }

/* Hero: a full-screen storm with the logo. Where scroll-driven animations exist it becomes a stage, see "Scroll effects". */
.fc-hero { position: relative; isolation: isolate; min-height: 100vh; min-height: 100svh; background: #0a0a0a; color: #fff; text-align: center; overflow: hidden; }
.fc-stage { position: absolute; inset: 0; z-index: 0; }
.fc-stage-frame { position: absolute; inset: 0; overflow: hidden; background: #111; }
.fc-stage-frame::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .27); pointer-events: none; }
.fc-storm { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; }
.fc-collage { display: none; }
.fc-hero-pin {
	position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
	min-height: 100vh; min-height: 100svh; padding: 140px 0 60px;
}
.fc-hero-logo { margin: 0 auto; }
.fc-hero-logo img { display: block; width: 300px; max-width: 60vw; height: auto; margin-inline: auto; }
.fc-hero-title { margin: 0; font-size: 80px; color: #fff; }
.fc-hero-tagline { margin: 0 0 1em; font-size: 36px; line-height: 1.2; text-transform: uppercase; color: var(--fc-accent); }
.fc-hero .wp-block-button__link { font-size: 18px; color: #fff; }
.fc-hero .wp-block-button__link:hover { color: var(--fc-accent); }

/* Intro with image */
.fc-split { padding: 150px 0 0; background: var(--fc-light); }
.fc-split .wp-block-columns { display: flex; flex-wrap: wrap; align-items: center; gap: 0; margin-block: 0; }
.fc-split .wp-block-column { flex: 1 1 50%; min-width: 0; }
.fc-split .wp-block-column:first-child { padding-right: 60px; }
.fc-split .wp-block-column:first-child > :last-child { margin-bottom: 0; }
.fc-split h2 { font-size: 36px; }
.fc-split-image { margin: 0; align-self: flex-end; }
.fc-split-image img { display: block; width: 100%; height: auto; }

/* Cards */
.fc-cards { padding: 150px 0; background: #fff; }
.fc-cards-last { padding-top: 0; }
.fc-card-grid { display: grid; gap: 30px; }
.fc-card-grid.fc-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fc-card-grid.fc-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fc-card { padding: 30px; background: var(--fc-light); text-align: center; }
.fc-card.is-plain { padding: 0 30px; background: none; }
.fc-card .fc-icon { margin: 0 auto 20px; }
.fc-card-title { margin: 0 0 .6em; font-size: 20px; line-height: 1.25; }
.fc-card-text { margin: 0; font-size: 16px; color: var(--fc-text-2); }
.fc-cards-center { padding: 60px 0 0; }
.fc-cta-row { padding: 60px 0 100px; }

/* Icons: one SVG per icon, painted with the accent colour */
.fc-icon {
	width: 60px; height: 60px; background-color: var(--fc-accent);
	-webkit-mask: var(--fc-icon, none) center / contain no-repeat; mask: var(--fc-icon, none) center / contain no-repeat;
}

/* Feature list */
.fc-features { padding: 60px 0; background: #fff; }
.fc-feature-list { columns: 2; column-gap: 60px; padding-block: 0 40px; }
.fc-feature { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 20px; margin-bottom: 40px; break-inside: avoid; }
.fc-feature .fc-icon { width: 40px; height: 40px; }
.fc-feature-title { margin: 0 0 15px; font-size: 18px; line-height: 1.25; }
.fc-feature-body p { margin: 0; font-size: 15px; }
.fc-features > .wp-block-buttons { margin-top: 20px; }

/* Banners with a background image (the image sits on a pseudo-element so it can drift while scrolling) */
.fc-banner {
	position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center;
	min-height: 450px; padding-block: 60px; background: #111; color: #fff; text-align: center;
}
.fc-banner::before { content: ""; position: absolute; inset: -12% 0; z-index: -1; background: var(--fc-banner-bg) center / cover no-repeat; }
.fc-banner-features { --fc-banner-bg: linear-gradient(rgba(0, 0, 0, .48), rgba(0, 0, 0, .48)), url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/img/banner-features.webp"); }
.fc-banner-speed { --fc-banner-bg: linear-gradient(rgba(0, 0, 0, .47), rgba(0, 0, 0, .47)), url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/img/banner-speed.webp"); min-height: 600px; }
.fc-banner-support { --fc-banner-bg: linear-gradient(rgba(0, 0, 0, .77), rgba(0, 0, 0, .77)), url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/img/banner-support.webp"); min-height: 800px; }
.fc-banner-title { font-size: 48px; color: #fff; margin-bottom: .3em; }
.fc-banner-speed .fc-banner-title { font-size: 60px; }
.fc-banner-speed .fc-eyebrow { font-size: 36px; color: #fff; }
.fc-banner-text { margin: 0 0 1em; font-size: 20px; }
.fc-banner-big { font-size: 36px; color: #fff; }
.fc-banner a { color: inherit; }
.fc-banner-page { min-height: 450px; }
.fc-banner-page .fc-banner-title { font-size: 48px; }
.fc-banner-page .fc-eyebrow { font-size: 18px; }

/* FAQ */
.fc-faq { padding: 150px 0 100px; background: var(--fc-light); }
.fc-faq-list { columns: 2; column-gap: 60px; margin-top: 60px; }
.fc-faq-item { margin-bottom: 40px; break-inside: avoid; }
.fc-faq-q { margin: 0 0 .5em; font-size: 18px; }
.fc-faq-item p { margin: 0; font-size: 16px; }
.fc-faq-item a { text-decoration-color: var(--fc-accent); text-underline-offset: 3px; }

/* Benchmark */
.fc-bench { padding: 120px 0; background: #0b0f0d; color: #fff; text-align: center; }
.fc-bench .fc-section-title { color: #fff; }
.fc-bench-lead { max-width: 820px; margin-inline: auto; color: #c9d1cd; }
.fc-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 30px; margin-block: 60px; }
.fc-stat { padding: 30px 20px; border: 1px solid rgba(255, 255, 255, .12); background: rgba(255, 255, 255, .03); }
.fc-stat-num { margin: 0; font-size: 64px; font-weight: 800; line-height: 1; color: var(--fc-accent); }
.fc-stat-label { margin: .6em 0 0; font-size: 16px; color: #c9d1cd; }
.fc-charts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px; text-align: left; }
.fc-chart-title { margin: 0 0 18px; font-size: 16px; font-weight: 600; color: #fff; }
.fc-bar-row { display: grid; grid-template-columns: 170px minmax(0, 1fr) 70px; align-items: center; gap: 12px; margin-bottom: 10px; font-size: 14px; color: #c9d1cd; }
.fc-bar-row.is-fc { color: #fff; font-weight: 600; }
.fc-bar-track { display: block; height: 16px; background: rgba(255, 255, 255, .07); }
.fc-bar-fill { display: block; width: var(--w); min-width: 2px; height: 100%; background: #56615c; transform-origin: left; }
.fc-bar-row.is-fc .fc-bar-fill { background: var(--fc-accent); }
.fc-bar-val { text-align: right; font-variant-numeric: tabular-nums; }
.fc-bench-note { max-width: 880px; margin: 50px auto 0; font-size: 14px; color: #9aa6a1; }
.fc-bench-note strong { color: #fff; }

/* Servers */
.fc-servers { padding: 120px 0 60px; background: #fff; text-align: center; }
.fc-servers .fc-card-grid { margin-top: 50px; }
.fc-card-grid.fc-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.fc-card.is-server { text-align: center; }
.fc-servers-note { margin-top: 30px; font-size: 16px; color: var(--fc-text-2); }

/* PRO page */
.fc-intro { padding: 150px 0 80px; text-align: center; }
.fc-intro .fc-section-title { font-size: 60px; }
.fc-intro-text { max-width: 760px; margin-inline: auto; }
.fc-intro > .fc-intro-text { padding-inline: var(--fc-gutter); }
.fc-video { padding: 100px 0; background: #f4f4f4; text-align: center; }
.fc-video .wp-block-embed { max-width: 960px; margin-top: 40px; }
.fc-video iframe { width: 100%; height: 100%; }

@media (max-width: 991px) {
	.fc-hero-pin { padding-top: 110px; }
	.fc-stats { grid-template-columns: minmax(0, 1fr); }
	.fc-charts { grid-template-columns: minmax(0, 1fr); }
	.fc-card-grid.fc-cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.fc-hero-title { font-size: 60px; }
	.fc-hero-tagline { font-size: 20px; }
	.fc-hero-logo img { width: 250px; }
	.fc-split .wp-block-column { flex-basis: 100%; }
	.fc-split .wp-block-column:first-child { padding: 0 0 50px; }
	.fc-card-grid.fc-cols-3 { grid-template-columns: minmax(0, 1fr); }
	.fc-banner-speed .fc-banner-title, .fc-intro .fc-section-title { font-size: 40px; }
	.fc-banner-big { font-size: 20px; }
	.fc-section-title, .fc-banner-title { font-size: 40px; }
}
@media (max-width: 767px) {
	.fc-bar-row { grid-template-columns: 110px minmax(0, 1fr) 56px; font-size: 13px; }
	.fc-stat-num { font-size: 48px; }
	.fc-bench, .fc-servers { padding-block: 75px; }
	.fc-feature-list, .fc-faq-list { columns: 1; }
	.fc-card-grid.fc-cols-2 { grid-template-columns: minmax(0, 1fr); }
	.fc-split { padding-top: 75px; }
	.fc-cards, .fc-faq { padding-block: 75px; }
	.fc-banner-support { min-height: 480px; }
	.fc-banner-speed { min-height: 420px; }
}
@media (max-width: 575px) {
	.fc-card-grid.fc-cols-4 { grid-template-columns: minmax(0, 1fr); }
	.fc-hero-title { font-size: 40px; }
	.fc-section-title, .fc-banner-title, .fc-banner-speed .fc-banner-title, .fc-intro .fc-section-title { font-size: 32px; }
}

/* Dark panel (cards section on the home) */
.fc-dark { background: #0a0a0a; color: #fff; }
.fc-dark .fc-card { background: #151515; }
.fc-dark .fc-card-title { color: #fff; }
.fc-dark .fc-card-text { color: #bdbdbd; }

/* Screens gallery: a row you can swipe; with scroll-driven animations it becomes a pinned horizontal scroll */
.fc-hgal { padding: 100px 0; background: #0a0a0a; color: #fff; }
.fc-gal-title { margin: 0 0 40px; padding-inline: 8vw; font-size: clamp(34px, 5vw, 72px); line-height: 1.1; color: #fff; }
.fc-hg-track { display: flex; gap: 4vw; padding-inline: 8vw; overflow-x: auto; scroll-snap-type: x proximity; }
.fc-hg-track figure { position: relative; flex: none; margin: 0; scroll-snap-align: center; }
.fc-hg-track img { display: block; width: auto; height: 50svh; max-width: none; border-radius: 18px; box-shadow: 0 30px 80px rgba(0, 229, 117, .12); }
.fc-hg-track figure span { position: absolute; z-index: -1; left: -1.4vw; top: -4.6svh; font-size: min(9vw, 120px); font-weight: 800; line-height: 1; color: transparent; -webkit-text-stroke: 1px rgba(255, 255, 255, .35); }

/* Benchmark on a light panel, between two dark ones */
.fc-bench { background: var(--fc-light); color: var(--fc-text); }
.fc-bench .fc-section-title, .fc-bench-note strong, .fc-chart-title, .fc-bar-row.is-fc { color: #111; }
.fc-bench-lead, .fc-stat-label, .fc-bar-row, .fc-bench-note { color: var(--fc-text-2); }
.fc-stat { border-color: #e2e2e2; background: #fff; }
.fc-stat-num, .fc-bignum { color: #00a84a; }
.fc-bar-track { background: #e8e8e8; }
.fc-bar-fill { background: #b4bcb8; }
.fc-bignum { margin: 0 auto; font-size: min(18vw, 230px); font-weight: 800; line-height: 1; text-align: center; }
.fc-bignum-label { margin-top: .4em; margin-bottom: 0; font-size: 20px; text-align: center; color: var(--fc-text-2); }

/* Sticky features (PRO page): a two-column grid of boxes; with scroll-driven animations the boxes take turns on a pinned stage */
.fc-sticky { padding: 100px 0; background: #fff; }
.fc-st-left { text-align: center; }
.fc-st-stack { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px; margin-top: 50px; }
@media (max-width: 767px) { .fc-st-stack { grid-template-columns: minmax(0, 1fr); } }
.fc-st-item { padding: 30px; background: var(--fc-light); }
.fc-st-item .fc-icon { margin-bottom: 18px; }
.fc-st-title { margin: 0 0 .5em; font-size: 20px; line-height: 1.25; }
.fc-st-text { margin: 0; font-size: 16px; color: var(--fc-text-2); }
.fc-video .wp-block-embed { overflow: hidden; border-radius: 12px; }

/* ---------- Scroll effects ----------
   Pure CSS scroll-driven animations: no JavaScript, nothing to load. Browsers without animation-timeline, and visitors
   who ask for reduced motion, get the same page, still. */
@keyframes fc-reveal { from { opacity: 0; transform: translateY(48px); } to { opacity: 1; transform: none; } }
@keyframes fc-expand { from { clip-path: inset(0 var(--fc-expand-x, 6vw) round var(--fc-expand-r, 40px)); } to { clip-path: inset(0 0 round 0); } }
@property --c1 { syntax: '<integer>'; inherits: false; initial-value: 0; }
@property --c2 { syntax: '<integer>'; inherits: false; initial-value: 0; }
@property --c3 { syntax: '<integer>'; inherits: false; initial-value: 0; }
@keyframes fc-count { from { --c1: 0; --c2: 0; --c3: 0; } to { --c1: 23; --c2: 5; --c3: 55; } }
@keyframes fc-zoomnum { from { transform: scale(.55); opacity: .2; } to { transform: none; opacity: 1; } }
@keyframes fc-wordin { to { transform: none; } }
@keyframes fc-rise { 0% { transform: translateY(260px); opacity: 0; } 55% { transform: translateY(-60px); opacity: 1; } 100% { transform: none; opacity: 1; } }
@keyframes fc-lift { from { transform: translateY(var(--from, 60px)); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes fc-pop { from { scale: .2; rotate: -45deg; } to { scale: 1; rotate: 0deg; } }
@keyframes fc-slide { to { transform: translateX(calc(-100% + 100vw)); } }
@keyframes fc-slot { 0% { opacity: 0; transform: translateY(90px) scale(.94); } 20%, 80% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(-90px) scale(.94); } }
@keyframes fc-slot-first { 0%, 80% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(-90px) scale(.94); } }
@keyframes fc-slot-last { 0% { opacity: 0; transform: translateY(90px) scale(.94); } 20%, 100% { opacity: 1; transform: none; } }
@keyframes fc-prog { from { background-size: 0% 100%; } to { background-size: 100% 100%; } }
@keyframes fc-vzoom { from { transform: scale(.68); border-radius: 44px; } to { transform: none; border-radius: 12px; } }
@keyframes fc-grow { from { transform: scaleX(0); } to { transform: none; } }
@keyframes fc-drift { from { transform: translateY(-9%); } to { transform: translateY(9%); } }
@keyframes fc-frame {
	from { clip-path: inset(0 0 0 0 round 0); }
	58% { clip-path: inset(var(--fc-frame-y, 20svh) var(--fc-frame-x, 27vw) round 36px); }
	to { clip-path: inset(calc(var(--fc-frame-y, 20svh) + 2svh) calc(var(--fc-frame-x, 27vw) + 2vw) round 36px); }
}
@keyframes fc-shot-in {
	from { opacity: 0; scale: .45; translate: var(--fc-from-x, 0) 0; }
	45% { opacity: 1; scale: 1; translate: 0 0; }
	to { opacity: 1; scale: 1; translate: 0 0; }
}
@keyframes fc-pin-scale { from { scale: 1; } 58% { scale: var(--fc-pin-scale, .58); } to { scale: calc(var(--fc-pin-scale, .58) - .06); } }
@keyframes fc-shot-par { from { transform: translateY(var(--par, 40px)); } to { transform: none; } }

@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		/* Hero: tall stage, pinned while it plays. The storm shrinks into a card on the light page and the plugin's own screens
		   fly in around the logo. The pinned stretch is --fc-pin tall (the hero is 100svh taller than that) and every animation
		   runs over all of it, so the page never stalls before the next section arrives. */
		.fc-hero { --fc-pin: 160svh; display: grid; grid-template-rows: 100%; height: calc(100svh + var(--fc-pin)); min-height: 0; overflow: clip; background: var(--fc-light); view-timeline: --fc-hero block; }
		.fc-stage { position: sticky; inset: 0 0 auto 0; grid-area: 1 / 1; align-self: start; height: 100svh; }
		.fc-hero-pin { position: sticky; inset: 0 0 auto 0; grid-area: 1 / 1; align-self: start; height: 100svh; min-height: 0; box-sizing: border-box; padding: 90px 0 40px; }
		.fc-stage-frame, .fc-hero-pin, .fc-shot { animation-timeline: --fc-hero; animation-range: cover 100svh cover calc(100svh + var(--fc-pin)); }
		.fc-stage-frame { animation-name: fc-frame; animation-timing-function: linear; animation-fill-mode: both; }
		.fc-hero-pin { animation-name: fc-pin-scale; animation-timing-function: linear; animation-fill-mode: both; }
		.fc-collage { display: block; position: absolute; inset: 0; }
		.fc-shot {
			position: absolute; height: auto; width: min(20vw, calc(30svh * var(--ar, 1.3))); border-radius: 12px; overflow: hidden;
			box-shadow: 0 20px 48px rgba(0, 0, 0, .26), 0 0 0 1px rgba(0, 0, 0, .1);
			animation-name: fc-shot-in, fc-shot-par; animation-timing-function: linear, linear; animation-fill-mode: both, both;
		}
		.fc-shot-1 { left: 2vw; top: 4svh; --par: 70px; --fc-from-x: 22vw; }
		.fc-shot-2 { right: 2vw; top: 4svh; --par: 120px; --fc-from-x: -22vw; }
		.fc-shot-3 { left: 5vw; top: 35svh; --par: 150px; --fc-from-x: 20vw; }
		.fc-shot-4 { right: 4vw; top: 35svh; --par: 60px; --fc-from-x: -24vw; }
		.fc-shot-5 { left: 2vw; top: 66svh; --par: 70px; --fc-from-x: 22vw; }
		.fc-shot-6 { right: 3vw; top: 66svh; --par: 90px; --fc-from-x: -20vw; }

		/* Sections that open from an inset card to the full width */
		.fc-expand { animation: fc-expand linear both; animation-timeline: view(); animation-range: entry 5% cover 38%; }
		/* Banner images drift slower than the page */
		.fc-banner::before { animation: fc-drift linear both; animation-timeline: view(); animation-range: cover; }
		/* Content comes in as it scrolls into view */
		.landing .fc-card, .landing .fc-feature, .landing .fc-faq-item, .landing .fc-stat, .landing .fc-split .wp-block-column:first-child,
		.landing .fc-intro-text, .landing .fc-card-title {
			animation: fc-reveal linear both; animation-timeline: view(); animation-range: entry 4% entry 52%;
		}
		.landing .fc-feature-list > :nth-child(even), .landing .fc-stats > :nth-child(2) { animation-range: entry 10% entry 58%; }
		.landing .fc-stats > :nth-child(3) { animation-range: entry 16% entry 64%; }
		.landing .fc-card-title { animation: none; }
		/* Cards climb at different speeds, their icons pop in */
		.landing .fc-card-grid > .fc-card { animation-name: fc-lift; animation-range: entry 0% cover 40%; }
		.landing .fc-card-grid > :nth-child(3n + 1) { --from: 90px; }
		.landing .fc-card-grid > :nth-child(3n + 2) { --from: 190px; }
		.landing .fc-card-grid > :nth-child(3n + 3) { --from: 130px; }
		.landing .fc-card .fc-icon { animation: fc-pop linear both; animation-timeline: view(); animation-range: entry 20% cover 40%; }
		/* The intro picture rises past the text, then settles */
		.landing .fc-split .wp-block-column:last-child { animation: fc-rise linear both; animation-timeline: view(); animation-range: entry 0% cover 55%; }
		/* Titles: each word rises from a mask */
		.fc-w { display: inline-block; overflow: clip; vertical-align: top; padding-bottom: .12em; }
		.fc-wi { display: inline-block; transform: translateY(112%); animation: fc-wordin linear both; animation-timeline: view(); animation-range: entry calc(2% + var(--k) * 4%) entry calc(46% + var(--k) * 4%); }
		/* Screens gallery pinned while it slides sideways */
		.fc-hgal { height: 520svh; padding: 0; view-timeline: --fc-hg block; }
		.fc-hg-pin { position: sticky; top: 0; height: 100svh; box-sizing: border-box; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; align-items: center; padding-top: 7svh; }
		.fc-hgal .fc-gal-title { margin: 0; }
		.fc-hg-track { width: max-content; overflow: visible; animation: fc-slide linear both; animation-timeline: --fc-hg; animation-range: cover 100svh cover 520svh; }
		.fc-hg-track img { height: 56svh; }
		/* The big number counts up and zooms */
		.fc-bignum { font-size: 0; counter-reset: c1 var(--c1) c2 var(--c2) c3 var(--c3); animation: fc-count linear both, fc-zoomnum linear both; animation-timeline: view(), view(); animation-range: entry 20% cover 45%, entry 0% cover 50%; }
		.fc-bignum::after { content: counter(c1) "," counter(c2) counter(c3, decimal-leading-zero); font-size: min(18vw, 230px); }
		/* The video opens up as it arrives */
		.fc-video .wp-block-embed { animation: fc-vzoom linear both; animation-timeline: view(); animation-range: entry 5% cover 38%; }
		.fc-bar-fill { animation: fc-grow linear both; animation-timeline: view(); animation-range: entry 25% cover 32%; }
		.fc-bar-row:nth-child(n + 3) .fc-bar-fill { animation-range: entry 30% cover 36%; }
	}
}

@media (min-width: 992px) {
	@supports (animation-timeline: view()) {
		@media (prefers-reduced-motion: no-preference) {
			/* PRO features: the section is --fc-n slots tall and the stage stays pinned while the boxes take turns (--fc-n = number of boxes) */
			.fc-sticky { --fc-n: 9; --fc-slot: 55svh; padding: 0; height: calc(100svh + var(--fc-n) * var(--fc-slot)); view-timeline: --fc-st block; }
			.fc-st-pin { position: sticky; top: 0; height: 100svh; box-sizing: border-box; display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 40px; align-items: center; }
			.fc-st-left { text-align: left; }
			.fc-st-left::after {
				content: ""; display: block; width: 100%; max-width: 280px; height: 6px; margin-top: 36px; border-radius: 3px;
				background: linear-gradient(var(--fc-accent), var(--fc-accent)) left / 0% 100% no-repeat, #ddd;
				animation: fc-prog linear both; animation-timeline: --fc-st; animation-range: cover 100svh cover calc(100svh + var(--fc-n) * var(--fc-slot));
			}
			.fc-st-stack { display: block; position: relative; height: 62svh; margin: 0; }
			.fc-st-item {
				position: absolute; inset: 0; height: max-content; max-width: 540px; margin: auto; padding: 44px; border-radius: 16px; box-shadow: 0 30px 70px rgba(0, 0, 0, .12); opacity: 0;
				animation: fc-slot linear both; animation-timeline: --fc-st;
				animation-range: cover calc(100svh + var(--i) * var(--fc-slot) - 4svh) cover calc(100svh + (var(--i) + 1) * var(--fc-slot) + 4svh);
			}
			.fc-st-item:first-child { animation-name: fc-slot-first; }
			.fc-st-item:last-child { animation-name: fc-slot-last; }
			.fc-st-item .fc-icon { width: 72px; height: 72px; margin-bottom: 22px; }
			.fc-st-title { font-size: 30px; }
			.fc-st-text { font-size: 18px; }
			.fc-st-item:nth-child(1) { --i: 0; } .fc-st-item:nth-child(2) { --i: 1; } .fc-st-item:nth-child(3) { --i: 2; }
			.fc-st-item:nth-child(4) { --i: 3; } .fc-st-item:nth-child(5) { --i: 4; } .fc-st-item:nth-child(6) { --i: 5; }
			.fc-st-item:nth-child(7) { --i: 6; } .fc-st-item:nth-child(8) { --i: 7; } .fc-st-item:nth-child(9) { --i: 8; }
		}
	}
}

@media (max-width: 767px) {
	@supports (animation-timeline: view()) {
		@media (prefers-reduced-motion: no-preference) {
			.fc-hero { --fc-frame-x: 9vw; --fc-frame-y: 22svh; --fc-pin-scale: .66; }
			.fc-shot { width: min(40vw, calc(22svh * var(--ar, 1.3))); }
			.fc-shot-1 { left: 4vw; top: 3svh; }
			.fc-shot-2 { right: 4vw; top: 6svh; }
			.fc-shot-5 { left: 4vw; top: auto; bottom: 3svh; }
			.fc-shot-6 { right: 4vw; top: auto; bottom: 5svh; }
			.fc-shot-3, .fc-shot-4 { display: none; }
			.fc-hero-title { font-size: 34px; }
		}
	}
}

/* ---------- Icons ---------- */
.fc-icon-check { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/check.svg"); }
.fc-icon-code { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/code.svg"); }
.fc-icon-cog { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/cog.svg"); }
.fc-icon-gauge { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/gauge.svg"); }
.fc-icon-hard-drive { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/hard-drive.svg"); }
.fc-icon-loading-2 { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/loading-2.svg"); }
.fc-icon-planet { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/planet.svg"); }
.fc-icon-puzzle { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/puzzle.svg"); }
.fc-icon-rocket { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/rocket.svg"); }
.fc-icon-save { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/save.svg"); }
.fc-icon-search { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/search.svg"); }
.fc-icon-secure { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/secure.svg"); }
.fc-icon-security { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/security.svg"); }
.fc-icon-servers { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/servers.svg"); }
.fc-icon-smile { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/smile.svg"); }
.fc-icon-sync { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/sync.svg"); }
.fc-icon-timer { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/timer.svg"); }
.fc-icon-trash-bin { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/trash-bin.svg"); }
.fc-icon-users { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/users.svg"); }
.fc-icon-wrench { --fc-icon: url("https://flashcache.net/wp-content/themes/flash-cache-2026/assets/icons/wrench.svg"); }


.wp-container-core-buttons-is-layout-940d97e3{justify-content:center;}
/*# sourceURL=core-block-supports-inline-css */
