/*
Theme Name: CustomFlex
Theme URI: https://example.com/customflex
Author: You
Author URI: https://example.com
Description: A fully customizable, mobile-responsive WordPress theme. Supports fonts installed via Appearance > Fonts (Font Library) as well as fonts uploaded manually via FTP, independent heading/body font selection, a scalable or directly-set header font size, and multiple preset color themes.
Version: 1.0.0
Requires at least: 6.5
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: customflex
Tags: custom-colors, custom-menu, translation-ready, threaded-comments, responsive-layout, custom-fonts
*/

/* -------------------------------------------------
   0. CSS Custom Properties (defaults; overridden inline
      by inc/customizer.php based on live Customizer values)
------------------------------------------------- */
:root{
  --cf-color-primary:#2563eb;
  --cf-color-secondary:#1e293b;
  --cf-color-accent:#f59e0b;
  --cf-color-background:#ffffff;
  --cf-color-surface:#f8fafc;
  --cf-color-text:#1e293b;
  --cf-color-text-muted:#64748b;
  --cf-color-border:#e2e8f0;

  --cf-font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --cf-container-width:1200px;

  /* Per-heading-level font, size, and color (overridden inline by the
     Customizer — see inc/customizer.php) */
  --cf-h1-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --cf-h1-size:40px;
  --cf-h1-color:#1e293b;
  --cf-h2-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --cf-h2-size:32px;
  --cf-h2-color:#1e293b;
  --cf-h3-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --cf-h3-size:26px;
  --cf-h3-color:#1e293b;
  --cf-h4-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --cf-h4-size:21px;
  --cf-h4-color:#1e293b;
  --cf-h5-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --cf-h5-size:18px;
  --cf-h5-color:#1e293b;
  --cf-h6-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --cf-h6-size:15px;
  --cf-h6-color:#1e293b;

  /* Featured banner */
  --cf-banner-height:420px;
  --cf-banner-overlay-color:#000000;
  --cf-banner-overlay-opacity:0.45;
  --cf-banner-text-color:#ffffff;
}

/* -------------------------------------------------
   1. Reset / base
------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--cf-color-background);
  color:var(--cf-color-text);
  font-family:var(--cf-font-body);
  font-size:16px;
  line-height:1.65;
  overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block;}
a{color:var(--cf-color-primary);text-decoration:none;}
a:hover{text-decoration:underline;}
ul,ol{padding-left:1.25em;}

h1,h2,h3,h4,h5,h6{
  line-height:1.2;
  margin:0 0 .55em;
  font-weight:700;
}
h1{font-family:var(--cf-h1-font);font-size:var(--cf-h1-size);color:var(--cf-h1-color);}
h2{font-family:var(--cf-h2-font);font-size:var(--cf-h2-size);color:var(--cf-h2-color);}
h3{font-family:var(--cf-h3-font);font-size:var(--cf-h3-size);color:var(--cf-h3-color);}
h4{font-family:var(--cf-h4-font);font-size:var(--cf-h4-size);color:var(--cf-h4-color);}
h5{font-family:var(--cf-h5-font);font-size:var(--cf-h5-size);color:var(--cf-h5-color);}
h6{font-family:var(--cf-h6-font);font-size:var(--cf-h6-size);color:var(--cf-h6-color);}

p{margin:0 0 1.25em;}

.button,button,input[type="submit"],input[type="button"]{
  display:inline-block;
  background:var(--cf-color-primary);
  color:#fff;
  border:0;
  border-radius:6px;
  padding:.7em 1.4em;
  font-size:.95rem;
  cursor:pointer;
  transition:opacity .15s ease, transform .15s ease;
}
.button:hover,button:hover{opacity:.88;text-decoration:none;}

/* -------------------------------------------------
   2. Layout
------------------------------------------------- */
.cf-container{
  width:100%;
  max-width:var(--cf-container-width);
  margin:0 auto;
  padding:0 20px;
}

.site-header{
  border-bottom:1px solid var(--cf-color-border);
  background:var(--cf-color-background);
  position:relative;
  z-index:100;
}
.site-header-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:18px 0;
}
.site-branding .site-title{
  margin:0;
  font-size:1.5rem;
}
.site-branding .site-title a{color:var(--cf-color-secondary);}
.site-branding .site-description{
  margin:2px 0 0;
  font-size:.85rem;
  color:var(--cf-color-text-muted);
}
.custom-logo{max-height:56px;width:auto;}

/* Primary nav */
.main-navigation ul{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  gap:6px;
}
.main-navigation li{position:relative;}
.main-navigation a{
  display:block;
  padding:10px 14px;
  color:var(--cf-color-text);
  border-radius:6px;
}
.main-navigation a:hover,
.main-navigation .current-menu-item > a{
  color:var(--cf-color-primary);
  text-decoration:none;
  background:var(--cf-color-surface);
}
.main-navigation ul ul{
  display:none;
  position:absolute;
  top:100%;left:0;
  background:var(--cf-color-background);
  border:1px solid var(--cf-color-border);
  border-radius:8px;
  min-width:200px;
  padding:6px;
  box-shadow:0 10px 30px rgba(0,0,0,.08);
}
.main-navigation li:hover > ul{display:block;}
.main-navigation ul ul li{width:100%;}

