/* ──────────────────────────────────────────────────────
   共有ユーティリティクラス
   全ページで使用されるスタイルを一括管理
   ────────────────────────────────────────────────────── */

/* ── 頻出パターン（11回以上） ── */
.ui-danger-p { color: #991b1b; font-size: .9rem; margin-bottom: .75rem; }

/* ── フォントサイズのみ ── */
.fs-base-sm { font-size: .875rem; }
.fs-xs-block { font-size: .75rem; display: block; }
.fs-xxs { font-size: .75rem; }
.fs-xs { font-size: .78rem; }
.fs-sm-75 { font-size: .82rem; }
.fs-sm { font-size: .85rem; }
.fs-md { font-size: .9rem; }
.fs-md-95 { font-size: .95rem; }
.fs-lg-1 { font-size: 1rem; }
.fs-lg-1-1 { font-size: 1.1rem; }
.fs-lg-1-2 { font-size: 1.2rem; }
.fs-lg-1-4 { font-size: 1.4rem; }
.fs-xl-1-5 { font-size: 1.5rem; }
.fs-xxl-1-6 { font-size: 1.6rem; }
.fs-2xl { font-size: 1.75rem; }
.fs-3xl { font-size: 2rem; }

/* ── 色のみ ── */
.c-red-dark { color: #7f1d1d; }
.c-red-bold { color: #991b1b; }
.c-red-warn { color: var(--red-warn); }
.c-amber-600 { color: #b45309; }
.c-amber-700 { color: #92400e; }
.c-amber-800 { color: #78350f; }
.c-amber-900 { color: #854d0e; }

/* ── 背景色のみ ── */
.bg-red-100 { background: #fee2e2; }
.bg-red-50 { background: #fef2f2; }
.bg-yellow-100 { background: #fef9c3; }
.bg-green-50 { background: #f0fdf4; }
.bg-blue-50 { background: #eff6ff; }
.bg-gray-50 { background: #f5f5f4; }
.bg-gray-100 { background: var(--slate-100); }
.bg-white { background: var(--white); }
.bg-slate-900 { background: #1e293b; }
.bg-amber-50 { background: #fffbeb; }
.bg-stone-100 { background: #e8dcc8; }

/* ── 複合パターン（背景+色+サイズ） ── */
.ui-error-box {
  background: #fee2e2;
}

.ui-alert-danger {
  background: rgba(220, 38, 38, .08);
  border: 1px solid rgba(220, 38, 38, .2);
  border-radius: 20px;
  padding: .2em .6em;
  font-size: .72rem;
  color: #991b1b;
  white-space: nowrap;
}

.ui-info-badge {
  background: var(--white);
  border-radius: var(--radius);
  padding: .85rem;
  border: 1px solid #fecaca;
  font-size: .82rem;
}

.ui-btn-nav {
  display: block;
  padding: .6rem .85rem;
  background: var(--slate-100);
  border-radius: var(--radius);
  font-size: .82rem;
  color: var(--navy-mid);
  font-weight: 600;
  text-decoration: none;
}

.ui-text-nav {
  font-size: .875rem;
  color: var(--slate-600);
  line-height: 1.8;
  margin-top: .75rem;
}

.ui-text-warn-sub {
  font-size: .875rem;
  color: var(--slate-600);
  line-height: 1.8;
  margin-bottom: .75rem;
}

.ui-text-warn-list {
  font-size: .875rem;
  color: var(--slate-600);
  line-height: 1.9;
  padding-left: 1.25rem;
}

.ui-text-warn-list-sm {
  font-size: .875rem;
  color: var(--slate-600);
  line-height: 1.9;
  padding-left: 1.25rem;
  margin-top: .5rem;
}

.ui-text-warn-wide {
  font-size: .875rem;
  color: var(--slate-600);
  line-height: 1.8;
  margin-bottom: 2rem;
}

.ui-text-warn-long {
  font-size: .875rem;
  color: var(--slate-600);
  margin-bottom: 1.25rem;
}

.ui-text-warn-space {
  font-size: .875rem;
  color: var(--slate-600);
  margin-bottom: 1.5rem;
}

.ui-text-warn-medium {
  font-size: .875rem;
  color: var(--slate-600);
  margin-bottom: .5rem;
}

.ui-text-sub-strong {
  font-weight: 700;
  color: var(--navy-mid);
  font-size: .875rem;
}

.ui-text-sub-wide {
  font-size: .875rem;
  color: var(--slate-600);
  line-height: 1.8;
  margin-bottom: 1.25rem;
}

.ui-lead-text {
  font-size: .78rem;
  color: var(--slate-600);
  line-height: 1.8;
  padding-left: 1rem;
}

.ui-lead-list {
  font-size: .82rem;
  line-height: 1.9;
  color: var(--slate-600);
  padding-left: 1.1rem;
}

.ui-lead-list-std {
  font-size: .82rem;
  line-height: 1.9;
  color: var(--slate-600);
}

.ui-small-caps {
  font-size: .8rem;
  color: var(--slate-600);
  margin: .25rem 0;
}

.ui-small-text {
  font-size: .8rem;
  color: var(--slate-600);
  margin-top: .5rem;
}

.ui-small-label {
  font-size: .8rem;
  font-weight: 700;
  color: var(--navy-mid);
  display: inline-block;
  margin-top: .75rem;
}

.ui-small-warn {
  font-size: .8rem;
  color: #713f12;
  margin: .4rem 0 0;
}

.ui-tiny-label {
  font-size: .72rem;
  color: var(--slate-600);
  min-width: 2.5rem;
}

.ui-tiny-caps {
  font-size: .72rem;
  color: var(--slate-500);
}

.ui-icon-danger-block {
  font-size: .75rem;
  color: #854d0e;
  display: block;
}

.ui-icon-danger {
  font-size: .75rem;
  color: #854d0e;
}

.ui-icon-warn-bold {
  font-size: .75rem;
  font-weight: 700;
  color: var(--slate-600);
}

.ui-icon-warn-block {
  font-size: .75rem;
  color: var(--slate-600);
  display: block;
  text-align: left;
  padding: .5rem 0;
}

.ui-label-danger {
  color: #991b1b;
  display: block;
  margin-bottom: .3rem;
}

.ui-label-danger-bold {
  font-weight: 700;
  color: #991b1b;
  font-size: .9rem;
}

.ui-label-danger-focus {
  font-weight: 700;
  color: #991b1b;
}

.ui-label-margin {
  margin-top: .25rem;
  font-weight: 700;
}

.ui-label-accent {
  font-size: .75rem;
  font-weight: 700;
  color: var(--navy);
  letter-spacing: .1em;
  text-transform: uppercase;
  margin-bottom: .4rem;
}

.ui-label-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: .5rem;
}

.ui-label-title-lg {
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--navy);
  line-height: 1.3;
  margin-bottom: .5rem;
}

.ui-title-serif {
  font-family: var(--font-serif);
  font-size: 1rem;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: .75rem;
}

.ui-title-serif-lg {
  font-family: var(--font-serif);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--navy);
}

.ui-title-serif-xl {
  font-family: var(--font-mono);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--navy);
}

.ui-title-serif-xxl {
  font-family: var(--font-mono);
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--navy);
}

.ui-heading-strong {
  font-size: .95rem;
  color: var(--navy);
  margin-bottom: .75rem;
  font-weight: 700;
}

.ui-text-center-sub {
  text-align: center;
  margin-bottom: .75rem;
}

.ui-text-center {
  text-align: center;
}

.ui-text-center-sp {
  text-align: center;
  margin-top: 1.5rem;
}

.ui-text-center-md {
  text-align: center;
  margin-top: 1.25rem;
}

.ui-text-pad {
  text-align: center;
  padding: 1.5rem 0 1rem;
}

.ui-text-space {
  margin-top: 1.5rem;
  margin-bottom: 2rem;
}

.ui-spacer-lg {
  margin-top: 2.5rem;
}

.ui-spacer-xlg {
  padding: 2rem 1.25rem 4rem;
}

.ui-flex-center {
  display: flex;
  justify-content: center;
  gap: 1rem;
  flex-wrap: wrap;
  margin-top: .75rem;
  font-size: .75rem;
  color: var(--slate-600);
}

.ui-flex-row-icon {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .75rem;
  background: var(--white);
  border-radius: var(--radius);
}

.ui-flex-icon-lg {
  font-size: 2rem;
  flex-shrink: 0;
}

.ui-flex-icon {
  font-size: 1.5rem;
}

.ui-flex-icon-sm {
  flex: 1;
}

.ui-grid-2-lg {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.ui-card-error {
  background: var(--white);
  border: 1px solid var(--slate-200);
  border-radius: var(--radius-lg);
  padding: 1.25rem;
  box-shadow: var(--shadow-card);
}

.ui-card-error-scroll {
  background: var(--white);
  border: 1px solid var(--slate-200);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-card);
}

.ui-box-alert {
  margin-top: 1.5rem;
  background: #fef2f2;
  border: 1px solid #fca5a5;
  border-radius: var(--radius);
  padding: 1rem 1.25rem;
  font-size: .8rem;
  text-align: center;
  color: #7f1d1d;
}

.ui-box-alert-lg {
  margin-top: 2rem;
  background: #fef2f2;
  border: 1px solid #fca5a5;
  border-radius: var(--radius);
  padding: 1rem 1.25rem;
  font-size: .8rem;
  text-align: center;
  color: #7f1d1d;
}

.ui-btn-text-danger {
  font-weight: 700;
  color: #991b1b;
}

.ui-btn-text-danger-lg {
  font-weight: 700;
  color: #991b1b;
  font-size: .9rem;
}

.ui-btn-text-danger-xl {
  font-weight: 700;
  color: #991b1b;
  font-size: .9rem;
  margin-top: 1rem;
}

.ui-btn-link {
  margin: 1rem 0;
  display: block;
  text-align: center;
  text-decoration: none;
}

.ui-link-back {
  margin-top: .4rem;
  display: block;
}

.ui-heading-meta {
  font-weight: 700;
  font-size: .875rem;
  color: var(--navy);
  margin-bottom: 1rem;
  display: flex;
  align-items: center;
  gap: .4rem;
}

.ui-label-meta {
  font-size: .78rem;
  font-weight: 700;
  color: var(--slate-400);
  letter-spacing: .06em;
  text-transform: uppercase;
  margin: 1.5rem 0 .75rem;
}

.ui-label-meta-sm {
  font-size: .75rem;
  font-weight: 700;
  color: var(--slate-400);
  letter-spacing: .06em;
  text-transform: uppercase;
  text-align: center;
  margin-bottom: .75rem;
}

.ui-progress-width {
  width: 0%;
}

.ui-white-nowrap {
  white-space: nowrap;
}

.ui-img-none {
  border: none;
}

.ui-hidden {
  display: none;
  visibility: hidden;
}

.ui-display-none {
  display: none;
}

.ui-transition {
  padding: 1rem;
  transition: all .2s;
  cursor: pointer;
}

.ui-gradient-bg {
  background: linear-gradient(135deg, #1e3a5f 0%, #1a2d4a 100%);
}

.ui-gradient-yellow {
  background: linear-gradient(135deg, #fef3c7, #fde68a);
  border: 2px solid #f59e0b;
}

.ui-text-warn-golden {
  color: var(--navy-mid);
}

.ui-link-underline {
  display: inline-block;
  margin-top: .65rem;
  font-size: .82rem;
  font-weight: 700;
  color: #92400e;
  text-decoration: underline;
}

.ui-link-hover {
  display: inline-block;
  margin-top: .65rem;
  font-size: .82rem;
  font-weight: 700;
}

/* ── 細かいサイズ・色の組み合わせ ── */
.ui-tiny-slate { font-size: .72rem; color: var(--slate-500); }
.ui-small-slate { font-size: .85rem; color: var(--slate-600); }
.ui-small-warn-brown { font-size: .85rem; color: #78350f; margin: 0; line-height: 1.7; }
.ui-small-slate-mb { font-size: .82rem; color: var(--slate-600); margin-bottom: 1rem; }
.ui-small-slate-list { font-size: .82rem; color: var(--slate-600); line-height: 1.9; padding-left: 1.1rem; }

/* ── ボックス系複合 ── */
.ui-flex-box {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .75rem;
  background: var(--white);
  border-radius: var(--radius);
  border: 1px solid var(--slate-200);
}

.ui-card-flex {
  background: var(--white);
  border: 1px solid var(--slate-200);
  border-radius: var(--radius-lg);
  padding: 1.25rem 1.5rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  box-shadow: var(--shadow-card);
}

.ui-box-yellow-sm {
  background: #fffbeb;
  border-radius: var(--radius);
  padding: .85rem;
}

/* ── 特殊パターン ── */
.ui-text-space-md { margin: 1.5rem 0; }
.ui-text-center-flex { text-align: center; margin: 1.5rem 0; }
.pt-md { padding-top: 1.5rem; }
.mt-0-mb-md { margin-top: 0; margin-bottom: .75rem; }

/* ── Flex with special properties ── */
.ui-flex-gap { gap: 1rem; }
.ui-flex-gap-sm { gap: .75rem; }
.ui-flex-wrap-icon {
  margin-top: .75rem;
  font-size: .75rem;
  color: #fecaca;
  display: flex;
  justify-content: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.ui-flex-icon-slate {
  margin-top: .75rem;
  font-size: .75rem;
  color: #64748b;
  display: flex;
  justify-content: center;
  gap: .4rem;
  flex-wrap: nowrap;
}

.ui-flex-gap-xs {
  margin-top: .75rem;
}

/* ── 特殊な色・スタイル ── */
.fw-bold-warn { font-weight: 700; color: var(--red-warn); }
.ui-label-warn-bold { font-size: .8rem; font-weight: 700; color: var(--navy); margin-bottom: .75rem; letter-spacing: .06em; }
.ui-heading-warn { font-size: .9rem; font-weight: 700; color: var(--navy); margin-bottom: .75rem; }
.ui-text-warn-long-line { font-size: .9rem; color: var(--slate-600); margin-bottom: 1.25rem; line-height: 1.7; }
.ui-label-strong-danger { font-size: .95rem; font-weight: 700; color: #991b1b; margin-bottom: .75rem; }
.ui-label-strong-success { font-size: .95rem; font-weight: 700; color: #166534; margin-bottom: .75rem; }
.ui-label-strong-accent { font-size: .95rem; font-weight: 700; color: var(--red-warn); margin-bottom: .75rem; }
.ui-label-strong-ok { font-size: .95rem; font-weight: 700; color: var(--green-ok); margin-bottom: .75rem; }

/* ── 特殊なダッシュボード・チェック系 ── */
.ui-check-list-danger {
  font-size: .82rem;
  color: #991b1b;
  line-height: 1.9;
  list-style: none;
  padding: 0;
}

.ui-check-list-success {
  font-size: .82rem;
  color: #166534;
  line-height: 1.9;
  list-style: none;
  padding: 0;
}

/* ── 補足テキスト ── */
.ui-small-text-slate { font-size: .8rem; color: var(--slate-600); }
.ui-small-text-gray { font-size: .8rem; color: var(--slate-400); margin-bottom: 1.5rem; }
.ui-small-text-blue { font-size: .7rem; font-weight: 400; color: #93c5fd; margin-left: auto; }
.ui-text-red-7f { font-size: .875rem; color: #7f1d1d; margin-bottom: 1rem; }
.ui-text-border { font-size: .85rem; color: #cbd5e1; }

/* ── ラベルと複合体 ── */
.ui-label-accent-warn {
  font-size: .75rem;
  font-weight: 700;
  color: var(--navy);
  letter-spacing: .1em;
  text-transform: uppercase;
  margin-bottom: .4rem;
}

.ui-label-warn-heavy {
  font-size: 1rem;
  font-weight: 700;
  color: #92400e;
  margin-bottom: .75rem;
  display: flex;
  align-items: center;
  gap: .5rem;
}

.ui-title-warn {
  font-family: var(--font-serif);
  font-size: 1rem;
  font-weight: 700;
  color: #991b1b;
  margin-bottom: .75rem;
  display: flex;
  align-items: center;
  gap: .4rem;
}

.ui-title-warn-accent {
  font-family: var(--font-serif);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--red-warn);
  margin-bottom: .5rem;
}

.ui-title-lg-clamp {
  font-family: var(--font-serif);
  font-size: clamp(1.4rem, 4vw, 2rem);
  font-weight: 700;
  color: var(--navy);
  margin-bottom: .5rem;
}

/* ── スペシャル色パターン ── */
.c-gray-div { color: #d1d5db; margin-top: .15rem; }
.c-blue-light { color: #bfdbfe; margin-top: .15rem; }
.c-blue-300 { color: #93c5fd; margin-top: .15rem; }
.c-blue-pure { color: #93c5fd; }
.c-gray-small { color: #64748b; }

/* ── Text特殊タイプ ── */
.ui-text-icon-slate { margin-top: .75rem; font-size: .75rem; color: var(--slate-600); }
.ui-text-icon-slate-sm { margin-top: .5rem; font-size: .75rem; color: var(--slate-600); }
.ui-text-align-left { text-align: left; }

/* ── マージン系追加 ── */
.mt-1 { margin-top: 1rem; }
.mb-0 { margin: 0; }

/* ── グラデーション ── */
.ui-gradient-navy {
  margin-top: 1.5rem;
  background: linear-gradient(135deg, #1e3a5f 0%, #1a2d4a 100%);
}

/* ── 警告タイプの複合 ── */
.ui-label-warn-mt {
  margin-top: 1rem;
  font-weight: 700;
  color: #991b1b;
  font-size: .9rem;
}

/* ── 背景色のみ ── */
.bg-slate-500 { background: #475569; }
.bg-slate-600 { background: var(--slate-600); }
.bg-slate-100-border { background: var(--slate-100); border: 1px solid var(--slate-200); border-radius: var(--radius-lg); padding: 1.25rem 1.5rem; margin-bottom: 2rem; }
.bg-gray-400 { background: #9ca3af; }
.bg-gray-600 { background: #475569; }
.bg-gray-700 { background: #374151; }
.bg-stone-600 { background: #78716c; }
.bg-amber-600-bg { background: #92400e; }
.bg-yellow-100-border { background: #fef3c7; }
.bg-white-border-md { background: var(--white); border: 1px solid var(--slate-200); border-radius: var(--radius-lg); padding: 1.25rem; margin-top: 1.5rem; }
.bg-white-border-sp { background: var(--white); border: 1px solid var(--slate-200); border-radius: var(--radius-lg); padding: 1.25rem; margin: 1.5rem 0; box-shadow: var(--shadow-card); }
.bg-white-border-lg { background: var(--white); border: 1px solid var(--slate-200); border-radius: var(--radius-lg); padding: 1.5rem; margin-top: 1.5rem; box-shadow: var(--shadow-card); }
.bg-white-yellow-border { background: var(--white); border: 2px solid #fcd34d; border-radius: var(--radius-lg); padding: 1.5rem; margin-bottom: 1.5rem; }

/* ── ボタンスタイル ── */
.ui-btn-nav-sm {
  background: var(--navy-mid);
  color: var(--white);
  padding: .75rem 1rem;
  text-align: center;
}

.ui-btn-nav-md {
  background: var(--navy);
  color: var(--white);
  padding: .75rem 1rem;
  text-align: center;
}

.ui-btn-nav-slate {
  background: var(--navy);
  color: var(--white);
  font-weight: 700;
  padding: .6rem 1.25rem;
  border-radius: var(--radius);
  text-decoration: none;
  font-size: .9rem;
}

.ui-btn-nav-dark {
  background: #475569;
  color: var(--white);
  font-weight: 700;
  padding: .6rem 1.25rem;
  border-radius: var(--radius);
  text-decoration: none;
  font-size: .9rem;
}

.ui-btn-nav-stone {
  background: var(--slate-600);
  color: var(--white);
  font-weight: 700;
  padding: .6rem 1.25rem;
  border-radius: var(--radius);
  text-decoration: none;
  font-size: .9rem;
}

.ui-btn-primary-large {
  background: var(--navy);
  color: var(--white);
  border: none;
  padding: .85rem 2.5rem;
  font-size: 1rem;
  font-weight: 700;
  font-family: var(--font-sans);
  border-radius: var(--radius);
  cursor: pointer;
  box-shadow: var(--shadow-card);
  transition: background .2s;
}

.ui-btn-danger-block {
  display: block;
  background: var(--red-warn);
  color: var(--white);
  text-align: center;
  font-weight: 700;
  font-size: .95rem;
  padding: .85rem .5rem;
  border-radius: var(--radius);
  text-decoration: none;
  transition: background .2s;
  white-space: nowrap;
}

.ui-btn-gray-bg {
  background: #374151;
  color: var(--white);
  padding: .75rem 1rem;
  text-align: center;
}

/* ── アラートボックス ── */
.ui-alert-blue {
  background: #eff6ff;
  border: 1px solid #93c5fd;
  border-radius: var(--radius);
  padding: .5rem .75rem;
  margin-top: .75rem;
  font-size: .75rem;
  color: #1e40af;
}

.ui-alert-green {
  background: #f0fdf4;
  border: 1px solid #86efac;
  border-radius: var(--radius);
  padding: .5rem .75rem;
  margin-top: .75rem;
  font-size: .75rem;
  color: #166534;
}

.ui-alert-green-lg {
  background: #f0fdf4;
  border: 1px solid #86efac;
  border-radius: var(--radius-lg);
  padding: 1.25rem;
}

.ui-alert-red {
  background: #fee2e2;
  border: 1px solid #fca5a5;
  border-radius: var(--radius);
  padding: .5rem .75rem;
  margin-top: .75rem;
  font-size: .75rem;
  color: #991b1b;
}

.ui-alert-red-lg {
  background: #fee2e2;
  border: 1px solid #fca5a5;
  border-radius: var(--radius-lg);
  padding: 1.25rem;
}

.ui-alert-red-lg-sp {
  background: #fef2f2;
  border: 1px solid #fca5a5;
  border-radius: var(--radius-lg);
  padding: 1.25rem 1.5rem;
  margin-bottom: 2rem;
}

.ui-alert-yellow {
  background: #fef9c3;
  border: 1px solid #fde047;
  border-radius: var(--radius);
  padding: .5rem .75rem;
  margin-top: .75rem;
  font-size: .75rem;
  color: #854d0e;
}

.ui-alert-danger-border {
  border: 2px solid var(--red-warn);
  border-radius: var(--radius-lg);
  padding: 1.5rem 1.75rem;
  background: #fff5f5;
  margin: 2rem 0;
}

/* ── グラデーションボックス ── */
.ui-gradient-yellow-box {
  background: linear-gradient(135deg, #fef3c7, #fde68a);
  border: 2px solid #f59e0b;
  border-radius: var(--radius-lg);
  padding: 1.25rem 1.5rem;
  display: flex;
  gap: 1rem;
  align-items: flex-start;
}

.ui-gradient-yellow-box-mt {
  background: linear-gradient(135deg, #fef3c7, #fde68a);
  border: 2px solid #f59e0b;
  border-radius: var(--radius-lg);
  padding: 1.25rem 1.5rem;
  margin-top: 1.25rem;
  display: flex;
  gap: 1rem;
  align-items: flex-start;
}

/* ── カード複合 ── */
.ui-card-navy-border {
  background: var(--white);
  border: 2px solid var(--navy);
  border-radius: var(--radius-lg);
  padding: 1.25rem 1.5rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  box-shadow: var(--shadow-card);
}

.ui-card-navy-mid-border {
  background: var(--white);
  border: 2px solid var(--navy-mid);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
}

/* ── ボーダーのみ ── */
.border-l-green { border-left: 3px solid var(--green-ok); }
.border-l-red { border-left: 3px solid var(--red-warn); }

/* ── テキスト複合 ── */
.ui-text-red-7f-line {
  color: #7f1d1d;
  font-size: .85rem;
  line-height: 1.8;
  margin-bottom: .75rem;
}

.ui-text-red-dark-line {
  color: #7f1d1d;
  font-size: .88rem;
  line-height: 1.9;
}

.ui-text-red-dark-mb {
  color: #7f1d1d;
  font-size: .88rem;
  line-height: 1.9;
  margin-bottom: .75rem;
}

.ui-text-red-bold-line {
  color: #991b1b;
  font-size: .88rem;
  line-height: 1.7;
  margin-bottom: .75rem;
}

/* ── グリッド系 ── */
.ui-grid-auto-compact {
  display: grid;
  gap: 1rem;
  margin: 1.25rem 0;
}

.ui-grid-2-compact {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .5rem;
}

.ui-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  margin-bottom: 1.5rem;
}

/* ── リンク特殊 ── */
.ui-link-warn-underline {
  display: inline-block;
  margin-top: .65rem;
  font-size: .82rem;
  font-weight: 700;
  color: #92400e;
  text-decoration: underline;
}

/* ── カードリンク・エリアカード ── */
a.no-underline,
.no-underline {
  text-decoration: none;
  color: inherit;
  display: block;
}
a.no-underline:hover { text-decoration: none; }

.ui-row-between {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
  margin-bottom: .75rem;
}

.ui-heading {
  font-family: var(--font-heading);
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--navy);
  margin: 0;
  line-height: 1.3;
}

.ui-text-sm-sub {
  font-size: .875rem;
  color: var(--color-sub);
  line-height: 1.75;
  margin-bottom: .75rem;
}

.ui-label-navy {
  display: inline-block;
  font-size: .8rem;
  font-weight: 700;
  color: var(--navy);
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  padding: .3rem .75rem;
  border-radius: 4px;
  line-height: 1.5;
}

.ui-accordion-q { cursor: pointer; }
