/*
 Theme Name:   JacobFrees Evolution
 Theme URI:    https://jacobfrees.com
 Description:  Custom child theme for jacobfrees.com — Evolution Revolution brand. Parent: Kadence.
 Author:       Jacob Frees
 Author URI:   https://jacobfrees.com
 Template:     kadence
 Version:      2.0.0
 License:      GNU General Public License v2 or later
*/


/* ===== KADENCE OVERRIDES — Must come first to beat parent theme ===== */
body,
body.content-style-boxed .site,
body.content-style-unboxed .site,
.content-bg,
.site-container,
.wp-site-blocks {
  background: var(--jf-bg) !important;
  color: var(--jf-text) !important;
}

.entry-content,
.entry-content-wrap,
.entry,
.content-area,
.site-main,
#primary,
#content {
  background: transparent !important;
  padding: 0 !important;
  margin: 0 !important;
  max-width: 100% !important;
  width: 100% !important;
}

.entry.single-entry,
.entry.loop-entry {
  box-shadow: none !important;
}

.entry-content-wrap {
  padding: 0 !important;
}

/* Kill Kadence's white page hero */
.entry-hero,
.entry-hero-layout-contained,
.entry-header-custom {
  display: none !important;
}

/* Kadence header — dark theme */
#masthead,
.site-header-row-container-inner,
.site-main-header-inner-wrap {
  background: rgba(8, 7, 15, 0.92) !important;
  backdrop-filter: blur(14px) !important;
  border-bottom: 1px solid var(--jf-border) !important;
}

.site-title,
.site-title a {
  color: var(--jf-text) !important;
}

.main-navigation .primary-menu-container > ul > li.menu-item > a {
  color: var(--jf-text-secondary) !important;
  font-size: 0.8125rem !important;
  font-weight: 500 !important;
}

.main-navigation .primary-menu-container > ul > li.menu-item > a:hover,
.main-navigation .primary-menu-container > ul > li.menu-item.current-menu-item > a {
  color: var(--jf-text) !important;
}

/* Kadence footer — dark theme */
.site-footer,
.site-footer-row-container-inner,
.site-bottom-footer-inner-wrap {
  background: var(--jf-bg-panel) !important;
  border-top: 1px solid var(--jf-border) !important;
  color: var(--jf-text-secondary) !important;
}

.site-footer a {
  color: var(--jf-text-secondary) !important;
}

/* WooCommerce overrides */
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product .price {
  color: var(--jf-text) !important;
}

.woocommerce ul.products li.product .price {
  color: var(--jf-gold) !important;
}

.woocommerce ul.products li.product,
.woocommerce ul.products li.product .product-details {
  background: var(--jf-bg-panel) !important;
  border-color: var(--jf-border) !important;
}

.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button {
  background: var(--jf-accent) !important;
  color: white !important;
  border-radius: 8px !important;
}

.woocommerce-message,
.woocommerce-info {
  background: var(--jf-bg-panel) !important;
  color: var(--jf-text) !important;
}

