@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700;900&display=swap');

:root {
  --primary: #005BAC;
  --primary-dark: #003d73;
  --primary-light: #e6f2ff;
  --accent: #F39800;
  --accent-light: #fff4e0;
  --text: #1a1a2e;
  --text-light: #555;
  --bg: #f8fafd;
  --white: #fff;
  --border: #e0e8f0;
  --shadow: 0 2px 12px rgba(0,91,172,.06);
  --shadow-lg: 0 6px 22px rgba(0,91,172,.1);
  --radius: 8px;
  --radius-sm: 8px;
}

*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }

html { scroll-behavior:smooth; font-size:16px; }

body {
  font-family:'Noto Sans JP',sans-serif;
  color:var(--text);
  background:var(--bg);
  line-height:1.9;
  -webkit-font-smoothing:antialiased;
}

img { max-width:100%; height:auto; display:block; }
a { color:var(--primary); text-decoration:none; transition:color .2s; }
a:hover { color:var(--accent); }
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

/* ===== Header ===== */
.site-header {
  background:var(--white);
  border-bottom:1px solid var(--border);
  position:sticky; top:0; z-index:100;
  backdrop-filter:blur(12px);
  background:rgba(255,255,255,.92);
}
.header-inner {
  max-width:1100px; margin:0 auto;
  padding:14px 24px;
  display:flex; align-items:center; justify-content:space-between;
  gap:20px;
}
.logo {
  display:inline-flex;
  align-items:center;
  flex-shrink:0;
}
.logo img {
  width:180px;
  height:auto;
  display:block;
}
.header-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:12px;
  min-width:0;
}
.header-search {
  width:min(320px,36vw);
}
.header-search input {
  width:100%;
  min-height:40px;
  padding:8px 14px;
  border:1px solid var(--border);
  border-radius:8px;
  background:#fff;
  color:var(--text);
  font:inherit;
  font-size:.86rem;
  outline:none;
  box-shadow:none;
}
.header-search input:focus {
  border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(0,91,172,.12);
}
.header-cta {
  display:inline-flex; align-items:center; gap:6px;
  background:var(--accent); color:#fff;
  padding:10px 18px; border-radius:8px;
  font-size:.85rem; font-weight:700;
  transition:background .2s;
  box-shadow:none;
}
.header-cta:hover { background:#d98500; color:#fff; }

/* ===== Hero ===== */
.hero {
  background:var(--white);
  color:var(--text);
  padding:52px 24px 42px;
  text-align:left;
  border-bottom:1px solid var(--border);
}
.hero::before {
  content:none;
}
.hero-inner { max-width:1100px; margin:0 auto; }
.hero-badge {
  display:inline-block;
  background:var(--primary-light);
  color:var(--primary);
  padding:5px 12px; border-radius:6px;
  font-size:.78rem; font-weight:700; margin-bottom:18px;
  border:1px solid #cbdff4;
}
.article-dates {
  display:flex;
  justify-content:flex-start;
  gap:14px;
  flex-wrap:wrap;
  margin:0 0 18px;
  color:var(--text-light);
  font-size:.82rem;
  font-weight:500;
}
.article-dates time {
  color:var(--text);
}

.hero h1 {
  font-size:clamp(1.6rem,4.5vw,2.5rem);
  font-weight:900;
  line-height:1.25;
  margin:0 0 18px;
  max-width:100%;
  letter-spacing:0;
  text-wrap:balance;
  white-space:normal;
  line-break:strict;
  overflow-wrap:break-word;
}

.hero h1 em {
  font-style:normal;
  color:var(--primary);
  white-space:nowrap;
}
.hero-title-main {
  display:block;
  text-wrap:balance;
}
.hero h1 small,
.hero-title-sub {
  display:block;
  max-width:880px;
  margin-right:0;
  margin-left:0;
  margin-top:14px;
  font-size:.55em;
  line-height:1.5;
  opacity:.85;
  font-weight:700;
  text-wrap:balance;
  white-space:normal;
  line-break:strict;
  overflow-wrap:break-word;
}
.hero-sub { font-size:1rem; color:var(--text-light); max-width:760px; margin:0 0 8px; line-height:1.9; }
.hero-img {
  max-width:520px; margin:0 auto;
  border-radius:var(--radius); overflow:hidden;
  box-shadow:0 20px 60px rgba(0,0,0,.2);
}

/* ===== Breadcrumb ===== */
.breadcrumb { max-width:1100px; margin:0 auto; padding:16px 24px; font-size:.78rem; color:var(--text-light); }
.breadcrumb a { color:var(--text-light); }

/* ===== Article Layout ===== */
.article-wrap {
  max-width:1100px; margin:0 auto; padding:0 24px 80px;
  display:grid; grid-template-columns:1fr 300px; gap:48px;
}

article { min-width:0; }

/* ===== TOC sidebar ===== */
.sidebar {
  position:sticky;
  top:80px;
  align-self:start;
}
.toc-card {
  background:var(--white); border-radius:var(--radius);
  padding:28px 24px; box-shadow:var(--shadow);
  border:1px solid var(--border);
}
.toc-card h2 {
  font-size:.9rem; font-weight:700; color:var(--primary);
  margin-bottom:16px; padding-bottom:10px;
  border-bottom:2px solid var(--primary-light);
  display:flex; align-items:center; gap:6px;
}
.toc-card ol { list-style:none; counter-reset:toc; }
.toc-card li { counter-increment:toc; margin-bottom:8px; }
.toc-card li a {
  font-size:.82rem; color:var(--text-light); line-height:1.6;
  display:flex; gap:8px; transition:color .2s;
}
.toc-card li a::before {
  content:counter(toc)'.';
  color:var(--accent); font-weight:700; flex-shrink:0;
}
.toc-card li a:hover { color:var(--primary); }
.related-card {
  background:var(--white);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:24px;
  margin-top:20px;
  box-shadow:var(--shadow);
}
.related-card h2 {
  font-size:.9rem;
  font-weight:700;
  color:var(--primary);
  margin-bottom:16px;
  padding-bottom:10px;
  border-bottom:2px solid var(--primary-light);
}
.related-list {
  list-style:none;
  margin:0;
  padding:0;
}
.related-list li {
  margin-bottom:14px;
  padding-bottom:14px;
  border-bottom:1px solid var(--border);
}
.related-list li:last-child {
  margin-bottom:0;
  padding-bottom:0;
  border-bottom:0;
}
.related-list a {
  display:block;
}
.related-category {
  display:inline-block;
  margin-bottom:5px;
  color:#b56800;
  font-size:.7rem;
  font-weight:700;
}
.related-title {
  display:block;
  color:var(--text);
  font-size:.82rem;
  line-height:1.6;
}
.related-list a:hover .related-title {
  color:var(--primary);
}

/* ===== Content Typography ===== */
article h2 {
  font-size:1.55rem; font-weight:900; color:var(--primary);
  margin:56px 0 20px; padding-bottom:12px;
  border-bottom:3px solid var(--accent);
  line-height:1.5;
  text-wrap:balance;
  line-break:strict;
  overflow-wrap:break-word;
}
article h3 {
  font-size:1.15rem; font-weight:700; color:var(--text);
  margin:36px 0 14px;
  padding-left:14px;
  border-left:4px solid var(--accent);
  line-height:1.5;
  text-wrap:balance;
  line-break:strict;
  overflow-wrap:break-word;
}
article p { margin-bottom:20px; font-size:.95rem; color:#333; }

article ul, article ol {
  margin:0 0 24px 20px; font-size:.93rem;
}
article li { margin-bottom:8px; line-height:1.8; }

/* ===== Callout boxes ===== */
.callout {
  border-radius:var(--radius-sm);
  padding:24px 28px; margin:28px 0;
  border-left:5px solid;
}
.callout-warning {
  background:#fff8f0; border-color:var(--accent);
}
.callout-info {
  background:var(--primary-light); border-color:var(--primary);
}
.callout-title {
  font-size:.9rem; font-weight:700; margin-bottom:8px;
  display:flex; align-items:center; gap:6px;
}
.callout-warning .callout-title { color:#c57200; }
.callout-info .callout-title { color:var(--primary); }
.callout p { margin-bottom:0; font-size:.88rem; }

/* ===== Stats row ===== */
.stats-row {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr)); gap:16px;
  margin:32px 0;
}
.stat-card {
  background:var(--white); border-radius:var(--radius-sm);
  padding:24px 20px; text-align:center;
  box-shadow:var(--shadow); border:1px solid var(--border);
}
.stat-num {
  font-size:2rem; font-weight:900; color:var(--primary);
  line-height:1.2;
}
.stat-num span { color:var(--accent); font-size:1rem; }
.stat-label { font-size:.78rem; color:var(--text-light); margin-top:6px; }

/* ===== Comparison table ===== */
.table-wrap {
  overflow-x:auto; margin:28px 0;
  border-radius:var(--radius-sm);
  border:1px solid var(--border);
}
table {
  width:100%; border-collapse:collapse;
  background:var(--white); font-size:.85rem;
}
thead { background:var(--primary); color:#fff; }
th { padding:14px 16px; font-weight:700; text-align:left; white-space:nowrap; }
td {
  padding:14px 16px; border-bottom:1px solid var(--border);
  vertical-align:top;
}
.table-wrap th:first-child,
.table-wrap td:first-child {
  min-width:190px;
  word-break:keep-all;
  overflow-wrap:normal;
}
tbody tr:hover { background:var(--primary-light); }
.badge-good {
  display:inline-block; background:#e6f9e6; color:#1a8a1a;
  padding:2px 8px; border-radius:6px; font-size:.75rem; font-weight:700;
}
.badge-warn {
  display:inline-block; background:#fff3e0; color:#c57200;
  padding:2px 8px; border-radius:6px; font-size:.75rem; font-weight:700;
}
.badge-bad {
  display:inline-block; background:#fde8e8; color:#c42020;
  padding:2px 8px; border-radius:6px; font-size:.75rem; font-weight:700;
}

/* ===== Article images ===== */
.article-img {
  border-radius:var(--radius); overflow:hidden;
  margin:32px 0; box-shadow:var(--shadow);
}
.article-img figcaption {
  font-size:.78rem; color:var(--text-light);
  text-align:center; padding:10px; background:var(--white);
}

/* ===== Checklist ===== */
.checklist { list-style:none; margin:20px 0 28px; padding:0; }
.checklist li {
  padding:10px 0 10px 32px; position:relative;
  font-size:.92rem; border-bottom:1px solid var(--border);
}
.checklist li::before {
  content:'✓'; position:absolute; left:0; top:10px;
  width:22px; height:22px; border-radius:50%;
  background:var(--accent); color:#fff;
  font-size:.7rem; font-weight:900;
  display:flex; align-items:center; justify-content:center;
}

/* ===== CTA section ===== */
.cta-section {
  background:var(--primary-light);
  color:var(--text); border-radius:var(--radius);
  padding:32px; text-align:left;
  margin:44px 0; border:1px solid #cbdff4;
}
.cta-section::before {
  content:none;
}
.cta-section h2 { color:var(--primary); border:none; margin:0 0 10px; font-size:1.35rem; }
.cta-section p { margin-bottom:20px; font-size:.95rem; color:var(--text); }
.btn-cta {
  display:inline-flex; align-items:center; gap:8px;
  background:var(--accent); color:#fff;
  padding:13px 24px; border-radius:8px;
  font-size:1rem; font-weight:700;
  box-shadow:none;
  transition:background .2s;
}
.btn-cta:hover { background:#d98500; color:#fff; }

/* ===== Author ===== */
.legal-reference {
  background:var(--white);
  border:1px solid var(--border);
  border-left:5px solid var(--primary);
  border-radius:var(--radius-sm);
  padding:24px 28px;
  margin:36px 0;
  box-shadow:var(--shadow);
}
.legal-reference h2 {
  margin:0 0 14px;
  padding:0;
  border:0;
  color:var(--primary);
  font-size:1.05rem;
}
.legal-reference p {
  margin-bottom:14px;
  color:var(--text-light);
  font-size:.84rem;
}
.legal-reference ul {
  margin:0 0 0 20px;
}
.legal-reference li {
  margin-bottom:10px;
  font-size:.86rem;
}
.legal-reference .source-note {
  margin-top:14px;
  margin-bottom:0;
  font-size:.78rem;
}

/* ===== Footer ===== */
.site-footer {
  background:var(--primary-dark); color:rgba(255,255,255,.7);
  padding:40px 24px; text-align:center; font-size:.8rem;
}
.site-footer a { color:rgba(255,255,255,.85); }

.sp-only {
  display:none;
}

/* ===== Responsive ===== */
@media(max-width:860px){
  .article-wrap { grid-template-columns:1fr; }
  .sidebar {
    display:contents;
    position:static;
  }
  .toc-card { order:-1; }
  .related-card {
    order:1;
    margin-top:0;
  }
  .stats-row { grid-template-columns:1fr; }
  .hero { padding:48px 20px 40px; }
  .header-inner {
    align-items:flex-start;
    flex-direction:column;
    gap:10px;
  }
  .header-actions {
    width:100%;
  }
  .header-search {
    width:100%;
    flex:1;
  }
  .sp-only {
    display:inline;
  }
}

@media(max-width:520px){
  .hero h1 {
    font-size:clamp(1.45rem,8vw,2rem);
    line-height:1.35;
  }
  .hero-title-sub {
    font-size:.52em;
  }
  article h2 {
    font-size:1.35rem;
  }
}
