/*
Theme Name: SOWACA
Theme URI: https://sowaca.example.com/
Author: SOWACA
Author URI: https://sowaca.example.com/
Description: そわか（SOWACA）— 周波数チューニングサロンのためのクラシックテーマ。トップページは専用デザイン、その他の固定ページ・投稿はWordPress編集画面から本文（the_content）を編集できます。
Version: 1.3.0
Requires at least: 6.0
Tested up to: 6.5
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: sowaca
*/

/* =========================================================
   Base
   ========================================================= */
* { box-sizing: border-box; }

body {
  margin: 0;
  background: #FFFFFF;
  font-family: 'Noto Sans JP', sans-serif;
  color: #0B3B4A;
  line-height: 1.9;
}

a { color: #00ACBB; text-decoration: none; }
a:hover { color: #288E9E; }

img { max-width: 100%; height: auto; }

@keyframes swFloat { 0% { translate: 0 0; } 100% { translate: 0 -14px; } }

/* =========================================================
   Front page — layout utilities (responsive)
   ========================================================= */
.sw-container { max-width: 1120px; margin: 0 auto; padding: 0 24px; position: relative; }
.sw-section { padding: 88px 0; position: relative; overflow: hidden; }
.sw-bg-mint { background: linear-gradient(180deg, #F2FBFC 0%, #EAF9FA 100%); }
.sw-bg-deep { background: linear-gradient(150deg, #004B64 0%, #0A6478 55%, #12798C 100%); }
.sw-bg-soft { background: linear-gradient(180deg, #F2FBFC 0%, #FFFFFF 100%); }
.sw-center { text-align: center; display: flex; flex-direction: column; gap: 14px; align-items: center; }
.sw-h2 { margin: 0; font-family: 'Zen Kaku Gothic New', sans-serif; font-size: clamp(24px, 4vw, 30px); font-weight: 900; letter-spacing: .04em; }
.sw-eyebrow--light { color: #7FE9F2; }
.sw-eyebrow--light::before { background: linear-gradient(135deg, #01D8EB, #7FE9F2); }
.sw-grad { background: linear-gradient(90deg, #01D8EB, #00ACBB 55%, #288E9E); -webkit-background-clip: text; background-clip: text; color: transparent; }
.sw-grad--light { background: linear-gradient(90deg, #7FE9F2, #01D8EB); -webkit-background-clip: text; background-clip: text; color: transparent; }

/* Decorative blobs / orbs */
.sw-blob { position: absolute; border-radius: 50%; pointer-events: none; }
.sw-blob--tr { top: -160px; right: -120px; width: 560px; height: 560px; background: radial-gradient(circle, rgba(1,216,235,.28) 0%, rgba(1,216,235,0) 68%); }
.sw-blob--bl { bottom: -200px; left: -140px; width: 520px; height: 520px; background: radial-gradient(circle, rgba(40,142,158,.18) 0%, rgba(40,142,158,0) 68%); }
.sw-blob--soft { background: radial-gradient(circle, rgba(1,216,235,.2) 0%, rgba(1,216,235,0) 70%); }
.sw-orb { position: absolute; border-radius: 50%; display: block; }
.sw-orb--lg { top: -6px; right: 6px; width: 120px; height: 120px; background: radial-gradient(circle at 32% 28%, #B8F6FB 0%, #01D8EB 42%, #00ACBB 74%, #288E9E 100%); box-shadow: 0 18px 40px rgba(1,216,235,.45); }
.sw-orb--sm { top: 96px; right: 118px; width: 36px; height: 36px; background: radial-gradient(circle at 32% 28%, #D8FBFD 0%, #6FE5F0 50%, #00ACBB 100%); }
.sw-orb--md { top: -34px; right: -22px; width: 88px; height: 88px; background: radial-gradient(circle at 32% 28%, #B8F6FB 0%, #01D8EB 45%, #00ACBB 100%); box-shadow: 0 16px 36px rgba(1,216,235,.45); }

/* Hero */
.sw-hero-wrap { position: relative; overflow: hidden; background: linear-gradient(160deg, #FFFFFF 0%, #EDFBFC 40%, #DFF7F9 74%, #EAFAFB 100%); }
.sw-hero { display: grid; grid-template-columns: 1fr 470px; gap: 56px; align-items: center; padding-top: 88px; padding-bottom: 96px; }
.sw-hero-copy { display: flex; flex-direction: column; gap: 26px; }
.sw-hero-media { position: relative; }
.sw-hero-img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 36px; box-shadow: 0 32px 64px rgba(0,75,100,.14); display: block; }
.sw-card-report { position: absolute; bottom: 64px; left: 2px; background: #fff; border-radius: 20px; padding: 18px 20px; display: flex; flex-direction: column; gap: 9px; box-shadow: 0 16px 40px rgba(0,75,100,.16); width: 196px; }
.sw-card-badge { position: absolute; bottom: 180px; right: -8px; background: #fff; border-radius: 999px; padding: 11px 20px; display: flex; align-items: center; gap: 9px; box-shadow: 0 12px 28px rgba(0,75,100,.14); }

/* Buttons */
.sw-btn { display: inline-flex; align-items: center; gap: 12px; border-radius: 999px; font-weight: 700; text-decoration: none; transition: transform .2s, box-shadow .2s; }
.sw-btn-row { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.sw-btn--primary { background: linear-gradient(90deg, #01D8EB, #00ACBB); color: #fff; padding: 15px 15px 15px 30px; font-size: 14.5px; box-shadow: 0 12px 28px rgba(1,216,235,.4); }
.sw-btn--primary:hover { transform: translateY(-2px); box-shadow: 0 16px 34px rgba(1,216,235,.5); color: #fff; }
.sw-btn--ghost { background: #fff; border: 1.5px solid rgba(0,172,187,.4); color: #00808C; padding: 15px 30px; font-size: 14px; }
.sw-btn--ghost:hover { background: #F0FCFD; color: #00808C; }
.sw-btn--white { background: #fff; color: #00808C; padding: 18px 18px 18px 36px; font-size: 15px; box-shadow: 0 16px 40px rgba(0,40,55,.3); flex: none; }
.sw-btn--white:hover { transform: translateY(-2px); box-shadow: 0 22px 52px rgba(0,40,55,.38); color: #00808C; }
.sw-btn-ico { width: 30px; height: 30px; border-radius: 50%; background: rgba(255,255,255,.25); display: flex; align-items: center; justify-content: center; font-size: 14px; flex: none; }
.sw-btn-ico--light { background: #E3FBFD; color: #00808C; }

/* Tag list / chips */
.sw-taglist { list-style: none; display: flex; flex-wrap: wrap; gap: 9px; margin: 4px 0 0; padding: 0; }
.sw-taglist li { white-space: nowrap; background: rgba(255,255,255,.85); border: 1px solid rgba(0,172,187,.22); color: #1E7A88; padding: 8px 16px; border-radius: 999px; font-size: 12px; font-weight: 500; }
.sw-chiplist { list-style: none; display: flex; gap: 12px; flex-wrap: wrap; margin: 0; padding: 0; }
.sw-chiplist li { background: rgba(255,255,255,.1); border: 1px solid rgba(127,233,242,.35); color: #CFF3F7; padding: 9px 18px; border-radius: 999px; font-size: 12px; font-weight: 500; }

/* Trust strip */
.sw-trust { padding-top: 40px; }
.sw-trust ul { list-style: none; display: flex; justify-content: center; gap: 14px; flex-wrap: wrap; margin: 0; padding: 0; }
.sw-trust li { display: flex; align-items: center; gap: 10px; background: #fff; border: 1px solid rgba(0,75,100,.08); border-radius: 999px; padding: 12px 24px; font-size: 13px; font-weight: 500; color: #3E6B78; box-shadow: 0 6px 16px rgba(0,75,100,.05); }
.sw-trust li span { color: #00ACBB; font-weight: 700; }

/* Grids */
.sw-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; max-width: 920px; margin: 0 auto; }
.sw-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.sw-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }

/* Check list */
.sw-check-list { list-style: none; padding: 0; }
.sw-check-list li { background: #fff; border: 1px solid rgba(0,75,100,.07); border-radius: 22px; padding: 26px 30px; display: flex; align-items: center; gap: 18px; box-shadow: 0 8px 24px rgba(0,75,100,.05); font-size: 14.5px; line-height: 1.95; color: #22525F; margin: 0; }
.sw-check-ico { flex: none; width: 34px; height: 34px; border-radius: 50%; background: linear-gradient(135deg, #E3FBFD, #BDF2F7); color: #00808C; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 700; }

/* Method flow + steps */
.sw-flow { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; margin: 36px 0 40px; }
.sw-flow-node { width: 64px; height: 64px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 14px; font-weight: 700; box-shadow: 0 10px 24px rgba(0,172,187,.3); }
.sw-flow-line { width: 72px; height: 2px; background: linear-gradient(90deg, #01D8EB, #288E9E); }
.sw-step { background: #fff; border-radius: 24px; padding: 30px 26px; display: flex; flex-direction: column; gap: 14px; box-shadow: 0 10px 28px rgba(0,75,100,.06); }
.sw-step-no { margin: 0; font-family: 'Poppins', sans-serif; font-size: 11px; letter-spacing: .24em; color: #00ACBB; font-weight: 600; }
.sw-step-title { margin: 0; font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 17px; font-weight: 700; }
.sw-step-body { margin: 0; font-size: 13px; line-height: 2.05; color: #3E6B78; }

/* Report */
.sw-report-split { display: grid; grid-template-columns: 1fr 380px; gap: 72px; align-items: center; position: relative; }
.sw-report-card { position: relative; background: #fff; border-radius: 24px; padding: 30px 28px; display: flex; flex-direction: column; gap: 13px; box-shadow: 0 32px 72px rgba(0,20,30,.4); }

/* Approach / tech */
.sw-tech { background: #fff; border: 1px solid rgba(0,75,100,.07); border-radius: 26px; padding: 34px 30px; display: flex; flex-direction: column; gap: 16px; box-shadow: 0 10px 28px rgba(0,75,100,.05); }
.sw-tech-orb { width: 52px; height: 52px; border-radius: 50%; box-shadow: 0 10px 22px rgba(1,216,235,.3); }
.sw-tech-title { margin: 0; font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 18px; font-weight: 700; }
.sw-tech-tag { margin: 0; font-family: 'Poppins', sans-serif; font-size: 10.5px; letter-spacing: .2em; color: #00ACBB; font-weight: 600; }
.sw-tech-body { margin: 0; font-size: 13px; line-height: 2.05; color: #3E6B78; }

/* Profile */
.sw-profile-split { display: grid; grid-template-columns: 340px 1fr; gap: 64px; align-items: center; }
.sw-profile-media { position: relative; width: 100%; max-width: 340px; }
.sw-profile-img { width: 100%; aspect-ratio: 17 / 20; object-fit: cover; object-position: top; border-radius: 32px; box-shadow: 0 24px 56px rgba(0,75,100,.12); display: block; }
.sw-textlink { display: inline-flex; align-items: center; gap: 10px; font-size: 13.5px; font-weight: 700; color: #00808C; }
.sw-textlink-ico { width: 26px; height: 26px; border-radius: 50%; background: #E3FBFD; display: flex; align-items: center; justify-content: center; font-size: 12px; }

/* CTA */
.sw-cta { position: relative; overflow: hidden; background: linear-gradient(120deg, #01D8EB 0%, #00ACBB 48%, #288E9E 100%); border-radius: 36px; padding: 72px; display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: wrap; }

/* Front-page responsive */
@media (max-width: 960px) {
  .sw-hero { grid-template-columns: 1fr; gap: 40px; padding-top: 56px; padding-bottom: 64px; }
  .sw-hero-media { max-width: 520px; margin: 0 auto; width: 100%; }
  .sw-hero-img { aspect-ratio: 16 / 10; }
  .sw-report-split { grid-template-columns: 1fr; gap: 40px; }
  .sw-profile-split { grid-template-columns: 1fr; gap: 32px; justify-items: center; }
  .sw-grid-3, .sw-grid-4 { grid-template-columns: 1fr 1fr; }
  .sw-section { padding: 64px 0; }
  .sw-cta { padding: 48px 32px; }
}
@media (max-width: 600px) {
  .sw-grid-2, .sw-grid-3, .sw-grid-4 { grid-template-columns: 1fr; }
  .sw-hero-media [data-float] { display: none; }
  .sw-flow-line { width: 32px; }
}

/* =========================================================
   Header / Nav
   ========================================================= */
.sw-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 56px;
  background: rgba(255, 255, 255, .92);
  border-bottom: 1px solid rgba(0, 75, 100, .06);
  position: sticky;
  top: 0;
  z-index: 100;
  backdrop-filter: saturate(180%) blur(8px);
  gap: 16px;
  flex-wrap: wrap;
}
.sw-brand { display: flex; align-items: center; gap: 11px; color: #0B3B4A; }
.sw-brand-jp {
  font-family: 'Zen Kaku Gothic New', sans-serif;
  font-size: 21px; font-weight: 900; letter-spacing: .08em;
}
.sw-brand-en {
  font-family: 'Poppins', sans-serif;
  font-size: 8.5px; letter-spacing: .34em; color: #288E9E; margin-top: 4px;
}
.sw-nav-links {
  display: flex; align-items: center; gap: 24px;
  font-size: 13px; font-weight: 500; flex-wrap: wrap;
}
.sw-nav-links a { color: #0B3B4A; }
.sw-nav-links a.current { color: #00ACBB; font-weight: 700; }
.sw-nav-cta {
  display: flex; align-items: center; gap: 10px;
  background: linear-gradient(90deg, #01D8EB, #00ACBB);
  color: #fff !important;
  padding: 12px 12px 12px 24px;
  border-radius: 999px; font-size: 13px; font-weight: 700;
  box-shadow: 0 8px 20px rgba(1, 216, 235, .35);
  transition: transform .2s, box-shadow .2s;
}
.sw-nav-cta:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(1, 216, 235, .5); color: #fff !important; }
.sw-nav-cta span {
  width: 26px; height: 26px; border-radius: 50%;
  background: rgba(255, 255, 255, .25);
  display: flex; align-items: center; justify-content: center; font-size: 13px;
}

/* =========================================================
   Interior page / post content (the_content)
   ========================================================= */
.sw-content-wrap { background: linear-gradient(180deg, #F7FCFD 0%, #FFFFFF 40%); }
.sw-content {
  max-width: 940px;
  margin: 0 auto;
  padding: 72px 28px 96px;
}
.sw-page-header { text-align: center; margin-bottom: 44px; }
.sw-eyebrow {
  margin: 0;
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  font-family: 'Poppins', sans-serif; font-size: 11px; letter-spacing: .3em;
  color: #288E9E; font-weight: 600;
}
.sw-eyebrow::before {
  content: ""; width: 10px; height: 10px; border-radius: 50%;
  background: linear-gradient(135deg, #01D8EB, #288E9E);
}
.sw-page-title {
  margin: 14px 0 0;
  font-family: 'Zen Kaku Gothic New', sans-serif;
  font-size: 32px; font-weight: 900; letter-spacing: .04em; line-height: 1.5;
}

/* Breadcrumb */
.sw-breadcrumb { max-width: 940px; margin: 0 auto; padding: 24px 28px 0; font-size: 12px; color: #5E93A0; }
.sw-breadcrumb ol { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; }
.sw-breadcrumb li { display: flex; align-items: center; gap: 8px; }
.sw-breadcrumb li:not(:last-child)::after { content: "\203A"; color: #A9CDD3; }
.sw-breadcrumb a { color: #5E93A0; }
.sw-breadcrumb a:hover { color: #00ACBB; }
.sw-breadcrumb [aria-current="page"] { color: #22525F; }

/* FAQ accordion ([qa] shortcode / details) */
.sw-qa { border: 1px solid rgba(0,75,100,.1); border-radius: 14px; margin: 12px 0; background: #fff; overflow: hidden; }
.sw-qa summary { cursor: pointer; padding: 16px 48px 16px 20px; font-weight: 700; color: #0B3B4A; list-style: none; position: relative; }
.sw-qa summary::-webkit-details-marker { display: none; }
.sw-qa summary::after { content: "+"; position: absolute; right: 20px; top: 50%; transform: translateY(-50%); color: #00ACBB; font-size: 20px; line-height: 1; }
.sw-qa[open] summary::after { content: "\2013"; }
.sw-qa-a { padding: 0 20px 18px; color: #3E6B78; line-height: 2; }
.sw-qa-a > *:last-child { margin-bottom: 0; }

/* the_content typography */
.sw-entry { font-size: 15.5px; line-height: 2.15; color: #22525F; }
.sw-entry > *:first-child { margin-top: 0; }
.sw-entry h1, .sw-entry h2, .sw-entry h3, .sw-entry h4 {
  font-family: 'Zen Kaku Gothic New', sans-serif;
  color: #0B3B4A; font-weight: 900; letter-spacing: .03em; line-height: 1.6;
}
.sw-entry h2 {
  font-size: 24px; margin: 56px 0 20px; padding-bottom: 12px;
  border-bottom: 2px solid rgba(0, 172, 187, .18);
}
.sw-entry h3 { font-size: 19px; margin: 40px 0 16px; color: #00808C; }
.sw-entry h4 { font-size: 16px; margin: 32px 0 12px; }
.sw-entry p { margin: 0 0 24px; }
.sw-entry a { color: #00ACBB; text-decoration: underline; text-underline-offset: 3px; }
.sw-entry ul, .sw-entry ol { margin: 0 0 24px; padding-left: 1.4em; }
.sw-entry li { margin-bottom: 10px; }
.sw-entry img { border-radius: 18px; box-shadow: 0 16px 40px rgba(0, 75, 100, .1); }
.sw-entry blockquote {
  margin: 32px 0; padding: 20px 28px;
  background: #F2FBFC; border-left: 4px solid #00ACBB; border-radius: 0 16px 16px 0;
  color: #3E6B78;
}
.sw-entry table { border-collapse: collapse; width: 100%; margin: 0 0 24px; }
.sw-entry th, .sw-entry td { border: 1px solid rgba(0, 75, 100, .12); padding: 12px 16px; text-align: left; }
.sw-entry th { background: #EAF9FA; font-weight: 700; }
.sw-entry hr { border: none; border-top: 1px solid rgba(0, 75, 100, .1); margin: 48px 0; }
.sw-entry .wp-caption-text { font-size: 12.5px; color: #5E93A0; text-align: center; }

/* Post meta */
.sw-meta {
  display: flex; gap: 16px; justify-content: center;
  font-size: 12.5px; color: #5E93A0; margin-top: 14px;
}

/* Blog / archive listing */
.sw-list { display: grid; gap: 22px; }
.sw-card {
  background: #fff; border: 1px solid rgba(0, 75, 100, .07); border-radius: 22px;
  padding: 30px 32px; box-shadow: 0 8px 24px rgba(0, 75, 100, .05);
  transition: transform .2s, box-shadow .2s;
}
.sw-card:hover { transform: translateY(-3px); box-shadow: 0 14px 34px rgba(0, 75, 100, .1); }
.sw-card h2 { margin: 0 0 10px; font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 20px; font-weight: 700; }
.sw-card h2 a { color: #0B3B4A; }
.sw-card h2 a:hover { color: #00ACBB; }
.sw-card .sw-excerpt { font-size: 14px; color: #3E6B78; line-height: 2; margin: 0; }
.sw-readmore { display: inline-flex; align-items: center; gap: 8px; margin-top: 16px; font-size: 13.5px; font-weight: 700; color: #00808C; }

/* Pagination */
.sw-pagination { margin-top: 48px; display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; }
.sw-pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 40px; height: 40px; padding: 0 12px; border-radius: 999px;
  background: #fff; border: 1px solid rgba(0, 172, 187, .25); color: #00808C; font-size: 13px; font-weight: 600;
}
.sw-pagination .page-numbers.current { background: linear-gradient(90deg, #01D8EB, #00ACBB); color: #fff; border-color: transparent; }

/* Back link */
.sw-back { display: inline-flex; align-items: center; gap: 8px; margin-top: 48px; font-size: 13.5px; font-weight: 700; color: #00808C; }

/* =========================================================
   JIN 互換（移行した記事の装飾）
   ========================================================= */

/* 囲みボックス（[box] / JINの各種 *_box クラス） */
.sw-box,
.sw-entry .memo_box,
.sw-entry .point_box,
.sw-entry .comment_box,
.sw-entry .ok_box,
.sw-entry .ng_box,
.sw-entry .glay_box,
.sw-entry .caption_box,
.sw-entry .simple-box,
.sw-entry .kakomi_box,
.sw-entry .gray_box {
  position: relative;
  margin: 24px 0;
  padding: 22px 24px;
  border: 1px solid rgba(0, 172, 187, .25);
  border-radius: 14px;
  background: #F7FCFD;
}
.sw-box > *:last-child,
.sw-entry [class*="_box"] > *:last-child { margin-bottom: 0; }
.sw-box-title {
  display: block; margin-bottom: 10px;
  font-weight: 700; color: #00808C;
  font-family: 'Zen Kaku Gothic New', sans-serif;
}
.sw-entry .ok_box  { border-color: rgba(0, 172, 187, .4); background: #F0FCFD; }
.sw-entry .ng_box  { border-color: rgba(224, 90, 90, .35); background: #FFF6F6; }
.sw-entry .point_box { border-color: rgba(230, 170, 40, .4); background: #FFFBF0; }

/* 付箋見出し（[jin-fusen]） */
.sw-fusen {
  display: inline-block;
  margin: 8px 0 4px;
  padding: 8px 20px;
  background: linear-gradient(90deg, #01D8EB, #00ACBB);
  color: #fff; font-weight: 700; font-size: 14px;
  border-radius: 6px 6px 6px 0;
  font-family: 'Zen Kaku Gothic New', sans-serif;
  box-shadow: 0 6px 14px rgba(1, 216, 235, .3);
}

/* トピック（見出し付きボックス [topic]） */
.sw-topic {
  margin: 24px 0; border: 2px solid rgba(0, 172, 187, .3);
  border-radius: 14px; overflow: hidden;
}
.sw-topic-title {
  display: block; padding: 10px 20px;
  background: linear-gradient(90deg, #01D8EB, #00ACBB); color: #fff;
  font-weight: 700; font-family: 'Zen Kaku Gothic New', sans-serif;
}
.sw-topic-body { padding: 20px 24px; }
.sw-topic-body > *:last-child { margin-bottom: 0; }

/* 吹き出し（[chat] / [voice] / [say]） */
.sw-chat { display: flex; gap: 16px; align-items: flex-start; margin: 26px 0; }
.sw-chat--right { flex-direction: row-reverse; }
.sw-chat-avatar { flex: none; width: 68px; text-align: center; }
.sw-chat-face {
  width: 64px; height: 64px; border-radius: 50%; object-fit: cover;
  border: 2px solid rgba(0, 172, 187, .3); background: #EAF9FA; display: block; margin: 0 auto;
}
.sw-chat-face--empty { display: block; }
.sw-chat-name { display: block; margin-top: 6px; font-size: 11px; color: #5E93A0; }
.sw-chat-bubble {
  position: relative; max-width: 80%;
  padding: 14px 20px; border-radius: 16px;
  background: #F2FBFC; border: 1px solid rgba(0, 75, 100, .08);
  font-size: 14.5px; line-height: 1.95;
}
.sw-chat-bubble > *:last-child { margin-bottom: 0; }
.sw-chat-bubble::before {
  content: ""; position: absolute; top: 22px; width: 0; height: 0;
  border: 8px solid transparent;
}
.sw-chat--left .sw-chat-bubble::before { left: -15px; border-right-color: #F2FBFC; }
.sw-chat--right .sw-chat-bubble::before { right: -15px; border-left-color: #F2FBFC; }

/* ボタン（[button] / JINの各種ボタン） */
.sw-jin-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  margin: 10px 0; padding: 14px 34px;
  background: linear-gradient(90deg, #01D8EB, #00ACBB);
  color: #fff !important; text-decoration: none !important;
  font-weight: 700; border-radius: 999px;
  box-shadow: 0 10px 24px rgba(1, 216, 235, .35);
  transition: transform .2s, box-shadow .2s;
}
.sw-jin-button:hover { transform: translateY(-2px); box-shadow: 0 14px 30px rgba(1, 216, 235, .5); color: #fff !important; }

/* 汎用ラッパー / 関連記事 */
.sw-column { margin: 20px 0; }
.sw-kanren { margin: 24px 0; padding: 18px 22px; border: 1px dashed rgba(0, 172, 187, .4); border-radius: 14px; background: #F7FCFD; }
.sw-kanren-label { display: block; margin-bottom: 8px; font-weight: 700; font-size: 12.5px; color: #00808C; }
.sw-kanren ul { margin: 0; padding-left: 1.2em; }
.sw-kanren li { margin-bottom: 6px; }

/* マーカー（JINのマーカークラス） */
.sw-entry .marker,
.sw-entry .swl-marker,
.sw-entry .marker-under {
  background: linear-gradient(transparent 60%, rgba(1, 216, 235, .4) 60%);
  font-weight: 700; padding: 0 2px;
}
.sw-entry .marker-yellow { background: linear-gradient(transparent 60%, rgba(255, 224, 130, .8) 60%); }
.sw-entry .marker-pink { background: linear-gradient(transparent 60%, rgba(255, 180, 200, .7) 60%); }

/* =========================================================
   JIN ネイティブ・クラスの補完（ブロック/ショートコードで作られた本文）
   ※ JIN を無効化しても崩れにくいよう、代表的なクラスを幅広く補完します。
   ========================================================= */

/* あらゆる「〇〇_box」クラスを一律でカード化 */
.sw-entry [class*="_box"] {
  position: relative; margin: 24px 0; padding: 22px 24px;
  border: 1px solid rgba(0, 172, 187, .25); border-radius: 14px; background: #F7FCFD;
}
.sw-entry [class*="_box"] > *:last-child { margin-bottom: 0; }
.sw-entry .red_box    { border-color: rgba(224, 90, 90, .35);  background: #FFF6F6; }
.sw-entry .blue_box   { border-color: rgba(70, 150, 224, .35); background: #F5F9FF; }
.sw-entry .green_box  { border-color: rgba(90, 190, 120, .35); background: #F4FCF6; }
.sw-entry .yellow_box,
.sw-entry .keyword_box { border-color: rgba(230, 170, 40, .4); background: #FFFBF0; }
.sw-entry .black_box  { border-color: rgba(11, 59, 74, .5);   background: #F3F6F7; }
.sw-entry .caution_box { border-color: rgba(224, 90, 90, .4); background: #FFF6F6; }

/* JIN 付箋（ネイティブ .jin-fusenN） */
.sw-entry [class^="jin-fusen"] {
  display: inline-block; position: relative; margin: 10px 0 6px; padding: 8px 20px;
  background: linear-gradient(90deg, #01D8EB, #00ACBB); color: #fff; font-weight: 700; font-size: 14px;
  border-radius: 6px 6px 6px 0; font-family: 'Zen Kaku Gothic New', sans-serif;
}
.sw-entry .fusen-triangle { display: none; }

/* JIN 吹き出し（ネイティブ .chat 系） */
.sw-entry .chat, .sw-entry .simple-chat { display: flex; gap: 16px; align-items: flex-start; margin: 26px 0; }
.sw-entry .chat-right, .sw-entry .chat.chat-right { flex-direction: row-reverse; }
.sw-entry .chat-face, .sw-entry .chat-face-r { flex: none; width: 68px; text-align: center; }
.sw-entry .chat-face img, .sw-entry .chat-face-r img {
  width: 64px; height: 64px; border-radius: 50%; object-fit: cover; border: 2px solid rgba(0, 172, 187, .3);
}
.sw-entry .chat-name { display: block; margin-top: 6px; font-size: 11px; color: #5E93A0; }
.sw-entry .chat-text, .sw-entry .chat-bubble {
  position: relative; padding: 14px 20px; border-radius: 16px;
  background: #F2FBFC; border: 1px solid rgba(0, 75, 100, .08); line-height: 1.95;
}
.sw-entry .chat-text > *:last-child, .sw-entry .chat-bubble > *:last-child { margin-bottom: 0; }

/* JIN ボタン（ネイティブ .jin-button 系） */
.sw-entry .jin-button-container { text-align: center; margin: 20px 0; }
.sw-entry a[class*="jin-button"] {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 14px 34px; border-radius: 999px; background: linear-gradient(90deg, #01D8EB, #00ACBB);
  color: #fff !important; text-decoration: none !important; font-weight: 700; box-shadow: 0 10px 24px rgba(1, 216, 235, .35);
}
.sw-entry .jin-button__text { color: #fff !important; }

/* =========================================================
   Gutenberg コアブロックのブランド調整（.sw-entry 内）
   ========================================================= */
.sw-entry .wp-block-button__link {
  background: linear-gradient(90deg, #01D8EB, #00ACBB); color: #fff;
  border-radius: 999px; padding: 12px 30px; font-weight: 700;
}
.sw-entry .wp-block-button.is-style-outline .wp-block-button__link {
  background: transparent; color: #00808C; border: 1.5px solid rgba(0, 172, 187, .5);
}
.sw-entry .wp-block-buttons { display: flex; flex-wrap: wrap; gap: 12px; }
.sw-entry .wp-block-columns { display: flex; flex-wrap: wrap; gap: 24px; margin: 24px 0; }
.sw-entry .wp-block-column { flex: 1 1 220px; }
.sw-entry .wp-block-group { margin: 24px 0; }
.sw-entry .wp-block-quote, .sw-entry .wp-block-pullquote {
  margin: 32px 0; padding: 20px 28px; background: #F2FBFC;
  border-left: 4px solid #00ACBB; border-radius: 0 16px 16px 0; color: #3E6B78;
}
.sw-entry .wp-block-image { margin: 24px 0; }
.sw-entry .wp-block-image img { border-radius: 18px; }
.sw-entry .wp-block-separator { border: none; border-top: 1px solid rgba(0, 75, 100, .1); margin: 48px auto; }
.sw-entry .wp-block-table table { border-collapse: collapse; width: 100%; }
.sw-entry .wp-block-table th, .sw-entry .wp-block-table td { border: 1px solid rgba(0, 75, 100, .12); padding: 12px 16px; }
.sw-entry .wp-block-table th { background: #EAF9FA; }
@media (max-width: 600px) {
  .sw-entry .wp-block-columns { flex-direction: column; gap: 16px; }
}

/* =========================================================
   Footer
   ========================================================= */
.sw-footer { border-top: 1px solid rgba(0, 75, 100, .08); background: #fff; }
.sw-footer-inner {
  max-width: 1120px; margin: 0 auto; padding: 56px 56px 28px;
  display: grid; grid-template-columns: 1fr auto auto auto; gap: 64px;
}
.sw-footer-brand { display: flex; flex-direction: column; gap: 14px; }
.sw-footer-brand a { display: flex; align-items: center; gap: 10px; color: #0B3B4A; }
.sw-footer-desc { margin: 0; font-size: 12.5px; line-height: 2.1; color: #5E93A0; max-width: 40ch; }
.sw-footer-col { display: flex; flex-direction: column; gap: 12px; font-size: 13px; }
.sw-footer-col a { color: #3E6B78; }
.sw-footer-col a:hover { color: #00ACBB; }
.sw-footer-head {
  font-family: 'Poppins', sans-serif; font-size: 10px; letter-spacing: .24em;
  color: #288E9E; font-weight: 600;
}
.sw-footer-bottom {
  max-width: 1120px; margin: 0 auto; padding: 20px 56px 32px;
  display: flex; justify-content: space-between; align-items: center;
  border-top: 1px solid rgba(0, 75, 100, .06);
}
.sw-footer-copy { font-family: 'Poppins', sans-serif; font-size: 10.5px; letter-spacing: .08em; color: #8FB3BD; }
.sw-footer-note { font-size: 11px; color: #8FB3BD; }

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width: 900px) {
  .sw-nav { padding: 14px 20px; }
  .sw-nav-links { gap: 14px; font-size: 12.5px; }
  .sw-footer-inner { grid-template-columns: 1fr 1fr; gap: 32px; padding: 40px 24px 24px; }
  .sw-footer-bottom { flex-direction: column; gap: 8px; text-align: center; padding: 20px 24px 28px; }
}
@media (max-width: 560px) {
  .sw-footer-inner { grid-template-columns: 1fr; }
  .sw-content { padding: 48px 20px 72px; }
  .sw-page-title { font-size: 26px; }
}


/* =========================================================
   貼り付けHTML（インラインstyle）互換 — スマホはみ出し修正
   services配下の個別ページ・一覧など、Claude Designから
   カスタムHTMLで貼り付けた本文を全ページ共通で救済します。
   ========================================================= */

/* 横はみ出しの根本原因：固定min-width・固定width を無効化 */
.sw-entry [style*="min-width:1120px"],
.sw-entry [style*="min-width: 1120px"] { min-width: 0 !important; }
.sw-entry [style*="width:1120px"],
.sw-entry [style*="width: 1120px"] { width: 100% !important; }
.sw-entry { overflow-wrap: anywhere; }
.sw-entry img { max-width: 100%; height: auto; }

/* カード型リンク（display:flex/grid の a）が最小幅まで縮んで
   1文字ずつ縦割れする問題 */
.sw-entry a[style*="display:flex"],
.sw-entry a[style*="display: flex"],
.sw-entry a[style*="display:grid"],
.sw-entry a[style*="display: grid"] {
  width: 100%; max-width: 100%; box-sizing: border-box;
}
.sw-entry a[style*="display:flex"] > div,
.sw-entry a[style*="display: flex"] > div,
.sw-entry a[style*="display:grid"] > div,
.sw-entry a[style*="display: grid"] > div {
  flex: 1 1 auto; min-width: 0;
}
.sw-entry a[style*="display:flex"] > span[style*="border-radius:50%"],
.sw-entry a[style*="display: flex"] > span[style*="border-radius:50%"] { flex: none; }

@media (max-width: 768px) {
  /* ページ内に貼り込まれた独自ナビ（テーマのヘッダーと二重）を隠す */
  .sw-entry [style*="justify-content:space-between"][style*="padding:18px 56px"] { display: none !important; }

  /* 多カラムのグリッドを1カラムに */
  .sw-entry [style*="grid-template-columns:repeat("],
  .sw-entry [style*="grid-template-columns: repeat("],
  .sw-entry [style*="grid-template-columns:1fr 1fr"],
  .sw-entry [style*="grid-template-columns: 1fr 1fr"],
  .sw-entry [style*="grid-template-columns:1fr auto"],
  .sw-entry [style*="grid-template-columns: 1fr auto"],
  .sw-entry [style*="grid-template-columns:1fr 380px"],
  .sw-entry [style*="grid-template-columns:1fr 470px"],
  .sw-entry [style*="grid-template-columns:340px 1fr"],
  .sw-entry [style*="grid-template-columns:360px 1fr"],
  .sw-entry [style*="grid-template-columns:420px 1fr"],
  .sw-entry [style*="grid-template-columns:64px 1fr"],
  .sw-entry [style*="grid-template-columns:88px 1fr"] {
    grid-template-columns: 1fr !important;
  }
  /* 「ラベル｜値」の表風2列だけは横並びを維持 */
  .sw-entry [style*="grid-template-columns:120px 1fr"] { grid-template-columns: 96px 1fr !important; }

  /* 大見出し：固定pxをスマホ向けに可変化 */
  .sw-entry h1[style], .sw-entry h2[style*="font-size:3"], .sw-entry h2[style*="font-size:2"] {
    font-size: clamp(22px, 6.4vw, 32px) !important;
    line-height: 1.65 !important;
  }
  .sw-entry [style*="font-size:40px"], .sw-entry [style*="font-size:44px"],
  .sw-entry [style*="font-size:46px"], .sw-entry [style*="font-size:52px"] {
    font-size: clamp(24px, 7vw, 36px) !important;
    line-height: 1.6 !important;
  }

  /* 56pxの左右余白を20pxに圧縮 */
  .sw-entry [style*="padding:72px 56px"], .sw-entry [style*="padding:80px 56px"],
  .sw-entry [style*="padding:64px 56px"], .sw-entry [style*="padding:96px 56px"],
  .sw-entry [style*="padding:56px 56px"], .sw-entry [style*="padding:52px 56px"],
  .sw-entry [style*="padding:24px 56px"], .sw-entry [style*="padding:40px 56px"],
  .sw-entry [style*="padding:0 56px"], .sw-entry [style*=" 56px 96px"],
  .sw-entry [style*="padding:88px 56px"], .sw-entry [style*="padding:20px 56px"] {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }

  /* CTA帯・ヒーローのflex横並びを縦積みに */
  .sw-entry [style*="border-radius:36px"][style*="justify-content:space-between"] {
    flex-direction: column !important;
    align-items: flex-start !important;
    padding: 36px 24px !important;
  }
}