/* Remove Kadence content padding */
.content-area {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* Entry title hidden — we use our own heroes */
.entry-title {
  display: none !important;
}

/* Breadcrumbs hidden */
.kadence-breadcrumbs {
  display: none !important;
}

/* ===== END KADENCE OVERRIDES ===== */

/* ===== BRAND TOKEN SYSTEM — Midnight Purple + The Eye ===== */
:root {
  --jf-bg:             #08070f;
  --jf-bg-panel:       #110e22;
  --jf-bg-elevated:    #1a1538;
  --jf-purple-deep:    #2d1b69;
  --jf-purple-mid:     #4a2c8a;
  --jf-purple-royal:   #6b3fa0;
  --jf-accent:         #7c5cff;
  --jf-accent-hover:   #9d7eff;
  --jf-iris:           #1a0a3e;
  --jf-gold:           #d4af37;
  --jf-gold-soft:      #c9a961;
  --jf-text:           #f4f4f8;
  --jf-text-secondary: #b8b8c8;
  --jf-text-muted:     #6e6e8e;
  --jf-border:         rgba(124,92,255,0.08);
  --jf-border-strong:  rgba(124,92,255,0.16);
  --jf-success:        #10b981;
  --jf-danger:         #ef4444;
  --jf-radius:         12px;
  --jf-radius-lg:      20px;
  --jf-shadow:         0 8px 32px rgba(45,27,105,0.4);
  --jf-transition:     0.3s cubic-bezier(0.4,0,0.2,1);
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  background: var(--jf-bg); color: var(--jf-text);
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  font-feature-settings: "cv01", "ss03"; line-height: 1.6; -webkit-font-smoothing: antialiased;
}

a { color: var(--jf-accent); text-decoration: none; transition: var(--jf-transition); }
a:hover { color: var(--jf-accent-hover); }

h1, h2, h3 { font-weight: 590; letter-spacing: -0.02em; color: var(--jf-text); }
h1 { font-size: clamp(2.2rem, 5vw, 3.5rem); letter-spacing: -0.04em; line-height: 1.08; }
h2 { font-size: clamp(1.6rem, 3.5vw, 2.5rem); }
h3 { font-size: 1.25rem; }

/* ===== EYE BRAND ELEMENTS ===== */
.jf-eye-logo {
  width: 36px; height: 36px; border-radius: 50%; object-fit: cover;
  border: 2px solid var(--jf-accent); box-shadow: 0 0 12px rgba(124,92,255,0.3);
}
.jf-eye-bg {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  object-fit: cover; opacity: 0.12; z-index: 0; pointer-events: none;
}
.jf-iris-glow {
  position: absolute; border-radius: 50%; pointer-events: none; z-index: 0;
  background: radial-gradient(circle, rgba(124,92,255,0.12) 0%, transparent 60%);
}

/* ===== NAV ===== */
.jf-nav {
  position: sticky; top: 0; z-index: 100;
  background: rgba(8,7,15,0.90); backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--jf-border); padding: 12px 24px;
}
.jf-nav-inner { max-width: 1200px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.jf-nav-brand { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.jf-nav-logo-text { font-weight: 600; font-size: 1.0625rem; color: var(--jf-text); letter-spacing: -0.02em; }
.jf-nav-links { display: flex; gap: 20px; flex-wrap: wrap; }
.jf-nav-links a { color: var(--jf-text-secondary); font-size: 0.8125rem; font-weight: 500; }
.jf-nav-links a:hover, .jf-nav-links a.active { color: var(--jf-text); }
.jf-nav-cta { display: flex; gap: 10px; }
.jf-mobile-toggle { display: none; background: none; border: none; color: var(--jf-text); font-size: 1.5rem; cursor: pointer; }
@media (max-width: 900px) {
  .jf-nav-links { display: none; }
  .jf-mobile-toggle { display: block; }
  .jf-nav-links.open { display: flex; flex-direction: column; position: absolute; top: 56px; left: 0; right: 0; background: var(--jf-bg-panel); padding: 16px 24px; gap: 14px; border-bottom: 1px solid var(--jf-border); }
}

/* ===== LAYOUT ===== */
.jf-container { max-width: 1200px; margin: 0 auto; padding: 0 24px; position: relative; z-index: 1; }
.jf-section { padding: 72px 0; position: relative; }
.jf-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.jf-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px; }
.jf-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
@media (max-width: 900px) { .jf-grid-3, .jf-grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .jf-grid-3, .jf-grid-2, .jf-grid-4 { grid-template-columns: 1fr; } .jf-section { padding: 48px 0; } }

/* ===== BUTTONS ===== */
.jf-btn-primary {
  padding: 13px 26px; background: var(--jf-accent); color: white !important;
  border-radius: 10px; font-weight: 510; font-size: 0.9rem; border: none; cursor: pointer;
  transition: var(--jf-transition); display: inline-block;
}
.jf-btn-primary:hover { background: var(--jf-accent-hover); transform: translateY(-1px); box-shadow: 0 4px 16px rgba(124,92,255,0.3); }
.jf-btn-ghost {
  padding: 13px 26px; background: rgba(124,92,255,0.06); color: var(--jf-text) !important;
  border: 1px solid var(--jf-border-strong); border-radius: 10px; font-weight: 510; font-size: 0.9rem;
  transition: var(--jf-transition); display: inline-block;
}
.jf-btn-ghost:hover { background: rgba(124,92,255,0.12); border-color: var(--jf-accent); }
.jf-btn-gold {
  padding: 13px 26px; background: var(--jf-gold); color: #1a1a1a !important;
  border-radius: 10px; font-weight: 600; font-size: 0.9rem; border: none; cursor: pointer;
  transition: var(--jf-transition); display: inline-block;
}
.jf-btn-gold:hover { background: var(--jf-gold-soft); transform: translateY(-1px); }
.jf-btn-sm { padding: 8px 16px; font-size: 0.8125rem; border-radius: 8px; }

/* ===== HERO (hub homepage) ===== */
.jf-hero {
  min-height: 55vh; display: flex; flex-direction: column;
  justify-content: center; align-items: center; text-align: center; padding: 80px 24px 60px;
  background: radial-gradient(ellipse 80% 50% at 50% 0%, rgba(124,92,255,0.12) 0%, transparent 60%),
              radial-gradient(ellipse 60% 40% at 50% 100%, rgba(212,175,55,0.04) 0%, transparent 50%), var(--jf-bg);
  position: relative; overflow: hidden;
}
.jf-hero h1 {
  max-width: 850px; margin-bottom: 20px;
  background: linear-gradient(135deg, var(--jf-text) 0%, var(--jf-accent) 50%, var(--jf-gold) 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.jf-hero-sub { font-size: 1.0625rem; color: var(--jf-text-secondary); max-width: 600px; margin-bottom: 28px; }
.jf-hero-cta { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
.jf-hero-badge {
  margin-top: 36px; display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 18px; background: rgba(124,92,255,0.08); border: 1px solid rgba(124,92,255,0.2);
  border-radius: 9999px; font-size: 0.8125rem; color: var(--jf-accent); font-weight: 500;
}

/* Page hero (sub-pages) */
.jf-page-hero {
  padding: 64px 24px 40px; text-align: center; position: relative; overflow: hidden;
  background: radial-gradient(ellipse 70% 40% at 50% 0%, rgba(124,92,255,0.10) 0%, transparent 55%), var(--jf-bg);
}
.jf-page-hero h1 { margin-bottom: 16px; }
.jf-page-hero p { color: var(--jf-text-secondary); max-width: 580px; margin: 0 auto; font-size: 1rem; }

/* ===== PORTAL CARDS (hub homepage) ===== */
.jf-portal {
  background: var(--jf-bg-panel); border: 1px solid var(--jf-border);
  border-radius: var(--jf-radius); padding: 28px; transition: var(--jf-transition);
  display: flex; flex-direction: column; gap: 14px; text-decoration: none; position: relative; overflow: hidden;
}
.jf-portal::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent, var(--jf-accent), transparent);
  opacity: 0; transition: var(--jf-transition);
}
.jf-portal:hover { background: var(--jf-bg-elevated); border-color: var(--jf-accent); transform: translateY(-3px); box-shadow: var(--jf-shadow); }
.jf-portal:hover::before { opacity: 1; }
.jf-portal-icon {
  width: 48px; height: 48px; border-radius: 50%;
  background: radial-gradient(circle, rgba(124,92,255,0.15), rgba(45,27,105,0.1));
  border: 1px solid var(--jf-border-strong);
  display: flex; align-items: center; justify-content: center; font-size: 22px;
}
.jf-portal h3 { font-size: 1.0625rem; }
.jf-portal p { color: var(--jf-text-secondary); font-size: 0.875rem; }
.jf-portal-link {
  margin-top: auto; font-size: 0.8125rem; font-weight: 510; color: var(--jf-accent) !important;
  display: flex; align-items: center; gap: 6px;
}
.jf-portal-badge {
  position: absolute; top: 16px; right: 16px; font-size: 0.6875rem; font-weight: 600;
  padding: 3px 10px; border-radius: 9999px; text-transform: uppercase; letter-spacing: 0.03em;
}
.jf-portal-badge-hot { background: rgba(239,68,68,0.15); color: #f87171; border: 1px solid rgba(239,68,68,0.3); }
.jf-portal-badge-new { background: rgba(16,185,129,0.15); color: #34d399; border: 1px solid rgba(16,185,129,0.3); }
.jf-portal-badge-live { background: rgba(124,92,255,0.15); color: var(--jf-accent); border: 1px solid rgba(124,92,255,0.3); }

/* ===== STATS BAR ===== */
.jf-stats { display: flex; gap: 40px; justify-content: center; flex-wrap: wrap; padding: 28px 0; }
.jf-stat { text-align: center; }
.jf-stat-num { font-size: 1.75rem; font-weight: 590; color: var(--jf-gold); }
.jf-stat-label { font-size: 0.8125rem; color: var(--jf-text-muted); text-transform: uppercase; letter-spacing: 0.05em; }

/* ===== PRODUCT CARDS ===== */
.jf-product {
  background: var(--jf-bg-panel); border: 1px solid var(--jf-border);
  border-radius: var(--jf-radius); padding: 28px; display: flex; flex-direction: column; gap: 14px;
  transition: var(--jf-transition); position: relative;
}
.jf-product:hover { border-color: var(--jf-border-strong); }
.jf-product-featured { border-color: var(--jf-accent); }
.jf-product-featured::after {
  content: 'MOST POPULAR'; position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
  background: var(--jf-accent); color: white; font-size: 0.6875rem; font-weight: 600;
  padding: 3px 14px; border-radius: 9999px; letter-spacing: 0.04em;
}
.jf-product h3 { font-size: 1.0625rem; }
.jf-product-desc { color: var(--jf-text-secondary); font-size: 0.875rem; }
.jf-product-price { font-size: 1.75rem; font-weight: 590; color: var(--jf-gold); }
.jf-product-price small { font-size: 0.8125rem; color: var(--jf-text-muted); font-weight: 400; }
.jf-product-list { list-style: none; }
.jf-product-list li { font-size: 0.8125rem; color: var(--jf-text-secondary); padding: 4px 0; }
.jf-product-list li::before { content: '✓ '; color: var(--jf-success); }

/* ===== FOMO ELEMENTS ===== */
.jf-fomo-bar {
  background: linear-gradient(90deg, rgba(239,68,68,0.06), rgba(124,92,255,0.06));
  border: 1px solid rgba(239,68,68,0.12); border-radius: var(--jf-radius); padding: 14px 22px;
  display: flex; align-items: center; gap: 12px; margin-bottom: 32px;
}
.jf-fomo-bar-icon { font-size: 20px; }
.jf-fomo-bar-text { font-size: 0.875rem; color: var(--jf-text-secondary); }
.jf-fomo-bar-text strong { color: var(--jf-text); }

.jf-scarcity {
  background: rgba(239,68,68,0.06); border: 1px solid rgba(239,68,68,0.12);
  border-radius: 8px; padding: 10px 14px; font-size: 0.75rem; color: #f87171; font-weight: 500;
  display: flex; align-items: center; gap: 8px;
}
.jf-scarcity-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--jf-danger); animation: jf-pulse 1.5s ease-in-out infinite; }
@keyframes jf-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.3; } }

