/* blog.css — styles for the new Blogs summary page and individual blog pages.
   Loaded after the compiled Next.js stylesheets and qc-fixes.css, same pattern
   as qc-fixes.css itself: this static page sits outside the React bundle
   Tailwind was compiled against, so any *new* utility-class string has no
   matching compiled rule. Anything here that isn't already a class used
   elsewhere on the live site is written as plain CSS instead. */

.qc-blog-hero {
  padding-top: 6.5rem;
  padding-bottom: 4rem;
}

.qc-blog-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid #E5E7EB;
  border-radius: 1.5rem;
  overflow: hidden;
  max-width: 420px;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.qc-blog-card:hover {
  border-color: #7357FF;
  box-shadow: 0 12px 32px rgba(115, 87, 255, 0.12);
}
.qc-blog-card__media {
  position: relative;
  height: 220px;
  overflow: hidden;
  background: #0A0A0A;
}
.qc-blog-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s;
}
.qc-blog-card:hover .qc-blog-card__media img {
  transform: scale(1.05);
}
.qc-blog-card__body {
  padding: 1.75rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.qc-blog-card__excerpt {
  flex: 1;
}

/* Article body typography: the compiled Tailwind bundle has no generic
   "prose" plugin output, so headings/paragraphs/lists inside .qc-article
   get explicit spacing here instead of relying on utility classes. Full
   width of its container (matching the hero image/heading above it and the
   homepage's own generous section widths) rather than a narrower reading
   column. */
.qc-article {
  width: 100%;
}
.qc-article h2 {
  font-family: var(--font-noto-sans-jp), sans-serif;
  font-weight: 300;
  letter-spacing: 0.02em;
  color: #1A1A2A;
  font-size: clamp(22px, 3vw, 32px);
  line-height: 1.3;
  margin-top: 3rem;
  margin-bottom: 1.25rem;
}
.qc-article h2:first-of-type {
  margin-top: 0;
}
.qc-article h3 {
  font-weight: 600;
  color: #1A1A2A;
  font-size: 17px;
  line-height: 1.4;
  margin-top: 2rem;
  margin-bottom: 0.65rem;
}
.qc-article p {
  color: #4B5563;
  font-size: 15.5px;
  line-height: 1.85;
  margin-bottom: 1.25rem;
}
.qc-article ul {
  margin: 0 0 1.5rem 0;
  padding-left: 0;
  list-style: none;
}
.qc-article ul li {
  position: relative;
  padding-left: 1.6rem;
  color: #4B5563;
  font-size: 15.5px;
  line-height: 1.75;
  margin-bottom: 0.65rem;
}
.qc-article ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 8px;
  height: 8px;
  border-radius: 9999px;
  background: linear-gradient(135deg, #7357FF, #FF8A45);
}
/* The compiled bundle's Tailwind preflight sets `ol,ul,menu{list-style:none}`,
   so an <ol> renders with no numbers at all. Restore them with a counter,
   drawn as the same gradient chip the <ul> bullets use. */
.qc-article ol {
  margin: 0 0 1.5rem 0;
  padding-left: 0;
  list-style: none;
  counter-reset: qc-ol;
}
.qc-article ol li {
  position: relative;
  padding-left: 2.25rem;
  color: #4B5563;
  font-size: 15.5px;
  line-height: 1.75;
  margin-bottom: 0.9rem;
  counter-increment: qc-ol;
}
.qc-article ol li::before {
  content: counter(qc-ol);
  position: absolute;
  left: 0;
  top: 0.15em;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 9999px;
  background: linear-gradient(135deg, #7357FF, #FF8A45);
  color: #fff;
  font-size: 11.5px;
  font-weight: 600;
  line-height: 1.5rem;
  text-align: center;
}
.qc-article li strong {
  color: #374151;
  font-weight: 600;
}

/* Inline prose links. The compiled bundle's Tailwind preflight resets anchors
   to `color: inherit; text-decoration: inherit`, so an unstyled <a> in the
   article body is completely indistinguishable from the text around it.
   Scoped to p/li so the .qc-contact-card's own colour-inherit links keep
   their component styling. */
.qc-article p a,
.qc-article li a {
  color: #7357FF;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
  transition: color 0.2s;
}
.qc-article p a:hover,
.qc-article li a:hover {
  color: #1A1A2A;
}

.qc-article figure {
  margin: 2.5rem 0;
}
/* Covers the hero <figure> and every in-article one (both sit inside
   .qc-blog-hero). The supplied photography varies a lot in shape and size —
   two sources are only 600px wide, one is portrait and would run taller than
   the viewport at full width — so images are *capped* rather than stretched:
   never scaled past their natural width, never taller than max-height, and
   centred in the column. Nothing is ever upscaled, so nothing looks soft, and
   each photo keeps its own framing uncropped. Drop in a higher-resolution
   file later and it runs wider on its own, with no CSS change. */
.qc-blog-hero figure img {
  display: block;
  margin-inline: auto;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 620px;
  border-radius: 1.25rem;
}
.qc-article figcaption {
  font-size: 12.5px;
  color: #9CA3AF;
  margin-top: 0.6rem;
  text-align: center;
}
.qc-article .qc-contact-card {
  background: #F7F8FA;
  border-radius: 1.25rem;
  padding: 1.5rem 1.75rem;
  margin: 2.5rem 0;
  font-size: 14.5px;
  line-height: 1.9;
  color: #374151;
}

/* FAQ: replicates the homepage's own #faq accordion (index.html) —
   same markup shape, same classes/colors, same single-item-open behavior
   and plus/minus icon swap. The homepage's version is a React component
   that can't be reused directly on a static page, so js/blog-faq.js
   reimplements its click/height-animation behavior in vanilla JS. */
.qc-faq-row {
  border-bottom: 1px solid #E5E7EB;
}
.qc-faq-row:last-child {
  border-bottom: none;
}
.qc-faq-row button {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem 0;
  text-align: left;
  background: none;
  border: none;
}
.qc-faq-row button h3 {
  margin: 0 !important;
  font-size: 15px;
  font-weight: 500;
  color: #374151;
  transition: color 0.2s;
}
.qc-faq-row:hover button h3 {
  color: #1A1A2A;
}
.qc-faq-row.is-open button h3 {
  color: #7357FF;
}
.qc-faq-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border-radius: 9999px;
  border: 1px solid #E5E7EB;
  color: #9CA3AF;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s;
}
.qc-faq-row.is-open .qc-faq-icon {
  border-color: #7357FF;
  color: #7357FF;
}
.qc-faq-icon .qc-faq-minus {
  display: none;
}
.qc-faq-row.is-open .qc-faq-icon .qc-faq-plus {
  display: none;
}
.qc-faq-row.is-open .qc-faq-icon .qc-faq-minus {
  display: block;
}
.qc-faq-panel {
  overflow: hidden;
  height: 0px;
  opacity: 0;
  transition: height 0.3s ease, opacity 0.3s ease;
}
.qc-faq-panel p {
  font-size: 14px;
  color: #6B7280;
  line-height: 1.8;
  padding-bottom: 1.25rem;
  margin: 0;
}

.qc-breadcrumb {
  font-size: 12.5px;
  color: #9CA3AF;
  margin-bottom: 1.5rem;
}
.qc-breadcrumb a {
  color: #9CA3AF;
  transition: color 0.2s;
}
.qc-breadcrumb a:hover {
  color: #7357FF;
}

@media (max-width: 767px) {
  .qc-blog-hero {
    padding-top: 5.5rem;
    padding-bottom: 2.5rem;
  }
  .qc-article h2 {
    margin-top: 2.25rem;
  }
}
