/* フォントペア提案のCSS。クラス名の接頭辞は fp- */

.fp-filters .tk-select { width: 100%; }
.fp-filters { display: grid; gap: 0 12px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 768px) {
  .fp-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fp-filters .tk-check { grid-column: 1 / -1; }
}

/* 一覧 */
.fp-list {
  list-style: none; margin: 8px 0 0; padding: 0;
  max-height: 420px; overflow-y: auto;
  border: 1px solid var(--tk-border); border-radius: var(--tk-radius-sm);
}
@media (min-width: 768px) { .fp-list { max-height: 640px; } }
.fp-list .tk-result-empty { margin: 12px; }
.fp-item { display: flex; align-items: stretch; border-bottom: 1px solid var(--tk-border); }
.fp-item:last-child { border-bottom: 0; }
.fp-item__main {
  flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px;
  padding: 10px 12px; text-align: left; font: inherit; color: var(--tk-text);
  background: transparent; border: 0; cursor: pointer;
}
.fp-item__main:hover { background: var(--tk-surface-2); }
.fp-item__main[aria-pressed="true"] { background: var(--tk-accent-soft); box-shadow: inset 4px 0 0 var(--tk-accent); }
.fp-item__main:focus-visible, .fp-item__fav:focus-visible { outline: 2px solid var(--tk-focus); outline-offset: -2px; }
.fp-item__top { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 2px; }
.fp-item__name { font-weight: 600; overflow-wrap: anywhere; }
.fp-item__name--body { font-weight: 400; font-size: .875rem; color: var(--tk-text-muted); }
.fp-item__fav {
  flex: 0 0 48px; font-size: 1.25rem; line-height: 1; color: var(--tk-text-muted);
  background: transparent; border: 0; border-left: 1px solid var(--tk-border); cursor: pointer;
}
.fp-item__fav[aria-pressed="true"] { color: var(--tk-warning); }
.fp-item__fav:hover { background: var(--tk-surface-2); }

/* バッジ・タグ */
.fp-badge {
  display: inline-block; font-size: .75rem; font-weight: 700; padding: 1px 8px; border-radius: 999px;
  background: var(--tk-accent); color: var(--tk-accent-contrast);
}
.fp-tag {
  display: inline-block; font-size: .75rem; padding: 1px 8px; border-radius: 999px;
  border: 1px solid var(--tk-border-strong); color: var(--tk-text); margin: 0 4px 4px 0;
}
.fp-tag--mood { background: var(--tk-surface-2); }
.fp-tag--match { background: var(--tk-accent-soft); color: var(--tk-accent); font-weight: 700; }
.fp-near { margin: 4px 0 10px; }
.fp-item__match { font-size: .75rem; color: var(--tk-accent); font-weight: 600; }
.fp-tag--site { background: var(--tk-success-soft); border-color: transparent; }
.fp-tagrow { margin: 0 0 6px; }

/* プレビューの操作 */
.fp-current { font-weight: 600; margin: 0 0 4px; overflow-wrap: anywhere; }
.fp-details { border: 1px solid var(--tk-border); border-radius: var(--tk-radius-sm); padding: 8px 12px; margin: 0 0 12px; }
.fp-details summary { cursor: pointer; font-weight: 600; }
.fp-details[open] summary { margin-bottom: 8px; }
.fp-sliders input[type="range"] { width: 100%; accent-color: var(--tk-accent); }
.fp-sliders output { font-variant-numeric: tabular-nums; }

/* プレビュー本体（実際のWebページに近いレイアウト） */
.fp-preview {
  --fp-heading: sans-serif; --fp-body: sans-serif; --fp-heading-weight: 700;
  --fp-size: 16px; --fp-lh: 1.8; --fp-ls: 0.04em;
  font-family: var(--fp-body); font-size: var(--fp-size); line-height: var(--fp-lh); letter-spacing: var(--fp-ls);
  color: var(--tk-text); background: var(--tk-bg);
  border: 1px solid var(--tk-border); border-radius: var(--tk-radius);
  padding: 20px 16px; overflow-wrap: anywhere;
}
@media (min-width: 768px) { .fp-preview { padding: 32px 36px; } }
.fp-preview p, .fp-preview ul, .fp-preview blockquote { margin: 0 0 1em; }
.fp-h1, .fp-h2, .fp-h3 {
  font-family: var(--fp-heading); font-weight: var(--fp-heading-weight);
  line-height: 1.35; letter-spacing: 0.02em; color: var(--tk-text);
}
.fp-preview .fp-h1 { font-size: 1.75em; margin: 0 0 .6em; }
.fp-preview .fp-h2 { font-size: 1.4em; margin: 1.6em 0 .6em; padding-bottom: .3em; border-bottom: 2px solid var(--tk-accent); }
.fp-preview .fp-h3 { font-size: 1.15em; margin: 1.4em 0 .5em; }
@media (min-width: 768px) {
  .fp-preview .fp-h1 { font-size: 2.25em; }
  .fp-preview .fp-h2 { font-size: 1.6em; }
  .fp-preview .fp-h3 { font-size: 1.25em; }
}
.fp-preview .fp-lead { color: var(--tk-text-muted); font-size: 1.05em; }
.fp-preview .fp-ul { padding-left: 1.4em; }
.fp-preview .fp-ul li { margin-bottom: .3em; }
.fp-preview .fp-quote {
  border-left: 4px solid var(--tk-border-strong); background: var(--tk-surface-2);
  padding: .8em 1em; color: var(--tk-text);
}
.fp-buttons { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 1.4em; }
.fp-btn {
  display: inline-block; padding: .6em 1.6em; border-radius: 999px;
  border: 2px solid var(--tk-accent); color: var(--tk-accent);
  font-family: var(--fp-heading); font-weight: var(--fp-heading-weight); line-height: 1.4;
}
.fp-btn--primary { background: var(--tk-accent); color: var(--tk-accent-contrast); }

/* 詳細 */
.fp-detail { margin-top: var(--tk-gap); }
.fp-detail__grid { display: grid; gap: var(--tk-gap); grid-template-columns: minmax(0, 1fr); }
@media (min-width: 768px) { .fp-detail__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.fp-fontinfo { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 12px; margin: 0 0 12px; }
.fp-fontinfo dt { font-weight: 700; }
.fp-fontinfo dd { margin: 0; overflow-wrap: anywhere; }
.fp-adobe {
  margin-top: 16px; padding: 12px 16px; border: 1px dashed var(--tk-border-strong);
  border-radius: var(--tk-radius-sm); background: var(--tk-surface-2);
}
.fp-adobe__title { font-size: 1rem; margin: 0 0 8px; }
.fp-adobe p { margin: 0 0 8px; }
.fp-detail pre { max-height: 360px; overflow: auto; white-space: pre; }
