/* ===========================================================================
   blog.v1.0.0.css  (2026-09-04)
   Shared styles for the WordPress-fed free pages f395-f401 on sitarama.jp.
   Delivered from FTP /assets/css/, loaded by index.html only when $tpl_name is
   free395..free401. Pure ASCII, no BOM (Japanese as \XXXX escapes).

   Scope rule: every selector is under [data-blog] (the new page root) or is a
   class that only blog.v1.0.0.js emits (.wp-blog-eyebrow / .wp-blog-lead /
   .wp-blog-has-lead). The legacy pages have neither, so this file is inert on
   any page that has not been swapped yet. Class names keep the wp-blog-* /
   wp-post-* prefix so the admin source stays diff-able.

   Colour tokens: COLME_TEMPLATE/DESIGN.md  (text #2d2d2d, sub #767676,
   link #0E5C7D / hover #0A465F, deep #0C384B, accent #7A6A3F, warm #f4f1ea,
   rule #8f8672 (3.61:1) and #b3b2b2 (hairline, same as the sidebar), alert
   #b60000). No #0073aa, #999, #FFD700 anywhere.

   Cascade: this sheet lands after index.css / nav-icons / site-overrides and
   before the page's own inline <style> (f396 keeps its long-form typography
   inline), so a page can still override a shared rule locally.
   =========================================================================== */

/* [0] Root ---------------------------------------------------------------
   No font-family, no max-width, no padding: the root inherits Noto Sans JP,
   14px/1.75 (15px on SP) and the column width from .l-contents-main. */
[data-blog] {
  margin: 0;
  padding: 0;
}
[data-blog] a,
[data-blog] button {
  transition: none; /* index.css a{transition:all .5s} would fade focus rings in */
}
[data-blog] a:focus-visible,
[data-blog] button:focus-visible,
[data-blog] input:focus-visible,
[data-blog] select:focus-visible,
[data-blog] [tabindex]:focus-visible {
  outline: 2px solid #0E5C7D;
  outline-offset: 2px;
}

/* [1] Heading chrome (the template h1.c-ttl-second is the only heading) ---
   blog.js inserts an 11px eyebrow before the h1 and an optional lead after it. */
.l-contents-main .wp-blog-eyebrow {
  margin: 0 0 4px;
  font-size: 11px;
  line-height: 1.4;
  letter-spacing: .06em;
  color: #767676;
}
.l-contents-main h1.c-ttl-second.wp-blog-has-lead {
  margin-bottom: 8px;
}
.l-contents-main .wp-blog-lead {
  margin: 0 0 30px;
  font-size: 13px;
  line-height: 1.6;
  color: #767676;
  overflow-wrap: anywhere;
}
.l-contents-main .wp-blog-lead a {
  color: #0E5C7D;
}

/* [2] Sub-headings inside the body (same beat as .l-side-navi__ttl) ------ */
[data-blog] .wp-blog-subttl {
  margin: 0 0 15px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 400;
  color: #2d2d2d;
}
[data-blog] .wp-blog-section {
  margin: 40px 0 0;
}

/* [3] Card grid (>=768px: 3 columns like the shop's .c-item-list) --------- */
[data-blog] .wp-blog-posts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  column-gap: 30px;
  row-gap: 36px;
  margin: 0;
  padding: 0;
  list-style: none;
}
[data-blog] .wp-blog-post {
  position: relative; /* containing block for the whole-card link ::after. Do not remove. */
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  overflow-wrap: anywhere;
}
[data-blog] .wp-blog-thumbnail {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #f4f1ea;
}
/* Never put opacity<1 on .wp-blog-thumbnail: it would open a stacking context
   and trap the rank badge under the link ::after (CLAUDE.md, sold-out lesson). */
[data-blog] .wp-blog-thumbnail img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .3s ease;
}
[data-blog] .wp-blog-thumbnail::after {
  content: "";
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .06); /* keyline above the photo */
  pointer-events: none;
}
[data-blog] .wp-blog-content {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-width: 0;
  padding: 12px 0 0;
}
[data-blog] .wp-blog-date {
  margin: 0 0 4px;
  font-size: 13px;
  line-height: 1.4;
  color: #767676;
}
[data-blog] .wp-blog-title {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
  font-weight: 400;
  color: #2d2d2d;
  line-break: strict;
}
[data-blog] .wp-blog-title a {
  color: #2d2d2d;
  text-decoration: none;
  transition: color .2s;
}
/* One link per card: the title's ::after covers the card. */
[data-blog] .wp-blog-title a::after {
  content: "";
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  z-index: 1;
}
[data-blog] .wp-blog-title a:focus-visible {
  outline: none;
}
[data-blog] .wp-blog-title a:focus-visible::after {
  box-shadow: inset 0 0 0 2px #0E5C7D;
}
[data-blog] .wp-blog-post:hover .wp-blog-title a {
  color: #0E5C7D;
}
[data-blog] .wp-blog-post:hover .wp-blog-thumbnail img {
  transform: scale(1.04);
}
[data-blog] .wp-blog-excerpt {
  margin: 8px 0 0;
  font-size: 14px;
  line-height: 1.7;
  color: #2d2d2d;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
}
[data-blog] mark {
  background: #f4f1ea;
  color: inherit;
  box-shadow: inset 0 -2px 0 #7A6A3F;
  padding: 0 1px;
}