.jf-progress { height: 6px; background: var(--jf-bg-elevated); border-radius: 9999px; overflow: hidden; }
.jf-progress-fill { height: 100%; background: linear-gradient(90deg, var(--jf-accent), var(--jf-gold)); border-radius: 9999px; transition: width 1s ease; }
.jf-progress-label { font-size: 0.75rem; color: var(--jf-text-muted); display: flex; justify-content: space-between; margin-bottom: 6px; }

.jf-social-proof { display: flex; align-items: center; gap: 10px; font-size: 0.75rem; color: var(--jf-text-muted); }
.jf-avatars { display: flex; }
.jf-avatar {
  width: 28px; height: 28px; border-radius: 50%; border: 2px solid var(--jf-bg-panel);
  display: flex; align-items: center; justify-content: center; font-size: 0.6875rem; color: white; font-weight: 600;
  margin-left: -8px;
}
.jf-avatar:first-child { margin-left: 0; }

/* ===== BUNDLE ===== */
.jf-bundle {
  background: linear-gradient(135deg, rgba(124,92,255,0.08), rgba(212,175,55,0.04));
  border: 2px solid var(--jf-accent); border-radius: var(--jf-radius-lg);
  padding: 48px; text-align: center; margin: 40px 0; position: relative; overflow: hidden;
}
.jf-bundle h2 { margin-bottom: 16px; }
.jf-bundle-price { font-size: 3rem; font-weight: 590; color: var(--jf-gold); margin: 16px 0; }
.jf-bundle-price small { font-size: 1rem; color: var(--jf-text-muted); text-decoration: line-through; font-weight: 400; }
.jf-bundle-features { display: flex; gap: 24px; justify-content: center; flex-wrap: wrap; margin: 24px 0; }
.jf-bundle-feature { font-size: 0.875rem; color: var(--jf-text-secondary); display: flex; align-items: center; gap: 8px; }