.menu-toggle{
  display:none;
  background:transparent;
  border:1px solid var(--cf-color-border);
  border-radius:6px;
  padding:8px 10px;
  color:var(--cf-color-text);
}
.menu-toggle .bar{
  display:block;
  width:22px;height:2px;
  background:var(--cf-color-text);
  margin:4px 0;
}

/* Content layout */
.site-content{padding:48px 0;min-height:50vh;}
.content-area{width:100%;}
.has-sidebar .site-main-wrap{
  display:flex;
  gap:48px;
  align-items:flex-start;
}
.has-sidebar .content-area{flex:1 1 0;min-width:0;}
.widget-area{flex:0 0 300px;}
.widget{margin-bottom:32px;}
.widget-title{font-size:1.05rem;margin-bottom:.75em;}

article.post,article.page{margin-bottom:56px;}
.entry-title a{color:var(--cf-color-secondary);}
.entry-meta{color:var(--cf-color-text-muted);font-size:.85rem;margin-bottom:1em;}
.entry-thumbnail{margin-bottom:1.5em;border-radius:10px;overflow:hidden;}

.site-footer{
  background:var(--cf-color-secondary);
  color:#fff;
  padding:48px 0 24px;
  margin-top:48px;
}
.site-footer a{color:#fff;opacity:.85;}
.site-footer .footer-widgets{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:32px;
  margin-bottom:32px;
}
.site-footer .site-info{
  border-top:1px solid rgba(255,255,255,.15);
  padding-top:20px;
  font-size:.85rem;
  opacity:.75;
}

/* -------------------------------------------------
   2b. Featured banner (image + overlapping header text)
------------------------------------------------- */
.cf-banner{
  position:relative;
  width:100%;
  height:var(--cf-banner-height);
  min-height:200px;
  background-size:cover;
  background-position:center;
  background-repeat:no-repeat;
  overflow:hidden;
}
.cf-banner::before{
  content:"";
  position:absolute;
  inset:0;
  background:var(--cf-banner-overlay-color);
  opacity:var(--cf-banner-overlay-opacity);
}
.cf-banner-inner{
  position:relative;
  z-index:2;
  width:100%;
  height:100%;
  max-width:var(--cf-container-width);
  margin:0 auto;
  padding:0 20px;
  display:flex;
}
.cf-banner-inner .entry-title{
  color:var(--cf-banner-text-color);
  margin:0;
  max-width:100%;
  text-shadow:0 2px 12px rgba(0,0,0,.35);
}
/* Alignment lives on .cf-banner-inner (the actual flex container around the
   title), not on .cf-banner itself — .cf-banner-inner always spans the full
   width, so aligning the outer element had no visible effect. */
.cf-banner--center .cf-banner-inner{align-items:center;justify-content:center;text-align:center;}
.cf-banner--bottom-left .cf-banner-inner{align-items:flex-end;justify-content:flex-start;text-align:left;padding-bottom:40px;}
.cf-banner--bottom-center .cf-banner-inner{align-items:flex-end;justify-content:center;text-align:center;padding-bottom:40px;}

/* -------------------------------------------------
   2c. Primary navigation — submenu toggles (touch support)
------------------------------------------------- */
.main-navigation li.menu-item-has-children{position:relative;}
.main-navigation .submenu-toggle{
  background:transparent;
  border:0;
  cursor:pointer;
  padding:4px 8px;
  color:inherit;
  display:none;
}
.main-navigation .submenu-toggle .arrow{
  display:inline-block;
  border:solid currentColor;
  border-width:0 2px 2px 0;
  padding:3px;
  transform:rotate(45deg);
  transition:transform .15s ease;
}
.main-navigation li.submenu-open > .submenu-toggle .arrow{transform:rotate(-135deg);}

/* -------------------------------------------------
   3. Mobile responsive
------------------------------------------------- */
@media (max-width:782px){
  .menu-toggle{display:inline-flex;flex-direction:column;align-items:center;}
  .main-navigation{
    display:none;
    width:100%;
    order:3;
  }
  .main-navigation.is-open{display:block;}
  .site-header-inner{flex-wrap:wrap;}
  .main-navigation ul{flex-direction:column;gap:0;}
  .main-navigation ul ul{
    position:static;box-shadow:none;border:0;padding-left:12px;display:block;
  }
  .has-sidebar .site-main-wrap{flex-direction:column;}
  .widget-area{flex:1 1 auto;width:100%;}

  /* Mobile submenu toggle buttons + collapsible submenus */
  .main-navigation .submenu-toggle{display:inline-flex;position:absolute;right:0;top:0;}
  .main-navigation li.menu-item-has-children > a{padding-right:44px;}
  .main-navigation ul ul{display:none;position:static;box-shadow:none;border:0;padding-left:12px;}
  .main-navigation li.submenu-open > ul{display:block;}

  .cf-banner{height:calc(var(--cf-banner-height) * 0.65);min-height:180px;}
}

@media (max-width:480px){
  .cf-container{padding:0 16px;}
}
