/*
Theme Name: BOK活
Theme URI: https://example.com/bok-katsu
Author: BOK活編集部
Author URI: https://example.com
Description: 「BEAUTY」「OSHI」「KOREA」をテーマにした、大人かわいい韓国メディア風Webメディアのためのオリジナルテーマです。パステルグラデーションと余白を活かした上品でポップすぎないデザインで、10代〜40代女性に向けた美容・推し活・韓国情報の発信をサポートします。
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: bok-katsu
Tags: blog, news, custom-logo, custom-menu, featured-images, footer-widgets, full-width-template, threaded-comments, translation-ready, responsive-layout, one-column, two-columns

BOK活 WordPress Theme is licensed under the GNU GPL v2 or later.
*/

/* =========================================================
   目次 / Table of Contents
   1. Design Tokens (CSS Variables)
   2. Reset & Base
   3. Typography
   4. Layout / Utility
   5. Buttons & Badges
   6. Header
   7. Mobile Menu
   8. KV (Hero)
   9. About Section
   10. Section Heading (共通)
   11. Article Cards
   12. New Topic Layout
   13. Category Topic Sections
   14. Banner Area
   15. Ranking
   16. Footer
   17. Single / Archive / Search / 404
   18. Pagination
   19. Animations
   20. Responsive
========================================================= */

