/*
 Theme Name:   SDN 2025 (GeneratePress)
 Theme URI:    https://studentdoctor.net/
 Description:  Child theme for GeneratePress customizations (SDN 2025)
 Author:       Lee Burnett
 Author URI:   https://studentdoctor.net/
 Template:     generatepress
 Version:      1.0.3
 Text Domain:  gp-sdn2025
*/

:root {
  /* Base colors */
  --base: #ffffff;
  --base-2: #f7f7f8;
  --base-3: #e5e7eb;
  --contrast: #111111;

  /* Accent colors */
  --accent: #005b8a;
  --accent-light: #007bbf;
  --accent-dark: #00466a;

  /* Shadows and lines */
  --shadow-light: rgba(0, 0, 0, 0.05);
  --shadow-medium: rgba(0, 0, 0, 0.1);

  /* Text colors */
  --text-main: #222222;
  --text-muted: #555555;

  /* Link colors */
  --link: var(--accent);
  --link-hover: var(--accent-dark);
}

/*────────────────────────────────────────
  Typography System
────────────────────────────────────────*/
:root {
  /* Font stacks */
  --font-sans: "Source Sans Pro", "Open Sans", "Helvetica Neue", Arial, sans-serif;
  --font-serif: "Merriweather", Georgia, serif;
  --font-mono: "Source Code Pro", Menlo, monospace;

  /* Font sizing scale (rem units) */
  --fs-xxl: 2.25rem; /* ~36px */
  --fs-xl: 1.875rem; /* ~30px */
  --fs-lg: 1.5rem;   /* ~24px */
  --fs-md: 1.25rem;  /* ~20px */
  --fs-base: 1rem;   /* 16px */
  --fs-sm: 0.875rem; /* ~14px */
  --fs-xs: 0.75rem;  /* ~12px */

  /* Line heights and weights */
  --lh-tight: 1.25;
  --lh-normal: 1.6;
  --lh-loose: 1.8;
  --fw-light: 300;
  --fw-normal: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;
}

/* Base text */
body {
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  line-height: var(--lh-normal);
  color: var(--text-main);
  background-color: var(--base);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* Headings */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-serif);
  color: var(--contrast);
  line-height: var(--lh-tight);
  margin-top: 2rem;
  margin-bottom: 1rem;
  font-weight: var(--fw-semibold);
}
h1 { font-size: var(--fs-xxl); }
h2 { font-size: var(--fs-xl); }
h3 { font-size: var(--fs-lg); }
h4 { font-size: var(--fs-md); }
h5 { font-size: var(--fs-base); }
h6 { font-size: var(--fs-sm); }

/* Paragraphs and lists */
p, ul, ol {
  font-size: var(--fs-base);
  line-height: var(--lh-loose);
  margin-bottom: 1.25rem;
}
ul, ol { padding-left: 1.5rem; }

/* Links */
a {
  color: var(--link);
  text-decoration: none;
  transition: color 0.2s ease;
}
a:hover, a:focus {
  color: var(--link-hover);
  text-decoration: underline;
}

/* Small text and captions */
small, figcaption {
  font-size: var(--fs-sm);
  color: var(--text-muted);
}

/* Code blocks */
code, pre {
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  background: var(--base-2);
  padding: 0.2em 0.4em;
  border-radius: 4px;
}

/* Responsive scaling */
@media (max-width: 768px) {
  :root {
    --fs-xxl: 2rem;
    --fs-xl: 1.625rem;
    --fs-lg: 1.375rem;
    --fs-md: 1.125rem;
  }
}

/*────────────────────────────────────────
  Global site-content wrapper
────────────────────────────────────────*/
.site-content {
  background: var(--base);
  box-shadow: 0 4px 20px rgba(0,0,0,0.05);
  border-radius: 8px;
  padding: 40px 20px;
  margin: 0 auto 40px;
  max-width: 1280px;
}

.site-content .entry-content {
  max-width: 720px;
  margin: 0 auto;
  line-height: 1.7;
}

/*────────────────────────────────────────
  Homepage images
────────────────────────────────────────*/
body.home img[class^="gb-media-"][src*="/wp-content/uploads/"] {
  display: block;
  border-radius: 12px !important;
  box-shadow: 0 4px 16px rgba(0,0,0,0.08) !important;
}

/*────────────────────────────────────────
  Headings and content
────────────────────────────────────────*/
.page-hero h1 { margin-top: 0.5rem; margin-bottom: 0.5rem; }
h2 { margin-top: 2.5rem; }
h3 { margin-top: 2rem; }

/*────────────────────────────────────────
  Table styling
────────────────────────────────────────*/
table {
  border-collapse: collapse;
  width: 100%;
  margin: 1.5rem 0;
}
th, td {
  border: 1px solid var(--base-3);
  padding: 0.75rem 1rem;
  text-align: left;
}
tr:nth-child(even) { background: var(--base-2); }