/* [4] SP (<=767px): one row per article, same shape as the sidebar pickups
   (site-overrides [B]) and the News component. Thumb left 38% / 16:9, date +
   2-line title right, hairline between rows. Excerpt hidden. */
@media screen and (max-width: 767px) {
  [data-blog] .wp-blog-posts {
    display: block;
    border-bottom: 1px solid #b3b2b2;
  }
  [data-blog] .wp-blog-post {
    flex-direction: row;
    align-items: center;
    gap: 12px;
    padding: 9px 0;
    border-top: 1px solid #b3b2b2;
  }
  [data-blog] .wp-blog-thumbnail {
    flex: 0 0 38%;
    width: 38%;
    max-width: 200px; /* 600-767px: keep the row a row */
  }
  [data-blog] .wp-blog-content {
    flex: 1 1 auto;
    padding: 0;
  }
  [data-blog] .wp-blog-title {
    font-size: 14px;
    line-height: 1.45;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
  }
  [data-blog] .wp-blog-excerpt {
    display: none;
  }
}

/* [5] Rank badge (f401 and any ranked list). Sits inside .wp-blog-thumbnail. */
[data-blog] .wp-blog-rank-badge {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 6px;
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  color: #2d2d2d;
  background: #f4f1ea;
  pointer-events: none; /* the card link stays clickable underneath */
}
[data-blog] .wp-blog-rank-badge.is-1,
[data-blog] .wp-blog-rank-badge.is-2,
[data-blog] .wp-blog-rank-badge.is-3 {
  min-width: 40px;
  height: 40px;
  font-size: 18px;
  color: #ffffff;
}
[data-blog] .wp-blog-rank-badge.is-1 { background: #0C384B; } /* 12.48:1 */
[data-blog] .wp-blog-rank-badge.is-2 { background: #0E5C7D; } /*  7.38:1 */
[data-blog] .wp-blog-rank-badge.is-3 { background: #7A6A3F; } /*  5.30:1 */
@media screen and (max-width: 767px) {
  [data-blog] .wp-blog-rank-badge { min-width: 26px; height: 26px; font-size: 12px; }
  [data-blog] .wp-blog-rank-badge.is-1,
  [data-blog] .wp-blog-rank-badge.is-2,
  [data-blog] .wp-blog-rank-badge.is-3 { min-width: 30px; height: 30px; font-size: 14px; }
}

/* [6] Chips: sub-categories (f397), category of a post (f396) --------------- */
[data-blog] .wp-blog-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 30px;
  padding: 0;
  list-style: none;
}
[data-blog] .wp-blog-chip {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 6px 14px;
  border: 1px solid #8f8672;
  border-radius: 3px;
  font-size: 14px;
  line-height: 1.4;
  color: #2d2d2d;
  background: #ffffff;
  text-decoration: none;
}
[data-blog] .wp-blog-chip:hover {
  color: #0E5C7D;
  border-color: #0E5C7D;
  text-decoration: none;
}
[data-blog] .wp-blog-chip[aria-current="page"],
[data-blog] .wp-blog-chip.is-active {
  font-weight: 700;
  color: #2d2d2d;
  border-color: #2d2d2d;
  background: #f4f1ea;
}
@media screen and (max-width: 767px) {
  [data-blog] .wp-blog-chip { min-height: 44px; font-size: 15px; }
}

/* [7] Buttons and form controls (ghost button = .c-btn shape, 44px) -------- */
[data-blog] .wp-blog-btn {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  min-width: 120px;
  margin: 0;
  padding: 8px 24px;
  border: 1px solid #2d2d2d;
  border-radius: 0;
  font: inherit;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.4;
  color: #2d2d2d;
  background: #ffffff;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}
[data-blog] .wp-blog-btn:hover {
  color: #ffffff;
  background: #2d2d2d;
  text-decoration: none;
}
[data-blog] .wp-blog-btn:disabled {
  color: #767676;
  border-color: #b3b2b2;
  background: #ffffff;
  cursor: default;
}
[data-blog] .wp-blog-form {
  display: flex;
  gap: 10px;
  max-width: 600px;
  margin: 0 0 24px;
}
[data-blog] .wp-blog-form-field {
  flex: 1 1 auto;
  min-width: 0;
}
[data-blog] .wp-blog-input,
[data-blog] .wp-blog-select {
  box-sizing: border-box;
  display: block;
  width: 100%;
  min-height: 44px;
  margin: 0;
  padding: 8px 12px;
  border: 1px solid #8f8672;
  border-radius: 3px;
  font: inherit;
  font-size: 16px; /* 16px stops iOS from zooming the page on focus */
  line-height: 1.5;
  color: #2d2d2d;
  background: #ffffff;
}
[data-blog] .wp-blog-input::placeholder {
  color: #767676;
}
[data-blog] .wp-blog-select {
  padding-right: 32px;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%232d2d2d' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  -webkit-appearance: none;
  appearance: none;
}
[data-blog] .wp-blog-form-inline {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px;
  margin: 0 0 24px;
}
[data-blog] .wp-blog-form-inline .wp-blog-form-field {
  flex: 0 1 180px;
}
[data-blog] .wp-blog-label {
  display: block;
  margin: 0 0 4px;
  font-size: 13px;
  color: #767676;
}
@media screen and (max-width: 767px) {
  [data-blog] .wp-blog-form { flex-direction: column; max-width: none; }
  [data-blog] .wp-blog-form-inline .wp-blog-form-field { flex: 1 1 calc(50% - 5px); }
  [data-blog] .wp-blog-form-inline .wp-blog-btn { flex: 1 1 100%; }
}

/* [8] Search info and empty state ------------------------------------------ */
[data-blog] .wp-blog-search-info {
  margin: 0 0 20px;
  font-size: 14px;
  line-height: 1.6;
  color: #2d2d2d;
}
[data-blog] .wp-blog-search-keyword {
  font-weight: 700;
}
[data-blog] .wp-blog-search-count {
  color: #767676;
}
[data-blog] .wp-blog-empty {
  margin: 40px 0 60px;
  text-align: center;
}
[data-blog] .wp-blog-empty__ttl {
  margin: 0 0 10px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 400;
  color: #2d2d2d;
}
[data-blog] .wp-blog-empty__txt {
  margin: 0 0 20px;
  font-size: 14px;
  line-height: 1.7;
  color: #767676;
}
[data-blog] .wp-blog-empty__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 24px;
  margin: 0;
  padding: 0;
  list-style: none;
}
[data-blog] .wp-blog-empty__actions a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: #0E5C7D;
  text-decoration: underline;
}
[data-blog] .wp-blog-empty__actions a:hover {
  color: #0A465F;
}

/* [9] Status / error (aria-live regions written by blog.js) ---------------- */
[data-blog] .wp-blog-status {
  margin: 24px 0;
  padding: 12px 0;
  text-align: center;
  font-size: 14px;
  line-height: 1.6;
  color: #767676;
}
[data-blog] .wp-blog-status:empty {
  display: none;
}
[data-blog] .wp-blog-error {
  margin: 24px 0;
  padding: 12px 16px;
  border-left: 3px solid #b60000;
  background: #ffffff;
  color: #2d2d2d;
  font-size: 14px;
  line-height: 1.6;
}
[data-blog] .wp-blog-error:empty {
  display: none;
}
[data-blog] .wp-blog-error .wp-blog-btn {
  margin-top: 10px;
}
[data-blog] .wp-blog-noscript {
  margin: 0 0 24px;
  padding: 12px 16px;
  border-left: 3px solid #b60000;
  font-size: 14px;
  line-height: 1.6;
}

/* [10] Ranking tabs (f401) --------------------------------------------------- */
[data-blog] .wp-blog-ranking-tabs {
  display: flex;
  gap: 4px;
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
  border-bottom: 1px solid #b3b2b2;
}
[data-blog] .wp-blog-ranking-tab {
  box-sizing: border-box;
  margin: 0 0 -1px;
  padding: 0 16px;
  min-height: 44px;
  border: 0;
  border-bottom: 3px solid transparent;
  border-radius: 0;
  font: inherit;
  font-size: 14px;
  line-height: 1.4;
  color: #2d2d2d;
  background: transparent;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}
[data-blog] .wp-blog-ranking-tab:hover {
  color: #0E5C7D;
}
[data-blog] .wp-blog-ranking-tab[aria-selected="true"] {
  font-weight: 700;
  color: #0E5C7D;
  border-bottom-color: #0E5C7D;
}
@media screen and (max-width: 767px) {
  [data-blog] .wp-blog-ranking-tabs { gap: 0; }
  [data-blog] .wp-blog-ranking-tab { flex: 1 1 0; padding: 0 6px; font-size: 13px; }
}

/* [11] Monthly archive navigation (f400) ------------------------------------- */
[data-blog] .wp-blog-archive-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 24px;
  padding: 6px 0;
  border-top: 1px solid #b3b2b2;
  border-bottom: 1px solid #b3b2b2;
}
[data-blog] .wp-blog-archive-nav-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 8px;
  font-size: 14px;
  color: #0E5C7D;
  text-decoration: none;
  white-space: nowrap;
}
[data-blog] .wp-blog-archive-nav-link:hover {
  color: #0A465F;
  text-decoration: underline;
}
[data-blog] .wp-blog-archive-nav-link[aria-disabled="true"] {
  color: #767676;
  pointer-events: none;
  text-decoration: none;
}
[data-blog] .wp-blog-archive-current {
  text-align: center;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
  color: #2d2d2d;
}
[data-blog] .wp-blog-archive-count {
  display: block;
  font-size: 13px;
  font-weight: 400;
  color: #767676;
}

