/*
 * Remote Sensing & GIS Blog - Article Specific Styles
 * Integrates with main.css
 */

/* ==========================================================================
   1. Article Layout & Container
   ========================================================================== */
.article-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  position: relative;
}

@media (min-width: 992px) {
  .article-layout {
    grid-template-columns: 300px 1fr;
    align-items: start;
  }
}

.article-content {
  max-width: 72ch; /* Optimal reading width */
  margin: 0 auto;
  width: 100%;
}

.article-header {
  margin-bottom: var(--space-6);
  text-align: center;
}

.article-header h1 {
  font-size: var(--text-4xl);
  margin-bottom: var(--space-3);
}

.article-meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-4);
  color: var(--color-text-muted);
  font-size: var(--text-sm);
  margin-bottom: var(--space-4);
}

.article-featured-image {
  width: 100%;
  aspect-ratio: 21 / 9;
  object-fit: cover;
  border-radius: var(--radius-xl);
  margin-bottom: var(--space-8);
  box-shadow: var(--shadow-md);
}

/* ==========================================================================
   2. Table of Contents
   ========================================================================== */
.toc-sidebar {
  position: sticky;
  top: 100px; /* Below navbar */
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  max-height: calc(100vh - 120px);
  overflow-y: auto;
}

body.dark-mode .toc-sidebar {
  background: var(--color-surface-alt);
}

.toc-title {
  font-family: var(--font-heading);
  font-size: var(--text-lg);
  font-weight: 700;
  margin-bottom: var(--space-3);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--color-border);
}

.toc-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.toc-list a {
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
  display: block;
  padding-left: var(--space-2);
  border-left: 2px solid transparent;
  transition: all var(--transition-fast);
}

.toc-list a:hover,
.toc-list a.active {
  color: var(--color-primary);
  border-left-color: var(--color-primary);
}

body.dark-mode .toc-list a:hover,
body.dark-mode .toc-list a.active {
  color: var(--color-secondary);
  border-left-color: var(--color-secondary);
}

/* Mobile TOC Collapsible */
.toc-mobile-toggle {
  display: none;
}

@media (max-width: 991px) {
  .toc-sidebar {
    position: relative;
    top: 0;
    max-height: none;
    margin-bottom: var(--space-6);
  }
  
  .toc-mobile-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-weight: 700;
    font-family: var(--font-heading);
  }
  
  .toc-mobile-label::after {
    content: '+';
    font-size: 1.5rem;
  }
  
  .toc-list {
    display: none;
    margin-top: var(--space-3);
  }
  
  .toc-mobile-toggle:checked ~ .toc-list {
    display: flex;
  }
  
  .toc-mobile-toggle:checked ~ .toc-mobile-label::after {
    content: '-';
  }
  
  .toc-title {
    display: none; /* Hide default title on mobile, use label */
  }
}

@media (min-width: 992px) {
  .toc-mobile-label {
    display: none;
  }
}

/* ==========================================================================
   3. Article Content Typography
   ========================================================================== */
.article-content h2 {
  font-size: var(--text-3xl);
  margin-top: var(--space-8);
  margin-bottom: var(--space-3);
  padding-bottom: var(--space-1);
  border-bottom: 1px solid var(--color-border);
}

.article-content h3 {
  font-size: var(--text-2xl);
  margin-top: var(--space-6);
  margin-bottom: var(--space-2);
}

.article-content p {
  font-size: var(--text-lg);
  line-height: 1.8;
  margin-bottom: var(--space-4);
  color: var(--color-text);
}

.article-content ul, 
.article-content ol {
  margin-bottom: var(--space-4);
  padding-left: var(--space-4);
  font-size: var(--text-lg);
  line-height: 1.8;
}

.article-content ul {
  list-style-type: disc;
}

.article-content ol {
  list-style-type: decimal;
}

.article-content li {
  margin-bottom: var(--space-1);
}

/* Blockquotes */
.article-content blockquote {
  margin: var(--space-6) 0;
  padding: var(--space-4) var(--space-6);
  background: var(--color-surface-alt);
  border-left: 4px solid var(--color-primary);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  font-style: italic;
  font-size: var(--text-xl);
  color: var(--color-text-secondary);
}

body.dark-mode .article-content blockquote {
  background: var(--color-surface);
  border-left-color: var(--color-secondary);
}

/* Code Blocks */
.article-content pre {
  background: var(--color-darker);
  color: #E2E8F0;
  padding: var(--space-4);
  border-radius: var(--radius-md);
  overflow-x: auto;
  margin: var(--space-4) 0;
  font-family: 'Fira Code', 'Courier New', monospace;
  font-size: var(--text-sm);
  line-height: 1.5;
}

.article-content code {
  background: var(--color-surface-alt);
  color: var(--color-primary-light);
  padding: 0.2em 0.4em;
  border-radius: var(--radius-sm);
  font-family: 'Fira Code', 'Courier New', monospace;
  font-size: 0.9em;
}

body.dark-mode .article-content code {
  background: var(--color-darker);
  color: var(--color-accent);
}

.article-content pre code {
  background: transparent;
  color: inherit;
  padding: 0;
}

/* Tables */
.article-content table {
  width: 100%;
  border-collapse: collapse;
  margin: var(--space-6) 0;
  font-size: var(--text-base);
}

.article-content th,
.article-content td {
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  text-align: left;
}