/* ==========================================================
   1. Design Tokens
========================================================== */
:root{
  /* --- Pastel Palette --- */
  --bok-pink: #ffc9de;
  --bok-pink-deep: #ff8fb4;
  --bok-pink-light: #fff1f7;
  --bok-lavender: #d9ceff;
  --bok-lavender-deep: #b39ce8;
  --bok-lavender-light: #f5f1ff;
  --bok-mint: #c3f2e3;
  --bok-mint-deep: #7fd8b8;
  --bok-mint-light: #eefdf8;

  --bok-gradient-bg: linear-gradient(135deg, #fff0f6 0%, #f6f1ff 45%, #eafbf5 100%);
  --bok-gradient-brand: linear-gradient(120deg, #ff9bc0 0%, #c6a8f5 55%, #7fd8b8 100%);
  --bok-gradient-btn: linear-gradient(120deg, #ff9bc0 0%, #c9a4f2 100%);

  --bok-white: #ffffff;
  --bok-text: #4a4552;
  --bok-text-soft: #837c8c;
  --bok-heading: #35303d;
  --bok-border: #f1e9f4;

  --bok-shadow-sm: 0 4px 16px rgba(150, 110, 150, 0.08);
  --bok-shadow-md: 0 10px 30px rgba(150, 110, 150, 0.12);
  --bok-shadow-hover: 0 16px 36px rgba(150, 110, 150, 0.18);

  --bok-radius-card: 24px;
  --bok-radius-btn: 999px;
  --bok-radius-sm: 14px;

  --bok-font-heading: 'Kaisei Decol', 'Shippori Mincho', serif;
  --bok-font-body: 'Zen Kaku Gothic New', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', sans-serif;
  --bok-font-round: 'M PLUS Rounded 1c', var(--bok-font-body);

  --bok-header-h: 76px;
  --bok-max-width: 1180px;
  --bok-transition: all .3s cubic-bezier(.4,0,.2,1);
}

/* ==========================================================
   2. Reset & Base
========================================================== */
*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  background: var(--bok-gradient-bg);
  background-attachment: fixed;
  color: var(--bok-text);
  font-family: var(--bok-font-body);
  font-size: 16px;
  line-height: 1.85;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img{ max-width:100%; height:auto; display:block; }
a{ color: inherit; text-decoration:none; transition: var(--bok-transition); }
ul{ list-style:none; margin:0; padding:0; }
button{ font-family: inherit; cursor:pointer; }
input, button{ border:none; outline:none; background:none; }
figure{ margin:0; }
.screen-reader-text{
  position:absolute !important;
  width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

/* ==========================================================
   3. Typography
========================================================== */
h1,h2,h3,h4,h5,h6{
  font-family: var(--bok-font-heading);
  color: var(--bok-heading);
  line-height:1.5;
  margin: 0 0 .6em;
  font-weight: 600;
}
p{ margin:0 0 1em; }
.bok-logo-text{
  font-family: var(--bok-font-heading);
  font-weight: 700;
  letter-spacing: .02em;
}
.bok-logo-text .bok-em{
  background: var(--bok-gradient-brand);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: 1.12em;
}

/* ==========================================================
   4. Layout / Utility
========================================================== */
.bok-container{
  max-width: var(--bok-max-width);
  margin: 0 auto;
  padding: 0 24px;
}
.bok-section{
  padding: 90px 0;
  position: relative;
}
.bok-visually-hidden{ display:none; }
.bok-tag-pink{ --bok-tint: var(--bok-pink-light); }
.bok-tag-lavender{ --bok-tint: var(--bok-lavender-light); }
.bok-tag-mint{ --bok-tint: var(--bok-mint-light); }
.bok-tint-bg{
  background: var(--bok-tint, var(--bok-pink-light));
}
.bok-decor-blob{
  position:absolute;
  border-radius:50%;
  filter: blur(40px);
  opacity:.5;
  z-index:0;
  pointer-events:none;
}

/* ==========================================================
   5. Buttons & Badges
========================================================== */
.bok-btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding: 15px 34px;
  border-radius: var(--bok-radius-btn);
  background: var(--bok-gradient-btn);
  color:#fff !important;
  font-weight:700;
  font-size:.92rem;
  letter-spacing:.03em;
  box-shadow: var(--bok-shadow-sm);
  transition: var(--bok-transition);
}
.bok-btn:hover{
  transform: translateY(-3px);
  box-shadow: var(--bok-shadow-hover);
}
.bok-btn-outline{
  background: #fff;
  color: var(--bok-pink-deep) !important;
  border: 1.5px solid var(--bok-pink-deep);
  box-shadow:none;
}
.bok-btn-outline:hover{
  background: var(--bok-pink-deep);
  color:#fff !important;
}
.bok-section-cta{
  text-align:center;
  margin-top: 46px;
}
.bok-category-badge{
  display:inline-block;
  padding: 5px 16px;
  border-radius: var(--bok-radius-btn);
  font-size: .72rem;
  font-weight:700;
  letter-spacing:.06em;
  color:#fff;
  background: var(--bok-pink-deep);
}
.cat-beauty .bok-category-badge,
.bok-category-badge.cat-beauty{ background: var(--bok-pink-deep); }
.cat-oshi .bok-category-badge,
.bok-category-badge.cat-oshi{ background: var(--bok-lavender-deep); }
.cat-korea .bok-category-badge,
.bok-category-badge.cat-korea{ background: var(--bok-mint-deep); }

/* ==========================================================
   6. Header
========================================================== */
.bok-header{
  position: fixed;
  top:0; left:0; right:0;
  height: var(--bok-header-h);
  z-index: 999;
  background: rgba(255,255,255,.7);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255,255,255,.6);
  transition: var(--bok-transition);
}
.bok-header.is-scrolled{
  background: rgba(255,255,255,.92);
  box-shadow: var(--bok-shadow-sm);
}
.bok-header-inner{
  max-width: var(--bok-max-width);
  margin:0 auto;
  height: 100%;
  padding: 0 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 20px;
}
.bok-site-logo{ font-size: 1.5rem; }
.bok-site-logo img{ max-height: 40px; width:auto; }
.bok-nav-primary{
  display:flex;
  align-items:center;
  gap: 34px;
}
.bok-nav-primary ul{ display:flex; gap:30px; }
.bok-nav-primary a{
  font-size:.9rem;
  font-weight:700;
  letter-spacing:.04em;
  color: var(--bok-heading);
  position:relative;
  padding: 6px 2px;
}
.bok-nav-primary a::after{
  content:"";
  position:absolute;
  left:0; bottom:0;
  width:0%; height:2px;
  background: var(--bok-gradient-brand);
  transition: var(--bok-transition);
}
.bok-nav-primary a:hover::after,
.bok-nav-primary .current-menu-item a::after{ width:100%; }
.bok-header-actions{ display:flex; align-items:center; gap:16px; }
.bok-search-toggle,
.bok-menu-toggle{
  width:42px; height:42px;
  border-radius:50%;
  background:#fff;
  box-shadow: var(--bok-shadow-sm);
  display:flex; align-items:center; justify-content:center;
}
.bok-search-toggle:hover,
.bok-menu-toggle:hover{ box-shadow: var(--bok-shadow-hover); }
.bok-menu-toggle{ display:none; flex-direction:column; gap:5px; }
.bok-menu-toggle span{
  width:18px; height:2px; background: var(--bok-heading); border-radius:2px;
  transition: var(--bok-transition);
}
.bok-search-panel{
  position:fixed;
  top: var(--bok-header-h);
  left:0; right:0;
  background:#fff;
  box-shadow: var(--bok-shadow-md);
  padding: 22px 24px;
  transform: translateY(-12px);
  opacity:0;
  visibility:hidden;
  transition: var(--bok-transition);
  z-index: 998;
}
.bok-search-panel.is-open{
  transform:translateY(0);
  opacity:1;
  visibility:visible;
}
.bok-search-panel form{
  max-width: var(--bok-max-width);
  margin:0 auto;
  display:flex;
  gap:10px;
  align-items:center;
  border-bottom: 2px solid var(--bok-pink);
  padding-bottom:8px;
}
.bok-search-panel input[type="search"]{
  flex:1;
  font-size:1rem;
  padding:8px 4px;
}
.bok-search-panel button{ font-weight:700; color: var(--bok-pink-deep); }

/* ==========================================================
   7. Mobile Menu
========================================================== */
.bok-mobile-nav{
  position:fixed;
  top:0; right:-100%;
  width: min(82vw, 340px);
  height:100vh;
  background: var(--bok-gradient-bg);
  box-shadow: var(--bok-shadow-md);
  padding: 100px 32px 40px;
  z-index: 1001;
  transition: right .4s cubic-bezier(.4,0,.2,1);
  overflow-y:auto;
}
.bok-mobile-nav.is-open{ right:0; }
.bok-mobile-nav ul{ display:flex; flex-direction:column; gap:26px; }
.bok-mobile-nav a{
  font-family: var(--bok-font-heading);
  font-size:1.3rem;
  font-weight:700;
  color: var(--bok-heading);
}
.bok-mobile-nav-close{
  position:absolute; top:28px; right:28px;
  width:40px;height:40px;border-radius:50%;background:#fff;
  display:flex;align-items:center;justify-content:center;
  box-shadow: var(--bok-shadow-sm);
}
.bok-overlay{
  position:fixed; inset:0;
  background: rgba(60,40,60,.35);
  z-index:1000;
  opacity:0; visibility:hidden;
  transition: var(--bok-transition);
}
.bok-overlay.is-open{ opacity:1; visibility:visible; }

/* ==========================================================
   8. KV (Hero)
========================================================== */
.bok-kv{
  position:relative;
  padding: calc(var(--bok-header-h) + 90px) 0 110px;
  overflow:hidden;
  min-height: 560px;
  display:flex;
  align-items:center;
}
.bok-kv-inner{
  max-width: 640px;
  margin:0 auto;
  padding: 0 24px;
  position:relative;
  z-index:2;
  text-align:center;
}
.bok-kv-copy{ position:relative; }
.bok-kv-eyebrow{
  display:inline-block;
  font-family: var(--bok-font-round);
  font-weight:700;
  letter-spacing:.18em;
  font-size:.78rem;
  color: var(--bok-pink-deep);
  background:#fff;
  padding:8px 18px;
  border-radius: var(--bok-radius-btn);
  box-shadow: var(--bok-shadow-sm);
  margin-bottom: 22px;
}
.bok-kv-title{
  font-size: clamp(2rem, 4vw, 3.1rem);
  line-height:1.4;
  margin-bottom: 26px;
}
.bok-kv-title span{ display:block; }
.bok-kv-title .bok-kv-en{
  font-family: var(--bok-font-heading);
  background: var(--bok-gradient-brand);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
  font-size:.55em; letter-spacing:.08em; margin-bottom:.3em;
}
.bok-kv-lead{ color: var(--bok-text-soft); margin: 0 auto; max-width: 460px; }

/* グラデーション背景に散らした白いアイコン（テキストの四角の四隅付近に配置） */
.bok-kv-doodles{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
}
.bok-doodle{
  position:absolute;
  height:auto;
  opacity:.85;
  filter: drop-shadow(0 6px 14px rgba(120,90,140,.14));
}
/* 口紅・ペンライト・韓国国旗・アイスコーヒー：それぞれ塗りつぶし(fill)で描かれた
   独自SVGのため、回転は各SVG内に既に含まれている（CSSでの追加回転は不要） */
.d-lipstick{ width:104px; top:18%; left:19%;  }
.d-penlight{ width:92px;  top:16%; right:24%; }
.d-flag{     width:132px; top:66%; left:18%;  }
.d-coffee{   width:104px; top:63%; right:17%; }

/* ==========================================================
   9. About Section
========================================================== */
.bok-about{ text-align:center; }
.bok-about-inner{
  max-width: 720px;
  margin: 0 auto;
  background:#fff;
  border-radius: var(--bok-radius-card);
  padding: 64px 48px;
  box-shadow: var(--bok-shadow-sm);
}
.bok-about-badge{
  font-family: var(--bok-font-round);
  font-weight:700;
  color: var(--bok-lavender-deep);
  letter-spacing:.1em;
  font-size:.8rem;
  margin-bottom:14px;
  display:block;
}
.bok-about-letters{
  display:flex;
  justify-content:center;
  gap: 22px;
  margin: 30px 0 8px;
  flex-wrap:wrap;
}
.bok-about-letter{
  display:flex; flex-direction:column; align-items:center; gap:6px;
  font-size:.82rem; color: var(--bok-text-soft);
}
.bok-about-letter b{
  font-family: var(--bok-font-heading);
  font-size: 1.8rem;
  color: var(--bok-heading);
}
.bok-about-letter.beauty b{ color: var(--bok-pink-deep); }
.bok-about-letter.oshi b{ color: var(--bok-lavender-deep); }
.bok-about-letter.korea b{ color: var(--bok-mint-deep); }

/* ==========================================================
   10. Section Heading (共通)
========================================================== */
.bok-section-head{
  text-align:center;
  margin-bottom: 56px;
}
.bok-section-eyebrow{
  display:block;
  font-family: var(--bok-font-round);
  letter-spacing:.22em;
  font-size:.76rem;
  font-weight:700;
  color: var(--bok-pink-deep);
  margin-bottom:10px;
}
.bok-tag-lavender .bok-section-eyebrow{ color: var(--bok-lavender-deep); }
.bok-tag-mint .bok-section-eyebrow{ color: var(--bok-mint-deep); }
.bok-section-title{
  font-size: clamp(1.6rem, 2.6vw, 2.1rem);
  margin-bottom:0;
}
.bok-section-desc{
  color: var(--bok-text-soft);
  font-size:.92rem;
  margin-top:12px;
}

/* ==========================================================
   11. Article Cards
========================================================== */
.bok-card{
  display:block;
  background:#fff;
  border-radius: var(--bok-radius-card);
  overflow:hidden;
  box-shadow: var(--bok-shadow-sm);
  transition: var(--bok-transition);
  height:100%;
}
.bok-card:hover{
  transform: translateY(-6px);
  box-shadow: var(--bok-shadow-hover);
}
.bok-card-thumb{
  display:block;
  position:relative;
  aspect-ratio: 4 / 3;
  overflow:hidden;
  background: var(--bok-pink-light);
}
.bok-card-thumb img{
  width:100%; height:100%; object-fit:cover;
  transition: transform .5s ease;
}
.bok-card:hover .bok-card-thumb img{ transform: scale(1.07); }
.bok-card-thumb .bok-card-noimg{
  width:100%; height:100%;
  display:flex; align-items:center; justify-content:center;
  font-size:2.4rem;
  background: linear-gradient(145deg,var(--bok-pink-light),var(--bok-lavender-light));
}
.bok-card-body{
  padding: 20px 22px 24px;
  margin-top:-26px;
  position:relative;
  background:#fff;
  border-radius: 22px 22px 0 0;
}
.bok-card-meta{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:10px;
  font-size:.72rem;
  color: var(--bok-text-soft);
}
.bok-card-title{
  font-size:1.02rem;
  line-height:1.6;
  margin:0;
  font-weight:700;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.bok-card-title a::after{ content:""; position:absolute; inset:0; }
.bok-card-title{ position:relative; }

/* Large card (New Topicのメイン) */
.bok-card-lg .bok-card-thumb{ aspect-ratio: 16/11; }
.bok-card-lg .bok-card-title{ font-size:1.35rem; -webkit-line-clamp:3; }

/* Small horizontal-ish card */
.bok-card-sm .bok-card-thumb{ aspect-ratio:4/3; }
.bok-card-sm .bok-card-title{ font-size:.94rem; }

/* ==========================================================
   12. New Topic Layout
========================================================== */
.bok-newtopic-grid{
  display:grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 28px;
  margin-bottom: 28px;
}
.bok-newtopic-side{
  display:grid;
  grid-template-rows: 1fr 1fr;
  gap: 28px;
}
.bok-newtopic-bottom{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

/* ==========================================================
   13. Category Topic Sections
========================================================== */
.bok-topic-grid{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

/* ==========================================================
   14. Banner Area
========================================================== */
.bok-banner-grid{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 26px;
}
.bok-banner{
  position:relative;
  display:block;
  border-radius: var(--bok-radius-card);
  overflow:hidden;
  box-shadow: var(--bok-shadow-sm);
  aspect-ratio: 16/6;
  background: var(--bok-gradient-brand);
}
.bok-banner img{ width:100%; height:100%; object-fit:cover; }
.bok-banner-label{
  position:absolute; left:26px; bottom:22px;
  color:#fff; font-weight:700; font-size:1.05rem;
  text-shadow: 0 2px 10px rgba(0,0,0,.25);
}
.bok-banner:hover{ transform: translateY(-4px); box-shadow: var(--bok-shadow-hover); }

/* ==========================================================
   15. Ranking
========================================================== */
.bok-ranking-list{ display:flex; flex-direction:column; gap:18px; }
.bok-ranking-item{
  display:flex;
  align-items:center;
  gap: 22px;
  background:#fff;
  border-radius: var(--bok-radius-card);
  padding: 16px 24px 16px 16px;
  box-shadow: var(--bok-shadow-sm);
  transition: var(--bok-transition);
}
.bok-ranking-item:hover{ transform: translateY(-4px); box-shadow: var(--bok-shadow-hover); }
.bok-rank-badge{
  flex: 0 0 46px;
  width:46px; height:46px;
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-family: var(--bok-font-heading);
  font-weight:700;
  font-size:1.15rem;
  color:#fff;
  background: var(--bok-gradient-brand);
}
.bok-ranking-item:nth-child(1) .bok-rank-badge{ background: linear-gradient(135deg,#ffd76a,#ffb648); }
.bok-ranking-item:nth-child(2) .bok-rank-badge{ background: linear-gradient(135deg,#d9dde3,#aeb6c2); }
.bok-ranking-item:nth-child(3) .bok-rank-badge{ background: linear-gradient(135deg,#e5b892,#c98a55); }
.bok-rank-thumb{
  flex: 0 0 96px;
  width:96px; height:72px;
  border-radius: var(--bok-radius-sm);
  overflow:hidden;
  background: var(--bok-pink-light);
}
.bok-rank-thumb img{ width:100%; height:100%; object-fit:cover; }
.bok-rank-body{ flex:1; min-width:0; }
.bok-rank-title{
  font-weight:700;
  font-size:.96rem;
  margin:6px 0 0;
  display:-webkit-box;
  -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.bok-rank-views{
  font-size:.72rem;
  color: var(--bok-text-soft);
  margin-left:auto;
  flex:0 0 auto;
  padding-left: 10px;
}

/* ==========================================================
   16. Footer
========================================================== */
.bok-footer{
  background:#fff;
  padding: 70px 0 30px;
  margin-top: 60px;
  border-top: 1px solid var(--bok-border);
}
.bok-footer-inner{
  max-width: var(--bok-max-width);
  margin:0 auto;
  padding:0 24px;
  text-align:center;
}
.bok-footer-logo{ font-size:1.7rem; margin-bottom:22px; display:inline-block; }
.bok-footer-nav ul{
  display:flex; justify-content:center; gap:28px; flex-wrap:wrap;
  margin-bottom: 26px;
}
.bok-footer-nav a{ font-size:.86rem; font-weight:700; color: var(--bok-text-soft); }
.bok-footer-nav a:hover{ color: var(--bok-pink-deep); }
.bok-footer-sns{ display:flex; justify-content:center; gap:14px; margin-bottom: 30px; }
.bok-footer-sns a{
  width:40px; height:40px; border-radius:50%;
  background: var(--bok-pink-light);
  display:flex; align-items:center; justify-content:center;
  font-size:1rem;
}
.bok-footer-sns a:hover{ background: var(--bok-gradient-brand); color:#fff; }
.bok-footer-legal{
  margin-bottom: 14px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
}
.bok-footer-legal a{
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.08em;
  color: var(--bok-text-soft);
}
.bok-footer-legal a:hover{ color: var(--bok-pink-deep); }
.bok-footer-legal-sep{
  font-size:.72rem;
  color: var(--bok-border);
}
.bok-footer-copy{ font-size:.74rem; color: var(--bok-text-soft); letter-spacing:.03em; }

/* ==========================================================
   17. Single / Archive / Search / 404
========================================================== */
.bok-page-header{
  padding: calc(var(--bok-header-h) + 56px) 0 50px;
  text-align:center;
}
.bok-page-header .bok-section-title{ margin-bottom:8px; }
.bok-breadcrumb{
  font-size:.78rem;
  color: var(--bok-text-soft);
  margin-bottom: 14px;
}
.bok-breadcrumb a:hover{ color: var(--bok-pink-deep); }

.bok-archive-grid{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 30px;
}
.bok-content-wrap{ padding: 20px 0 100px; }

.bok-single{ padding: calc(var(--bok-header-h) + 40px) 0 100px; }
.bok-single-inner{
  max-width: 760px;
  margin:0 auto;
  padding: 0 24px;
}
.bok-single-meta{
  display:flex; align-items:center; gap:14px;
  margin-bottom: 18px;
  font-size:.8rem; color: var(--bok-text-soft);
}
.bok-single-title{
  font-size: clamp(1.6rem,3vw,2.3rem);
  margin-bottom: 26px;
}

/* 目次（タイトル直下、本文中のH2見出しへのジャンプリンク） */
.bok-toc{
  background:#fff;
  border-radius: var(--bok-radius-card);
  box-shadow: var(--bok-shadow-sm);
  padding: 24px 26px;
  margin-bottom: 40px;
}
.bok-toc-title{
  font-family: var(--bok-font-heading);
  font-size:1.02rem;
  font-weight:700;
  margin: 0 0 16px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--bok-pink-light);
}
.bok-toc-list{
  list-style:none;
  margin:0;
  padding:0;
  counter-reset: bok-toc-counter;
}
.bok-toc-list li{
  counter-increment: bok-toc-counter;
  margin-bottom: 12px;
}
.bok-toc-list li:last-child{ margin-bottom:0; }
.bok-toc-list a{
  display:flex;
  align-items:flex-start;
  gap:10px;
  color: var(--bok-text);
  font-size:.92rem;
  line-height:1.6;
  text-decoration:none;
}
.bok-toc-list a::before{
  content: counter(bok-toc-counter);
  flex: 0 0 22px;
  width:22px; height:22px;
  margin-top:1px;
  border-radius:50%;
  background: var(--bok-pink-light);
  color: var(--bok-pink-deep);
  font-size:.72rem;
  font-weight:700;
  display:flex;
  align-items:center;
  justify-content:center;
}
.bok-toc-list a:hover{ color: var(--bok-pink-deep); text-decoration:underline; }

.bok-single-thumb{
  border-radius: var(--bok-radius-card);
  overflow:hidden;
  margin-bottom: 40px;
  box-shadow: var(--bok-shadow-sm);
}
.bok-single-content{
  background:#fff;
  border-radius: var(--bok-radius-card);
  padding: 48px;
  box-shadow: var(--bok-shadow-sm);
  font-size:1.02rem;
}
.bok-single-content h2,
.bok-single-content h3,
.bok-single-content h4,
.bok-single-content h5,
.bok-single-content h6{
  font-family: var(--bok-font-body);
  font-weight: 700;
}
/* 本文中のH2見出し：文字に少しかぶるピンクのマーカー下線 */
.bok-h2-mark{
  display: inline;
  background: linear-gradient(rgba(255,143,180,.85), rgba(255,143,180,.85)) no-repeat 0 90% / 100% 0.34em;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.bok-single-content h2{
  font-size:1.4rem;
  margin-top:1.6em;
  scroll-margin-top: calc(var(--bok-header-h) + 20px);
}
.bok-single-content h3{ font-size:1.2rem; margin-top:1.4em; }
.bok-single-content img{ border-radius: var(--bok-radius-sm); }
.bok-single-content a{ color: var(--bok-pink-deep); text-decoration:underline; }
.bok-single-content blockquote{
  border-left:4px solid var(--bok-pink);
  padding: 10px 22px;
  color: var(--bok-text-soft);
  background: var(--bok-pink-light);
  border-radius: 0 var(--bok-radius-sm) var(--bok-radius-sm) 0;
}
.bok-single-tags{ margin-top: 34px; display:flex; flex-wrap:wrap; gap:8px; }
.bok-single-tags a{
  font-size:.76rem; padding:6px 16px; border-radius:var(--bok-radius-btn);
  background: var(--bok-pink-light); color: var(--bok-pink-deep);
}
.bok-share{ display:flex; gap:10px; margin-top:30px; }
.bok-related{ margin-top: 70px; }

.bok-search-form-page{
  display:flex; max-width:520px; margin: 0 auto 40px;
  background:#fff; border-radius: var(--bok-radius-btn);
  box-shadow: var(--bok-shadow-sm); overflow:hidden;
}
.bok-search-form-page input{ flex:1; padding: 14px 22px; }
.bok-search-form-page button{ padding: 0 26px; background: var(--bok-gradient-btn); color:#fff; font-weight:700; }

.bok-404{
  padding: calc(var(--bok-header-h) + 80px) 0 140px;
  text-align:center;
}
.bok-404-code{
  font-family: var(--bok-font-heading);
  font-size: clamp(4rem,10vw,7rem);
  background: var(--bok-gradient-brand);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  line-height:1;
}
.bok-empty{ text-align:center; padding: 60px 0; color: var(--bok-text-soft); }

/* ==========================================================
   18. Pagination
========================================================== */
.bok-pagination{
  display:flex; justify-content:center; align-items:center; gap:10px;
  margin-top: 60px; flex-wrap:wrap;
}
.bok-pagination a,
.bok-pagination span{
  min-width:42px; height:42px; padding:0 8px;
  display:flex; align-items:center; justify-content:center;
  border-radius:50%;
  background:#fff;
  font-size:.86rem; font-weight:700;
  box-shadow: var(--bok-shadow-sm);
  color: var(--bok-text);
}
.bok-pagination .current{
  background: var(--bok-gradient-btn);
  color:#fff;
}
.bok-pagination a:hover{ box-shadow: var(--bok-shadow-hover); transform: translateY(-2px); }

/* ==========================================================
   19. Animations
========================================================== */
/*
 * プログレッシブエンハンスメント方針：
 * 要素は最初から表示された状態(opacity:1)がデフォルト。
 * JavaScriptが正常に動いた場合のみ、画面外にある要素に一時的に
 * .bok-pre-anim を付与して非表示にし、スクロールで画面に入ったタイミングで
 * 外して「ふわっと表示」させる。JSが読み込まれない／エラーになった場合でも
 * コンテンツが消えたままにならないようにするための設計。
 */
.bok-fade-up{
  transition: opacity .7s ease, transform .7s cubic-bezier(.4,0,.2,1);
}
.bok-fade-up.bok-pre-anim{
  opacity:0;
  transform: translateY(28px);
}
.bok-fade-up.d1{ transition-delay:.08s; }
.bok-fade-up.d2{ transition-delay:.16s; }
.bok-fade-up.d3{ transition-delay:.24s; }
.bok-fade-up.d4{ transition-delay:.32s; }
.bok-fade-up.d5{ transition-delay:.4s; }
.bok-fade-up.d6{ transition-delay:.48s; }

/* ==========================================================
   20. Responsive
========================================================== */
@media (max-width: 1023px){
  .bok-nav-primary{ display:none; }
  .bok-menu-toggle{ display:flex; }
  .bok-newtopic-grid{ grid-template-columns:1fr; }
  .bok-newtopic-side{ grid-template-columns:1fr 1fr; grid-template-rows:none; }
  .bok-newtopic-bottom{ grid-template-columns:1fr 1fr; }
  .bok-topic-grid{ grid-template-columns: repeat(3,1fr); }
  .bok-archive-grid{ grid-template-columns: repeat(2,1fr); }
  .d-lipstick{ width:80px; left:3%; } .d-penlight{ width:72px; right:3%; } .d-flag{ width:104px; left:4%; } .d-coffee{ width:80px; right:4%; }
}
@media (max-width: 767px){
  .bok-section{ padding: 60px 0; }
  .bok-about-inner{ padding: 44px 26px; }
  .bok-newtopic-side{ grid-template-columns:1fr; }
  .bok-newtopic-bottom{ grid-template-columns:1fr; }
  .bok-topic-grid{ grid-template-columns:1fr; }
  .bok-banner-grid{ grid-template-columns:1fr; }
  .bok-archive-grid{ grid-template-columns:1fr; }
  .bok-single-content{ padding: 30px 22px; }
  .bok-ranking-item{ padding: 12px; gap:14px; }
  .bok-rank-thumb{ flex-basis:72px; width:72px; height:56px; }
  .bok-header-inner{ padding: 0 18px; }
  .bok-about-letters{ gap:14px; }
  .bok-kv{ min-height:0; }
  .bok-kv-doodles{ display:none; }
}

/* ==========================================================
   21. 広告エリア（KV下バナー／記事ページ サイドバー）
   ウィジェットが未設置の間はこの区画自体が出力されないため、
   既存レイアウトには一切影響しない。
========================================================== */
.bok-ad-unit{
  background:#fff;
  border-radius: var(--bok-radius-card);
  box-shadow: var(--bok-shadow-sm);
  padding: 16px;
  margin-bottom: 28px;
  overflow:hidden;
  text-align:center;
}
.bok-ad-unit:last-child{ margin-bottom:0; }
.bok-ad-label{
  display:block;
  font-size:.66rem;
  letter-spacing:.1em;
  color: var(--bok-text-soft);
  margin-bottom:10px;
  text-transform:uppercase;
}

.bok-kv-ad{ padding: 36px 0 0; }
.bok-kv-ad .bok-ad-unit{ margin-bottom:0; }

.bok-content-wrap.bok-has-sidebar{
  display:grid;
  grid-template-columns: 1fr 300px;
  gap: 48px;
  align-items:start;
}
.bok-sidebar{
  position: sticky;
  top: calc(var(--bok-header-h) + 24px);
}

.bok-single-layout.bok-has-sidebar{
  max-width: var(--bok-max-width);
  margin: 0 auto;
  padding: 0 24px;
  display:grid;
  grid-template-columns: 1fr 300px;
  gap: 48px;
  align-items:start;
}
.bok-single-layout.bok-has-sidebar .bok-single-inner{
  max-width:none;
  margin:0;
  padding:0;
}

@media (min-width: 1024px){
  .bok-content-wrap.bok-has-sidebar .bok-archive-grid{
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 900px){
  .bok-content-wrap.bok-has-sidebar,
  .bok-single-layout.bok-has-sidebar{
    grid-template-columns: 1fr;
  }
  .bok-single-layout.bok-has-sidebar{
    max-width: 760px;
  }
  .bok-sidebar{
    position: static;
    margin-top: 40px;
  }
}

/* ==========================================================
   22. トップページ：KVより下 2カラムレイアウト
   （メインエリア／サイドエリア＝検索・ランキング・広告）
========================================================== */
.bok-front-layout{
  display:grid;
  grid-template-columns: 1fr 320px;
  gap: 44px;
  align-items:start;
}
.bok-front-main{ min-width:0; }

/* サイドエリアに入ることで全幅の帯ではなく、メインカラム幅の角丸カードになる */
.bok-front-main .bok-tint-bg{
  border-radius: var(--bok-radius-card);
}

.bok-front-sidebar{
  position: sticky;
  top: calc(var(--bok-header-h) + 24px);
  padding-bottom: 90px;
}

.bok-widget{
  background:#fff;
  border-radius: var(--bok-radius-card);
  box-shadow: var(--bok-shadow-sm);
  padding: 24px;
  margin-bottom: 28px;
}
.bok-widget:last-child{ margin-bottom:0; }
.bok-widget-title{
  font-family: var(--bok-font-heading);
  font-size:1.05rem;
  font-weight:700;
  margin: 0 0 18px;
  padding-bottom: 14px;
  border-bottom: 2px solid var(--bok-pink-light);
}

/* 検索ボックス */
.bok-sidebar-search form{
  display:flex;
  border-radius: var(--bok-radius-btn);
  overflow:hidden;
  background: var(--bok-bg, #faf7f5);
  border: 1px solid rgba(0,0,0,.08);
}
.bok-sidebar-search input{
  flex:1;
  min-width:0;
  padding: 12px 14px;
  background:transparent;
}
.bok-sidebar-search button{
  flex: 0 0 auto;
  padding: 0 16px;
  background: var(--bok-gradient-btn);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
}

/* サイドエリア内のランキング：カードの形式は既存のRANKINGと同じ（左に写真・右にテキスト）だが、
   .bok-widget が既にカード枠を持つため、アイテム自体は枠なしの区切り線リストにする */
.bok-front-sidebar .bok-ranking-list{ gap: 16px; }
.bok-front-sidebar .bok-ranking-item{
  background:transparent;
  box-shadow:none;
  border-radius:0;
  padding: 0 0 16px;
  border-bottom: 1px solid rgba(0,0,0,.07);
  gap: 12px;
}
.bok-front-sidebar .bok-ranking-item:last-child{
  padding-bottom:0;
  border-bottom:none;
}
.bok-front-sidebar .bok-ranking-item:hover{
  transform:none;
  box-shadow:none;
  opacity:.75;
}
.bok-front-sidebar .bok-rank-badge{
  flex: 0 0 32px;
  width:32px; height:32px;
  font-size:.9rem;
}
.bok-front-sidebar .bok-rank-thumb{
  flex: 0 0 72px;
  width:72px; height:56px;
}
.bok-front-sidebar .bok-rank-title{
  font-size:.88rem;
}
.bok-front-sidebar .bok-rank-views{
  display:none;
}

/* SP（スマホ）表示：新着記事／カテゴリの記事／おすすめ記事のカードを
   ランキングと同じ「左に画像・右にテキスト」の横型カードにする */
@media (max-width: 767px){
  .bok-cards-horizontal-sp{
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .bok-cards-horizontal-sp .bok-card{
    display:flex;
    flex-direction:row;
    align-items:stretch;
    height:auto;
  }
  .bok-cards-horizontal-sp .bok-card-thumb{
    flex: 0 0 120px;
    width:120px;
    aspect-ratio: 4/3;
  }
  .bok-cards-horizontal-sp .bok-card-body{
    flex:1;
    min-width:0;
    margin-top:0;
    padding: 10px 16px 10px 14px;
    border-radius:0;
    display:flex;
    flex-direction:column;
    justify-content:center;
  }
  .bok-cards-horizontal-sp .bok-card-meta{ margin-bottom:6px; }
  .bok-cards-horizontal-sp .bok-card-title{
    font-size:.9rem;
    -webkit-line-clamp:3;
  }
}

@media (max-width: 1023px){
  .bok-front-layout{ grid-template-columns: 1fr 260px; gap:32px; }
}
@media (max-width: 900px){
  .bok-front-layout{ grid-template-columns: 1fr; }
  .bok-front-sidebar{
    position: static;
    padding-bottom:0;
    margin-top: 20px;
  }
}

/* ==========================================================
   23. 関連記事リンクカード（記事本文中に挿入するショートコード用）
   [bok_related_card id="123"] で出力される横型リンクプレビュー
========================================================== */
.bok-related-card{
  display:flex;
  align-items:center;
  gap:18px;
  background:#fff;
  border: 1px solid rgba(0,0,0,.08);
  border-radius: var(--bok-radius-card);
  padding: 16px;
  margin: 32px 0;
  box-shadow: var(--bok-shadow-sm);
  transition: var(--bok-transition);
}
.bok-single-content .bok-related-card,
.bok-single-content .bok-related-card:hover{
  text-decoration:none;
  color:inherit;
}
.bok-related-card:hover{
  transform: translateY(-4px);
  box-shadow: var(--bok-shadow-hover);
}
.bok-related-card-thumb{
  flex: 0 0 108px;
  width:108px; height:80px;
  border-radius: var(--bok-radius-sm);
  overflow:hidden;
  background: var(--bok-pink-light);
}
.bok-related-card-thumb img{ width:100%; height:100%; object-fit:cover; }
.bok-related-card-thumb .bok-card-noimg{
  width:100%; height:100%;
  display:flex; align-items:center; justify-content:center;
  font-size:1.6rem;
  background: linear-gradient(145deg,var(--bok-pink-light),var(--bok-lavender-light));
}
.bok-related-card-body{
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:4px;
}
.bok-related-card-label{
  font-size:.68rem;
  font-weight:700;
  letter-spacing:.06em;
  color: var(--bok-pink-deep);
}
.bok-related-card-body .bok-category-badge{
  align-self:flex-start;
  margin-top:2px;
}
.bok-related-card-title{
  font-weight:700;
  font-size:.96rem;
  line-height:1.5;
  color: var(--bok-text);
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.bok-related-card-excerpt{
  font-size:.78rem;
  color: var(--bok-text-soft);
  line-height:1.5;
  display:-webkit-box;
  -webkit-line-clamp:1;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.bok-related-card-arrow{
  flex: 0 0 auto;
  width:34px; height:34px;
  border-radius:50%;
  background: var(--bok-pink-light);
  color: var(--bok-pink-deep);
  display:flex; align-items:center; justify-content:center;
}
@media (max-width: 600px){
  .bok-related-card{ gap:12px; padding:12px; margin: 26px 0; }
  .bok-related-card-thumb{ flex-basis:80px; width:80px; height:64px; }
  .bok-related-card-excerpt{ display:none; }
  .bok-related-card-arrow{ display:none; }
}

/* ==========================================================
   24. お問い合わせフォーム（Contact Form 7）
========================================================== */
.bok-contact-lead{
  text-align:center;
  margin-bottom: 30px;
  color: var(--bok-text-soft);
  line-height:1.8;
}
.wpcf7-form{
  background:#fff;
  border-radius: var(--bok-radius-card);
  box-shadow: var(--bok-shadow-sm);
  padding: 44px;
}
.wpcf7-form p{ margin-bottom: 22px; }
.wpcf7-form p:last-of-type{ margin-bottom:0; }
.wpcf7-form label{
  display:block;
  font-weight:700;
  font-size:.9rem;
  margin-bottom:8px;
  color: var(--bok-text);
}
.wpcf7-form-control{
  display:block;
  width:100%;
  padding: 13px 16px;
  border: 1px solid rgba(0,0,0,.12);
  border-radius: var(--bok-radius-sm);
  font-family: inherit;
  font-size:.95rem;
  background: #fdfbfa;
  transition: var(--bok-transition);
}
.wpcf7-form-control:focus{
  outline:none;
  border-color: var(--bok-pink-deep);
  box-shadow: 0 0 0 3px var(--bok-pink-light);
}
textarea.wpcf7-form-control{ min-height:160px; resize:vertical; }
.wpcf7-form-control.wpcf7-submit{
  width:auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding: 15px 44px;
  margin-top: 8px;
  border:none;
  border-radius: var(--bok-radius-btn);
  background: var(--bok-gradient-btn);
  color:#fff;
  font-weight:700;
  font-size:.95rem;
  letter-spacing:.03em;
  box-shadow: var(--bok-shadow-sm);
  cursor:pointer;
  transition: var(--bok-transition);
}
.wpcf7-form-control.wpcf7-submit:hover{
  transform: translateY(-3px);
  box-shadow: var(--bok-shadow-hover);
}
.wpcf7-spinner{ margin-left:10px; }
.wpcf7-not-valid-tip{
  display:block;
  color:#e0587a;
  font-size:.78rem;
  margin-top:6px;
}
.wpcf7-response-output{
  margin: 24px 0 0 !important;
  padding: 14px 18px !important;
  border-radius: var(--bok-radius-sm) !important;
  font-size:.88rem;
  border-width:1px !important;
}
.wpcf7-mail-sent-ok{
  border-color: var(--bok-mint-deep) !important;
  color: var(--bok-mint-deep);
  background: var(--bok-mint-light);
}
.wpcf7-validation-errors,
.wpcf7-mail-sent-ng,
.wpcf7-aborted,
.wpcf7-spam-blocked{
  border-color: #e0587a !important;
  color:#c23a5c;
  background:#fdeef1;
}
@media (max-width: 600px){
  .wpcf7-form{ padding:26px 22px; }
}