/*────────────────────────────────────────
  Footer widget grid (≥768px)
────────────────────────────────────────*/
@media (min-width: 768px) {
  .footer-widgets-container .inside-footer-widgets {
    display: grid !important;
    grid-template-columns: 2fr repeat(3,1fr) !important;
    gap: 1.5rem;
  }
}

/*────────────────────────────────────────
  Specialty buttons (desktop)
────────────────────────────────────────*/
.specialty-buttons.gb-grid,
.specialty-buttons {
  display: grid !important;
  grid-template-columns: repeat(10, 1fr) !important;
  gap: 1rem !important;
  max-width: 1280px !important;
  width: 100% !important;
  margin: 1rem auto 2.5rem !important;
  padding: 0 1rem;
  box-sizing: border-box;
}
@media (max-width: 1279px) {
  .specialty-buttons.gb-grid,
  .specialty-buttons { display: none !important; }
}
.specialty-buttons.gb-grid .gb-grid-column,
.specialty-buttons .gb-grid-column { text-align: center; }
.specialty-buttons.gb-grid .gb-button,
.specialty-buttons .gb-button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  border-radius: 10px !important;
  padding: 0.75rem 1rem !important;
  font-weight: 300 !important;
  font-size: 16px !important;
  text-decoration: none !important;
  transition: filter .2s, transform .2s !important;
  box-shadow: 0 2px 6px rgba(0,0,0,0.1) !important;
  color: var(--base) !important;
}
.specialty-buttons .gb-button:hover {
  filter: brightness(0.9) !important;
  transform: translateY(-2px) !important;
}