/* ===== MEDIA PAGE ===== */
.jf-media-tabs { display: flex; gap: 8px; justify-content: center; margin-bottom: 32px; flex-wrap: wrap; }
.jf-media-tab {
  padding: 10px 22px; border-radius: 9999px; font-size: 0.875rem; font-weight: 510;
  background: var(--jf-bg-panel); border: 1px solid var(--jf-border); color: var(--jf-text-secondary);
  cursor: pointer; transition: var(--jf-transition);
}
.jf-media-tab:hover { border-color: var(--jf-border-strong); color: var(--jf-text); }
.jf-media-tab.active { background: var(--jf-accent); color: white; border-color: var(--jf-accent); }

.jf-media-card {
  background: var(--jf-bg-panel); border: 1px solid var(--jf-border);
  border-radius: var(--jf-radius); overflow: hidden; transition: var(--jf-transition); cursor: pointer; text-decoration: none; display: flex; flex-direction: column;
}
.jf-media-card:hover { border-color: var(--jf-accent); transform: translateY(-2px); }
.jf-media-thumb {
  height: 180px; background: var(--jf-bg-elevated);
  display: flex; align-items: center; justify-content: center; font-size: 3rem; position: relative;
}
.jf-media-play {
  position: absolute; width: 56px; height: 56px; border-radius: 50%;
  background: rgba(124,92,255,0.85); display: flex; align-items: center; justify-content: center;
  font-size: 1.5rem; color: white; transition: var(--jf-transition); opacity: 0.8;
}
.jf-media-card:hover .jf-media-play { opacity: 1; transform: scale(1.1); }
.jf-media-body { padding: 18px; flex: 1; }
.jf-media-body h3 { font-size: 1rem; margin-bottom: 6px; }
.jf-media-body p { font-size: 0.8125rem; color: var(--jf-text-muted); }
.jf-media-duration {
  position: absolute; bottom: 12px; right: 12px; font-size: 0.6875rem; color: white;
  background: rgba(0,0,0,0.6); padding: 3px 8px; border-radius: 4px;
}

