/* 正規表現クイズ — スタイルはプラグイン内で完結
 * テーマが --bg-elevated 等を定義していれば自動で合わせる（fallback 付き）
 */

.rq-tool {
  --rq-bg: var(--bg-elevated, #fafbfc);
  --rq-surface: var(--surface, #ffffff);
  --rq-border: var(--border-strong, #d9dee7);
  --rq-radius: var(--radius-sm, 8px);
  --rq-text: var(--text-body, #1f2937);
  --rq-text-heading: var(--text-heading, #111827);
  --rq-text-muted: var(--text-muted, #5f6b7a);
  --rq-accent: var(--accent, #ff6b4a);
  --rq-accent-hover: var(--cat-coral-2, #e85d3f);
  --rq-accent-2: var(--accent-2, #38bdf8);
  --rq-focus-ring: rgba(56, 189, 248, 0.22);
  --rq-accent-soft: rgba(56, 189, 248, 0.07);
  --rq-accent-soft-strong: rgba(56, 189, 248, 0.12);
  --rq-correct: var(--cat-mint-2, #059669);
  --rq-correct-border: var(--cat-mint, #34d399);
  --rq-correct-bg: rgba(52, 211, 153, 0.12);
  --rq-correct-fg: #047857;
  --rq-wrong-border: #f87171;
  --rq-wrong-bg: rgba(248, 113, 113, 0.12);
  --rq-wrong-fg: #dc2626;

  margin: 1.75em 0;
  padding: 1.25em 1.35em;
  border: 1px solid var(--rq-border);
  border-radius: var(--rq-radius);
  background: var(--rq-bg);
  color: var(--rq-text);
}

.rq-setup {
  display: grid;
  gap: 1em;
  max-width: 480px;
}

.rq-setup-row label {
  display: block;
  margin-bottom: 0.4em;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--rq-text-heading);
}

.rq-setup-row select {
  width: 100%;
  padding: 0.6em 0.75em;
  border: 1px solid var(--rq-border);
  border-radius: var(--rq-radius);
  font-size: 1rem;
  box-sizing: border-box;
  background: var(--rq-surface);
  color: var(--rq-text);
}

.rq-setup-row select:focus {
  outline: none;
  border-color: var(--rq-accent-2);
  box-shadow: 0 0 0 2px var(--rq-focus-ring);
}

.rq-button {
  appearance: none;
  border: 0;
  border-radius: var(--rq-radius);
  padding: 0.7em 1.25em;
  background: var(--rq-accent);
  color: #fff;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: none;
  width: auto;
  margin: 0;
  transition: background 0.15s ease;
}

.rq-button:hover {
  background: var(--rq-accent-hover);
  color: #fff;
}

.rq-button:disabled {
  opacity: 0.65;
  cursor: not-allowed;
}

.rq-header {
  display: flex;
  flex-wrap: wrap;
  gap: 1em;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.25em;
}

.rq-button-secondary {
  background: var(--rq-surface);
  color: var(--rq-text-heading);
  border: 1px solid var(--rq-border);
  flex-shrink: 0;
}

.rq-button-secondary:hover {
  background: var(--rq-bg);
  color: var(--rq-text-heading);
  border-color: var(--rq-accent-2);
}

.rq-progress-wrap {
  flex: 1;
  min-width: 180px;
}

.rq-progress-bar {
  height: 6px;
  border-radius: 999px;
  background: var(--rq-border);
  overflow: hidden;
}

.rq-progress-fill {
  height: 100%;
  width: 0;
  background: var(--rq-accent-2);
  border-radius: 999px;
  transition: width 0.25s ease;
}

.rq-progress-text {
  display: block;
  margin-top: 0.35em;
  font-size: 0.875rem;
  color: var(--rq-text-muted);
}

.rq-score {
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--rq-text-muted);
}

.rq-question-card {
  padding: 1.25em;
  border: 1px solid var(--rq-border);
  border-radius: var(--rq-radius);
  background: var(--rq-surface);
}

.rq-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5em;
  margin-bottom: 0.75em;
}

.rq-category-badge,
.rq-difficulty-badge {
  display: inline-block;
  padding: 0.2em 0.65em;
  border-radius: 4px;
  font-size: 0.75rem;
  font-weight: 600;
}

.rq-category-badge {
  background: var(--rq-accent-soft);
  color: var(--rq-text-heading);
}

.rq-category-badge.is-cat-basic { border-left: 3px solid var(--rq-accent); }
.rq-category-badge.is-cat-class { border-left: 3px solid var(--rq-accent-2); }
.rq-category-badge.is-cat-quantifier { border-left: 3px solid #a78bfa; }
.rq-category-badge.is-cat-anchor { border-left: 3px solid var(--rq-correct-border); }
.rq-category-badge.is-cat-group { border-left: 3px solid #fbbf24; }
.rq-category-badge.is-cat-advanced { border-left: 3px solid #f472b6; }
.rq-category-badge.is-cat-practice { border-left: 3px solid #2dd4bf; }

.rq-difficulty-badge {
  background: var(--rq-bg);
  color: var(--rq-text-muted);
  border: 1px solid var(--rq-border);
}

.rq-difficulty-badge.is-easy {
  background: var(--rq-correct-bg);
  color: var(--rq-correct);
  border-color: transparent;
}

.rq-difficulty-badge.is-medium {
  background: rgba(251, 191, 36, 0.12);
  color: #b45309;
  border-color: transparent;
}

.rq-difficulty-badge.is-hard {
  background: var(--rq-wrong-bg);
  color: var(--rq-wrong-fg);
  border-color: transparent;
}

.rq-question {
  margin: 0 0 1em;
  font-size: 1.1rem;
  line-height: 1.55;
  color: var(--rq-text-heading);
}

.rq-options {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.65em;
}

/* テーマ entry-content の ul 左余白（margin-left: 1.6em 等）を打ち消す */
body.theme-abataz .main .entry-content.cf .rq-tool ul.rq-options {
  margin: 0;
  padding: 0;
}

body.theme-abataz .main .entry-content.cf .rq-tool .rq-options > .rq-option {
  margin: 0;
  padding: 0;
  list-style: none;
}

.rq-option {
  margin: 0;
}

.rq-option-btn {
  appearance: none;
  display: block;
  width: 100%;
  padding: 0.75em 1em;
  border: 1px solid var(--rq-border);
  border-radius: var(--rq-radius);
  background: var(--rq-bg);
  color: var(--rq-text);
  font-size: 1rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  text-align: left;
  cursor: pointer;
  box-shadow: none;
  transform: none;
  letter-spacing: normal;
  margin: 0;
  transition: border-color 0.15s, background 0.15s, opacity 0.15s;
}

.rq-tool .rq-button {
  appearance: none;
  box-shadow: none;
  transform: none;
  letter-spacing: normal;
  margin: 0;
}

.rq-option-btn:hover:not(:disabled) {
  border-color: var(--rq-accent-2);
  background: var(--rq-accent-soft);
}

.rq-option-btn.is-selected:not(:disabled) {
  border-color: var(--rq-accent-2);
  background: var(--rq-accent-soft-strong);
}

.rq-options.is-answered {
  pointer-events: none;
}

.rq-options.is-answered .rq-option-btn {
  cursor: default;
}

.rq-options.is-answered .rq-option-btn.is-idle,
.rq-option-btn:disabled.is-idle {
  opacity: 0.5;
  background: var(--rq-bg) !important;
  color: var(--rq-text-muted) !important;
  border-color: var(--rq-border) !important;
  box-shadow: none !important;
  transform: none !important;
}

.rq-option-btn:disabled:hover,
.rq-option-btn:disabled:focus,
.rq-option-btn:disabled:focus-visible {
  outline: none;
  box-shadow: none !important;
  transform: none !important;
}

.rq-option-btn:disabled:not(.is-correct):not(.is-wrong):hover {
  background: var(--rq-bg) !important;
  border-color: var(--rq-border) !important;
}

.rq-option-btn.is-correct {
  border-color: var(--rq-correct-border);
  background: var(--rq-correct-bg);
  color: var(--rq-correct-fg);
}

.rq-option-btn.is-wrong {
  border-color: var(--rq-wrong-border);
  background: var(--rq-wrong-bg);
  color: var(--rq-wrong-fg);
}

.rq-option-btn:disabled {
  cursor: default;
}

.rq-feedback {
  min-height: 1.4em;
  margin-top: 1em;
  font-weight: 700;
  font-size: 1rem;
}

.rq-feedback.is-correct {
  color: var(--rq-correct);
}

.rq-feedback.is-incorrect {
  color: var(--rq-wrong-fg);
}

.rq-explanation {
  margin-top: 0.75em;
  padding: 0.85em 1em;
  border-left: 3px solid var(--rq-accent-2);
  border-radius: 0 var(--rq-radius) var(--rq-radius) 0;
  background: var(--rq-bg);
  font-size: 0.925rem;
  line-height: 1.6;
  color: var(--rq-text);
}

.rq-actions {
  margin-top: 1em;
}

.rq-result {
  padding: 1.5em;
  border: 1px solid var(--rq-border);
  border-radius: var(--rq-radius);
  background: var(--rq-surface);
  text-align: center;
}

.rq-result-title {
  margin: 0 0 0.5em;
  font-size: 1.35rem;
  color: var(--rq-text-heading);
}

.rq-result-score {
  margin: 0 0 1em;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--rq-text-heading);
}

.rq-result-breakdown {
  margin-bottom: 1.25em;
  text-align: left;
  font-size: 0.925rem;
  color: var(--rq-text);
}

.rq-result-item {
  padding: 0.5em 0;
  border-bottom: 1px solid var(--rq-border);
}

.rq-result-item.is-wrong {
  color: var(--rq-wrong-fg);
}

.rq-tester {
  margin-top: 1.5em;
  padding-top: 1.25em;
  border-top: 1px solid var(--rq-border);
}

.rq-tester summary {
  cursor: pointer;
  font-weight: 700;
  color: var(--rq-text-heading);
}

.rq-tester-body {
  margin-top: 1em;
  display: grid;
  gap: 0.85em;
  max-width: 560px;
}

.rq-tester-row label {
  display: block;
  margin-bottom: 0.35em;
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--rq-text-heading);
}

.rq-tester-row :is(input, textarea) {
  width: 100%;
  padding: 0.6em 0.75em;
  border: 1px solid var(--rq-border);
  border-radius: var(--rq-radius);
  font-size: 0.95rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  box-sizing: border-box;
  background: var(--rq-surface);
  color: var(--rq-text);
}

.rq-tester-row :is(input, textarea):focus {
  outline: none;
  border-color: var(--rq-accent-2);
  box-shadow: 0 0 0 2px var(--rq-focus-ring);
}

.rq-test-result {
  min-height: 1.4em;
  font-size: 0.925rem;
}

.rq-test-result.is-match {
  color: var(--rq-correct);
}

.rq-test-result.is-no-match {
  color: var(--rq-text-muted);
}

.rq-test-result.is-error {
  color: var(--rq-wrong-fg);
}

.rq-test-matches {
  margin: 0.5em 0 0;
  padding-left: 1.25em;
}

.rq-test-matches li {
  margin: 0.25em 0;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

@media (max-width: 767px) {
  .rq-tool {
    padding: 1em 0.75em;
  }

  .rq-question-card {
    padding: 1em 0.75em;
  }

  .rq-option-btn {
    padding: 0.7em 0.65em;
  }

  .rq-header {
    gap: 0.75em;
  }
}