.article-content th {
  background: var(--color-surface-alt);
  font-weight: 700;
}

.article-content tr:nth-child(even) {
  background: var(--color-surface);
}

body.dark-mode .article-content th {
  background: var(--color-darker);
}

body.dark-mode .article-content tr:nth-child(even) {
  background: var(--color-surface-alt);
}

/* Images */
.article-content img {
  border-radius: var(--radius-lg);
  margin: var(--space-6) 0 var(--space-2);
  width: 100%;
  box-shadow: var(--shadow-sm);
}

.article-content figcaption {
  text-align: center;
  font-size: var(--text-sm);
  color: var(--color-text-muted);
  margin-bottom: var(--space-6);
  font-style: italic;
}

/* ==========================================================================
   4. FAQ Section (CSS Accordion)
   ========================================================================== */
.faq-section {
  margin: var(--space-8) 0;
}

.faq-item {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-2);
  overflow: hidden;
}

.faq-toggle {
  display: none;
}

.faq-question {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--space-3) var(--space-4);
  background: var(--color-surface);
  cursor: pointer;
  font-weight: 600;
  margin: 0;
  transition: background var(--transition-fast);
}

body.dark-mode .faq-question {
  background: var(--color-surface-alt);
}

.faq-question:hover {
  background: var(--color-surface-alt);
}

body.dark-mode .faq-question:hover {
  background: var(--color-surface);
}

.faq-question::after {
  content: '+';
  font-size: 1.2rem;
  transition: transform var(--transition-base);
}

.faq-answer {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease-out, padding 0.3s ease;
  background: transparent;
  padding: 0 var(--space-4);
}

.faq-toggle:checked ~ .faq-answer {
  max-height: 500px;
  padding: var(--space-4);
  border-top: 1px solid var(--color-border);
}

.faq-toggle:checked ~ .faq-question::after {
  transform: rotate(45deg);
}

/* ==========================================================================
   5. References
   ========================================================================== */
.references-section {
  margin: var(--space-8) 0;
  padding-top: var(--space-4);
  border-top: 2px solid var(--color-border);
}

.references-list {
  list-style: none;
  counter-reset: ref-counter;
  padding: 0;
}

.references-list li {
  position: relative;
  padding-left: 2rem;
  margin-bottom: var(--space-2);
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
}

.references-list li::before {
  counter-increment: ref-counter;
  content: '[' counter(ref-counter) ']';
  position: absolute;
  left: 0;
  color: var(--color-primary);
  font-weight: 600;
}

body.dark-mode .references-list li::before {
  color: var(--color-secondary);
}

/* ==========================================================================
   6. Share Buttons
   ========================================================================== */
.article-share {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin: var(--space-8) 0;
  padding: var(--space-4) 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.share-label {
  font-weight: 600;
  color: var(--color-text-secondary);
}

.share-btn {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--color-surface-alt);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-text);
  transition: all var(--transition-base);
}

.share-btn:hover {
  transform: translateY(-2px);
  color: white;
}

.share-btn.twitter:hover { background: #1DA1F2; }
.share-btn.linkedin:hover { background: #0A66C2; }
.share-btn.facebook:hover { background: #1877F2; }
.share-btn.email:hover { background: var(--color-primary); }

/* ==========================================================================
   7. Author Bio Box
   ========================================================================== */
.author-box {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  padding: var(--space-6);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-left: 4px solid var(--color-primary);
  border-radius: var(--radius-lg);
  margin: var(--space-8) 0;
}

body.dark-mode .author-box {
  background: var(--color-surface-alt);
  border-left-color: var(--color-secondary);
}

@media (min-width: 576px) {
  .author-box {
    flex-direction: row;
    align-items: flex-start;
  }
}

.author-avatar {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
}

.author-info h4 {
  margin-bottom: var(--space-1);
  font-size: var(--text-xl);
}

.author-title {
  color: var(--color-primary);
  font-weight: 600;
  font-size: var(--text-sm);
  margin-bottom: var(--space-2);
  display: block;
}

body.dark-mode .author-title {
  color: var(--color-secondary);
}

.author-bio {
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
  margin-bottom: var(--space-3);
}

/* ==========================================================================
   8. Related Articles Grid
   ========================================================================== */
.related-articles {
  margin-top: var(--space-12);
}

.related-articles h2 {
  text-align: center;
  margin-bottom: var(--space-6);
}

.related-grid {
  display: grid;
  gap: var(--space-6);
}

@media (min-width: 768px) {
  .related-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 992px) {
  .related-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* ==========================================================================
   9. Print Styles
   ========================================================================== */
@media print {
  body {
    background: white;
    color: black;
  }
  
  .navbar,
  .footer,
  .toc-sidebar,
  .article-share,
  .related-articles,
  .scroll-progress,
  .back-to-top,
  .author-box,
  .newsletter {
    display: none !important;
  }

  .article-layout {
    display: block;
  }

  .article-content {
    max-width: 100%;
  }

  a {
    color: black;
    text-decoration: underline;
  }

  .article-content pre {
    border: 1px solid #ccc;
    background: transparent;
    color: black;
  }

  h1, h2, h3 {
    page-break-after: avoid;
  }

  img {
    page-break-inside: avoid;
  }

  .article-content table {
    border-collapse: collapse;
  }

  .article-content th, .article-content td {
    border: 1px solid black;
  }
}