/* [12] Article page chrome written by blog.js (f396). The long-form body
   typography (.wp-post-content ...) stays inline in f396. ------------------ */
[data-blog] .wp-post-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 20px;
  margin: 0 0 24px;
  font-size: 13px;
  line-height: 1.5;
  color: #767676;
}
[data-blog] .wp-post-meta .wp-blog-chip-list {
  margin: 0;
}
[data-blog] .wp-post-featured-image {
  margin: 0 0 30px;
}
[data-blog] .wp-post-featured-image img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 0;
  box-shadow: none;
}
[data-blog] .wp-post-navigation {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  min-height: 96px; /* reserved so the late fetch does not push the page */
  margin: 40px 0;
  padding: 16px 0;
  border-top: 1px solid #b3b2b2;
  border-bottom: 1px solid #b3b2b2;
}
[data-blog] .wp-post-nav-item.next {
  text-align: right;
}
[data-blog] .wp-post-nav-label {
  margin: 0 0 4px;
  font-size: 12px;
  line-height: 1.4;
  color: #767676;
}
[data-blog] .wp-post-nav-link {
  display: block;
  box-sizing: border-box;
  min-height: 44px;
  padding: 10px 0;
  color: #2d2d2d;
  font-size: 14px;
  line-height: 1.6;
  text-decoration: none;
  line-break: strict;
}
[data-blog] .wp-post-nav-link:hover {
  color: #0E5C7D;
}
@media screen and (max-width: 767px) {
  [data-blog] .wp-post-navigation { grid-template-columns: 1fr; }
  [data-blog] .wp-post-nav-item.next { text-align: left; }
}
[data-blog] .wp-post-back {
  margin: 30px 0 0;
}