/* Profession-specific button colors */
.specialty-buttons .gb-grid-column:nth-child(1) .gb-button { background: #085467 !important; }
.specialty-buttons .gb-grid-column:nth-child(2) .gb-button { background: #983827 !important; }
.specialty-buttons .gb-grid-column:nth-child(3) .gb-button { background: #923252 !important; }
.specialty-buttons .gb-grid-column:nth-child(4) .gb-button { background: #9BA656 !important; }
.specialty-buttons .gb-grid-column:nth-child(5) .gb-button { background: #9256A0 !important; }
.specialty-buttons .gb-grid-column:nth-child(6) .gb-button { background: #D38F36 !important; }
.specialty-buttons .gb-grid-column:nth-child(7) .gb-button { background: #1FB0A7 !important; }
.specialty-buttons .gb-grid-column:nth-child(8) .gb-button { background: #33C4BB !important; }
.specialty-buttons .gb-grid-column:nth-child(9) .gb-button { background: #0B9C93 !important; }
.specialty-buttons .gb-grid-column:nth-child(10) .gb-button { background: #C88876 !important; }

/*────────────────────────────────────────
  Right-menu and sidebar widgets
────────────────────────────────────────*/
#right-sidebar .widget {
  margin-bottom: 1.5rem;
  background: var(--base);
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
#right-sidebar .inside-right-sidebar .inner-padding.widget_block > .widget {
  margin: 0 !important;
  padding: 16px !important;
}
#right-sidebar .inside-right-sidebar > aside.inner-padding.widget_block:not(:last-child) {
  margin: 0 0 16px !important;
  padding: 0 !important;
}
#right-sidebar .inside-right-sidebar .widget h5 {
  font-size: 1rem !important;
  line-height: 1.4 !important;
  margin: 0 0 8px !important;
}

/* Featured Resources block */
#right-sidebar .inside-right-sidebar .widget.dive-into {
  background: var(--base-2);
  border: 1px solid var(--base-3);
  border-radius: 8px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.06);
  padding: 16px !important;
  margin-bottom: 16px !important;
}
#right-sidebar .inside-right-sidebar .widget.dive-into h5 { color: var(--accent); }
#right-sidebar .inside-right-sidebar .widget.dive-into .gb-button {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  width: 100% !important;
  padding: 1rem 1.25rem !important;
  background: var(--base);
  border: 1px solid var(--base-3);
  border-radius: 6px;
  color: var(--accent);
  font-size: 0.875rem;
  font-weight: 500;
  text-decoration: none;
  transition: background-color 0.2s, color 0.2s, transform 0.1s;
}
#right-sidebar .inside-right-sidebar .widget.dive-into .gb-button:hover {
  background: var(--accent);
  color: var(--base);
  transform: translateY(-1px);
}

/*────────────────────────────────────────
  Single-post tweaks
────────────────────────────────────────*/
body.single-post .wp-block-post-featured-image img {
  border-radius: 12px !important;
  overflow: hidden;
}

/*────────────────────────────────────────
  Search results: two-column cards
────────────────────────────────────────*/
body.search .generate-columns-container {
  margin: 0 !important;
  padding: 0 !important;
  display: flex !important;
  flex-wrap: wrap;
  gap: 1rem;
}
body.search .generate-columns-container > article {
  flex: 0 1 calc(50% - 1rem);
  background-color: var(--base);
  border: 1px solid var(--base-3);
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  padding: 1rem;
}
body.search .generate-columns-container > article.featured-column { flex: 1 1 100%; }
@media (max-width: 768px) {
  body.search .generate-columns-container { flex-direction: column; }
  body.search .generate-columns-container > article { flex: 1 1 100%; }
}

/*────────────────────────────────────────
  Profession pills
────────────────────────────────────────*/
.dynamic-term-class a {
  display: inline-block;
  background-color: var(--accent);
  color: var(--base);
  padding: 0.3em 0.6em;
  border-radius: 0.25em;
  text-decoration: none;
  font-size: 0.9em;
  transition: background-color 0.3s ease, color 0.3s ease;
}
.dynamic-term-class a + a { margin-left: 0.5em; }
.dynamic-term-class a:hover {
  background-color: #005b8a;
  color: var(--base);
}

/*────────────────────────────────────────
  Author Box
────────────────────────────────────────*/
.about-heading {
  font-size: 1.5em;
  font-weight: 600;
  line-height: 1.3;
}

/*────────────────────────────────────────
  Custom blocks (GenerateBlocks, schema)
────────────────────────────────────────*/
.dynamic-featured-image {
  border-radius: 12px;
  overflow: hidden;
}
.gb-element-1a8cdd48 {
  background-color: var(--base);
  border: 1px solid var(--base-3);
  border-radius: 8px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.1);
  padding: 20px;
  margin: 24px 0;
}

/* FAQ Schema Styling */
.schema-faq-section {
  margin-top: 2rem;
  padding-top: 1rem;
  border-top: 1px solid var(--base-3);
}
.schema-faq-question {
  font-weight: 600;
  font-size: 1.1rem;
  line-height: 1.5;
  color: #111;
}
.schema-faq-answer {
  font-size: 1rem;
  line-height: 1.75;
  color: #333;
  margin: 0;
  max-width: 700px;
}
.schema-faq-item + .schema-faq-item {
  border-top: 1px solid rgba(0,0,0,0.08);
}
@media (max-width: 768px) {
  .schema-faq-question { font-size: 1rem; }
  .schema-faq-answer { font-size: 0.95rem; }
}

/*────────────────────────────────────────
  Footer
────────────────────────────────────────*/
.site-footer { padding-top: 3rem; }

/*────────────────────────────────────────
  Accessibility and Readability Enhancements
────────────────────────────────────────*/

/* Ensure visible keyboard focus for links and buttons */
a:focus-visible,
button:focus-visible,
input[type="submit"]:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Maintain color contrast on hover/focus for buttons and CTAs */
.gb-button:hover,
.gb-button:focus-visible {
  filter: brightness(0.9);
  transform: translateY(-2px);
}

/* Improve paragraph rhythm in long-form content */
.entry-content p {
  margin-bottom: 1.4rem;
}

/* Increase focus contrast for dark backgrounds */
*:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* Table header emphasis for screen reader clarity */
table th {
  background-color: var(--base-2);
  font-weight: var(--fw-semibold);
}

/* Maintain link visibility under high contrast or zoom */
a {
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.15em;
}
a:hover, a:focus-visible {
  text-decoration: underline;
  text-decoration-thickness: 0.1em;
}

/* Ensure small text remains legible */
small, figcaption {
  font-size: var(--fs-sm);
  line-height: var(--lh-normal);
  color: var(--text-muted);
}

/*────────────────────────────────────────
  Post navigation buttons — aligned
────────────────────────────────────────*/
.navigation.post-navigation,
.paging-navigation {
  text-align: center !important;
  margin: 3rem 0 2rem !important;
}

.navigation.post-navigation .nav-links,
.paging-navigation .nav-links {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  max-width: 720px !important;
  margin: 0 auto !important;
  gap: 1rem !important;
}

.navigation.post-navigation a,
.paging-navigation a,
.nav-links a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0.5rem !important;
  background-color: var(--accent) !important;
  color: var(--base) !important;
  font-size: 0.95rem !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.03em !important;
  padding: 0.75rem 1.5rem !important;
  border-radius: 6px !important;
  text-decoration: none !important;
  transition: background-color 0.2s, transform 0.1s !important;
  box-shadow: 0 2px 6px rgba(0,0,0,0.08) !important;
}

.navigation.post-navigation a svg,
.paging-navigation a svg {
  width: 0.9em;
  height: 0.9em;
  vertical-align: middle;
}

.navigation.post-navigation a:hover,
.paging-navigation a:hover,
.nav-links a:hover {
  background-color: #004d73 !important;
  transform: translateY(-2px) !important;
}

.navigation.post-navigation a:focus,
.paging-navigation a:focus,
.nav-links a:focus {
  outline: 2px solid #004d73 !important;
  outline-offset: 2px !important;
}

/* hide one side when no link exists */
.navigation.post-navigation .nav-previous:empty,
.navigation.post-navigation .nav-next:empty {
  display: none !important;
}