/* ===== BLOG ===== */
.jf-blog-card {
  background: var(--jf-bg-panel); border: 1px solid var(--jf-border);
  border-radius: var(--jf-radius); overflow: hidden; transition: var(--jf-transition);
  text-decoration: none; display: flex; flex-direction: column;
}
.jf-blog-card:hover { border-color: var(--jf-border-strong); transform: translateY(-2px); }
.jf-blog-thumb { height: 180px; display: flex; align-items: center; justify-content: center; font-size: 3rem; }
.jf-blog-body { padding: 24px; flex: 1; display: flex; flex-direction: column; gap: 8px; }
.jf-blog-meta { font-size: 0.75rem; color: var(--jf-text-muted); }
.jf-blog-body h3 { font-size: 1.0625rem; }
.jf-blog-body p { color: var(--jf-text-secondary); font-size: 0.875rem; }
.jf-blog-tag {
  display: inline-block; font-size: 0.6875rem; font-weight: 510; color: var(--jf-accent);
  background: rgba(124,92,255,0.1); padding: 3px 10px; border-radius: 9999px; align-self: flex-start;
}

/* ===== DISCORD ===== */
.jf-discord-cta {
  background: linear-gradient(135deg, #5865F2 0%, #4752c4 100%);
  border-radius: var(--jf-radius-lg); padding: 40px; text-align: center;
}
.jf-discord-cta h3 { color: white; margin-bottom: 12px; }
.jf-discord-cta p { color: rgba(255,255,255,0.8); margin-bottom: 24px; }
.jf-discord-preview {
  background: #36393f; border-radius: var(--jf-radius); overflow: hidden;
  border: 1px solid rgba(255,255,255,0.06); max-width: 340px; margin: 24px auto 0;
}
.jf-discord-preview-header {
  background: #2f3136; padding: 12px 16px; font-size: 0.875rem; font-weight: 600; color: white;
  display: flex; align-items: center; gap: 8px; border-bottom: 1px solid rgba(255,255,255,0.04);
}
.jf-discord-preview-body { padding: 12px 16px; }
.jf-discord-online { font-size: 0.6875rem; color: #72767d; text-transform: uppercase; font-weight: 700; padding: 8px 0 4px; letter-spacing: 0.05em; }
.jf-discord-member { display: flex; align-items: center; gap: 10px; padding: 5px 0; }
.jf-discord-avatar { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.6875rem; color: white; font-weight: 600; }
.jf-discord-avatar.gold { background: var(--jf-gold); }
.jf-discord-avatar.green { background: #3ba55c; }
.jf-discord-avatar.purple { background: #7c5cff; }
.jf-discord-avatar.blue { background: #5865F2; }
.jf-discord-member span { font-size: 0.8125rem; color: #dcddde; }

/* ===== NEWSLETTER ===== */
.jf-newsletter {
  background: var(--jf-bg-panel); border: 1px solid var(--jf-border);
  border-radius: var(--jf-radius); padding: 32px; text-align: center;
}
.jf-newsletter h3 { margin-bottom: 8px; }
.jf-newsletter p { color: var(--jf-text-secondary); margin-bottom: 20px; }
.jf-newsletter input[type="email"] {
  width: 100%; max-width: 380px; padding: 12px 16px; background: var(--jf-bg);
  border: 1px solid var(--jf-border-strong); border-radius: 8px;
  color: var(--jf-text); font-size: 0.9375rem; margin-bottom: 16px;
}
.jf-newsletter input[type="email"]:focus { outline: none; border-color: var(--jf-accent); }

/* ===== COURSE CARDS ===== */
.jf-course-card {
  background: var(--jf-bg-panel); border: 1px solid var(--jf-border);
  border-radius: var(--jf-radius); overflow: hidden; transition: var(--jf-transition); text-decoration: none; display: flex; flex-direction: column;
}
.jf-course-card:hover { border-color: var(--jf-accent); transform: translateY(-2px); }
.jf-course-thumb { height: 160px; display: flex; align-items: center; justify-content: center; font-size: 3rem; }
.jf-course-body { padding: 24px; flex: 1; }
.jf-course-body h3 { font-size: 1.0625rem; margin-bottom: 8px; }
.jf-course-body p { color: var(--jf-text-secondary); font-size: 0.875rem; margin-bottom: 12px; }
.jf-course-meta { display: flex; gap: 16px; font-size: 0.75rem; color: var(--jf-text-muted); }

/* ===== AFFILIATE ===== */
.jf-aff-item {
  display: flex; align-items: center; gap: 16px; padding: 20px 0;
  border-bottom: 1px solid var(--jf-border); text-decoration: none;
}
.jf-aff-item:last-child { border-bottom: none; }
.jf-aff-item:hover { background: rgba(124,92,255,0.03); border-radius: 8px; padding-left: 12px; }
.jf-aff-icon { width: 48px; height: 48px; border-radius: 12px; background: var(--jf-bg-elevated); display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; }
.jf-aff-info { flex: 1; }
.jf-aff-info h3 { font-size: 1rem; margin-bottom: 4px; }
.jf-aff-info p { font-size: 0.8125rem; color: var(--jf-text-secondary); }

/* ===== FOOTER ===== */
.jf-footer { background: var(--jf-bg-panel); border-top: 1px solid var(--jf-border); padding: 48px 0 32px; margin-top: 60px; }
.jf-footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px; max-width: 1200px; margin: 0 auto; padding: 0 24px; }
@media (max-width: 768px) { .jf-footer-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 500px) { .jf-footer-grid { grid-template-columns: 1fr; } }
.jf-footer a { color: var(--jf-text-secondary); font-size: 0.8125rem; display: block; padding: 4px 0; }
.jf-footer a:hover { color: var(--jf-text); }
.jf-footer h4 { color: var(--jf-text); font-size: 0.8125rem; font-weight: 590; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.05em; }
.jf-footer-brand { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.jf-footer-bottom { max-width: 1200px; margin: 32px auto 0; padding: 24px; border-top: 1px solid var(--jf-border); text-align: center; font-size: 0.8125rem; color: var(--jf-text-muted); }

/* ===== SECTION HEADER ===== */
.jf-section-header { text-align: center; margin-bottom: 40px; }
.jf-section-header h2 { margin-bottom: 10px; }
.jf-section-header p { color: var(--jf-text-secondary); max-width: 580px; margin: 0 auto; }

/* ===== MISC ===== */
.jf-tag { display: inline-block; font-size: 0.6875rem; font-weight: 510; padding: 3px 10px; border-radius: 9999px; background: rgba(255,255,255,0.04); color: var(--jf-text-muted); }
.jf-divider { height: 1px; background: var(--jf-border); margin: 40px 0; border: none; }
.jf-eyebrow { font-size: 0.75rem; font-weight: 510; text-transform: uppercase; letter-spacing: 0.08em; color: var(--jf-accent); margin-bottom: 8px; }

/* ===== THESIS SECTION (mobile-readable) ===== */
.jf-thesis .jf-thesis-body {
  color: var(--jf-text-secondary);
  font-size: 0.9375rem;
  line-height: 1.7;
}
.jf-thesis .jf-thesis-note {
  color: var(--jf-text-muted);
  font-size: 0.8125rem;
  line-height: 1.65;
  margin-top: 12px;
}
.jf-thesis .jf-media-player {
  padding: 24px;
}
.jf-thesis .jf-media-player h3 {
  font-size: 1.0625rem;
}

@media (max-width: 768px) {
  .jf-thesis .jf-thesis-body {
    font-size: 0.875rem;
    line-height: 1.6;
  }
  .jf-thesis .jf-thesis-note {
    font-size: 0.75rem;
    line-height: 1.55;
  }
  .jf-thesis .jf-media-player {
    padding: 20px;
  }
  .jf-thesis .jf-section-header p {
    font-size: 0.875rem;
  }
}

@media (max-width: 480px) {
  .jf-thesis .jf-thesis-body {
    font-size: 0.8125rem;
  }
  .jf-thesis .jf-thesis-note {
    font-size: 0.6875rem;
  }
  .jf-thesis .jf-media-player {
    padding: 16px;
  }
  .jf-thesis .jf-media-player h3 {
    font-size: 0.9375rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}