/* [13] Collapsible boxes created by f396's processCollapsibleSections().
   Class names are the function's contract - do not rename. */
[data-blog] .collapsible-section {
  margin: 15px 0;
  border: 1px solid #b3b2b2;
  border-radius: 3px;
  overflow: hidden;
}
[data-blog] .collapsible-toggle {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: 44px;
  margin: 0;
  padding: 10px 16px;
  border: 0;
  border-radius: 0;
  background: #f4f1ea;
  cursor: pointer;
  font: inherit;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
  color: #2d2d2d;
  text-align: left;
  -webkit-appearance: none;
  appearance: none;
}
[data-blog] .collapsible-toggle:hover {
  background: #ebe6d9;
}
[data-blog] .collapsible-icon {
  margin-right: 8px;
  width: 1em;
  font-size: 16px;
  color: #0E5C7D;
  text-align: center;
}
[data-blog] .collapsible-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height .3s ease-out;
}
[data-blog] .collapsible-section.open .collapsible-content {
  max-height: none;
}
[data-blog] .collapsible-content-inner {
  padding: 16px;
  border-top: 1px solid #b3b2b2;
}

/* [14] Fallback pager: the markup reuses index.css .c-pager* so nothing is
   redeclared here; only the total line is toned to the sub colour. */
[data-blog] .c-pager__total {
  font-size: 13px;
  color: #767676;
}

/* [15] Motion ---------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  [data-blog] .wp-blog-thumbnail img,
  [data-blog] .wp-blog-title a,
  [data-blog] .collapsible-content {
    transition: none;
  }
  [data-blog] .wp-blog-post:hover .wp-blog-thumbnail img {
    transform: none;
  }
}
