/* ===== あみだくじ画面 ===== */

/* あみだくじ専用の色変数 */
:root {
  --amidakuji-accent: #1f75ff;
  --amidakuji-accent-strong: #0f5fe0;
  --amidakuji-accent-soft: rgba(31, 117, 255, 0.15);
  --amidakuji-accent-soft-strong: rgba(31, 117, 255, 0.24);
  --amidakuji-shadow-accent: 0 12px 26px rgba(31, 117, 255, 0.32);
  --amidakuji-shadow-accent-strong: 0 6px 14px rgba(31, 117, 255, 0.24);
}

/* レイアウト */
main.amidakuji {
  max-width: 420px;
  margin: 0 auto;
  padding: 16px;
}

.amidakuji__section {
  display: flex;
  flex-direction: column;
  gap: 24px;
  padding: 0px 28px;
  background: var(--color-surface);
}

/* レスポンシブ調整（モバイル） */
@media (max-width: 360px) {
  main.amidakuji {
    padding: 12px;
  }
}

/* セクションの表示制御 */
.amidakuji__section--result {
  display: flex;
}

.amidakuji__section--result[hidden] {
  display: none;
}

/* エディター */
.amidakuji__section--editor {
  gap: 20px;
  position: relative;
}

.editor__heading {
  font-size: 18px;
  font-weight: 700;
  text-align: center;
  margin-bottom: 8px;
}

/* フィールド */
.editor__field {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.editor__field-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.editor__label {
  font-size: 16px;
  font-weight: 600;
  color: var(--color-text);
}

.editor__value-display {
  font-size: 16px;
  font-weight: 600;
  color: var(--amidakuji-accent);
  padding: 4px 12px;
  border-radius: var(--radius-pill);
}

/* 入力フィールド */
.editor__input {
  padding: 12px 18px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  background: var(--color-surface-alt);
  font-size: 16px;
  transition: border var(--transition-base), box-shadow var(--transition-base);
}

.editor__input:focus {
  outline: none;
  border-color: var(--amidakuji-accent);
  box-shadow: 0 0 0 4px var(--amidakuji-accent-soft);
}

.editor__input::placeholder {
  color: var(--color-text-muted);
}

.editor__textarea {
  padding: 12px 18px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  background: var(--color-surface-alt);
  font-size: 16px;
  font-family: inherit;
  resize: vertical;
  min-height: 80px;
  transition: border var(--transition-base), box-shadow var(--transition-base);
}

.editor__textarea:focus {
  outline: none;
  border-color: var(--amidakuji-accent);
  box-shadow: 0 0 0 4px var(--amidakuji-accent-soft);
}

.editor__textarea::placeholder {
  color: var(--color-text-muted);
}

/* トグルボタン */
.editor__toggle {
  display: flex;
  background: var(--color-surface-alt);
  border-radius: 20px;
  padding: 2px;
  border: 1px solid var(--color-border);
  position: relative;
  overflow: hidden;
}

.editor__toggle-button {
  padding: 6px 16px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 700;
  background: transparent;
  color: var(--color-text-muted);
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  z-index: 2;
  border: none;
  cursor: pointer;
}

.editor__toggle-button--active {
  background: var(--amidakuji-accent);
  color: #fff;
}

.editor__toggle-button--disabled {
  opacity: 0.4;
  cursor: not-allowed;
  color: var(--color-text-muted);
  background: transparent !important;
  transform: none !important;
  box-shadow: none !important;
}

.editor__toggle-button--disabled:hover {
  color: var(--color-text-muted);
  transform: none;
  box-shadow: none;
  background: transparent !important;
}

/* スライダー */
.editor__slider {
  width: 100%;
  height: 8px;
  border-radius: 4px;
  background: var(--color-border);
  outline: none;
  -webkit-appearance: none;
  appearance: none;
  transition: background var(--transition-base);
}

.editor__slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--amidakuji-accent);
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(31, 117, 255, 0.3);
  transition: all 0.2s ease;
  border: 3px solid #fff;
}

.editor__slider::-webkit-slider-thumb:hover {
  transform: scale(1.15);
  box-shadow: 0 4px 12px rgba(31, 117, 255, 0.4);
}

.editor__slider::-webkit-slider-thumb:active {
  transform: scale(1.05);
}

.editor__slider::-moz-range-thumb {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--amidakuji-accent);
  cursor: pointer;
  border: 3px solid #fff;
  box-shadow: 0 2px 8px rgba(31, 117, 255, 0.3);
  transition: all 0.2s ease;
}

.editor__slider::-moz-range-thumb:hover {
  transform: scale(1.15);
  box-shadow: 0 4px 12px rgba(31, 117, 255, 0.4);
}

.editor__slider::-moz-range-thumb:active {
  transform: scale(1.05);
}

/* エラーメッセージ */
.editor__error-message {
  padding: 12px 18px;
  border-radius: var(--radius-pill);
  background: var(--color-danger-soft);
  border: 1px solid rgba(255, 122, 138, 0.24);
  color: var(--color-danger);
  font-size: 14px;
  font-weight: 500;
  text-align: center;
}

/* 確定ボタン */
.editor__confirm-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 16px 24px;
  border-radius: var(--radius-pill);
  background: var(--amidakuji-accent);
  color: #fff;
  font-size: 16px;
  font-weight: 600;
  text-align: center;
  box-shadow: var(--shadow-raised);
  margin-top: 8px;
}

.editor__confirm-button:hover {
  background: var(--amidakuji-accent-strong);
}

.editor__confirm-button:active {
  transform: translateY(1px);
  box-shadow: var(--amidakuji-shadow-accent-strong);
}

/* 結果画面 */
.result {
  display: flex;
  flex-direction: column;
  gap: 24px;
  align-items: center;
  position: relative;
}

.result__heading {
  font-size: 18px;
  font-weight: 700;
  text-align: center;
  margin-bottom: 8px;
}

/* あみだくじコンテナ（横スクロール可能） */
.result__ladder-container {
  overflow-x: auto;
  overflow-y: hidden;
  width: 100%;
  padding: 10px 0; /* 上下に余白を追加してborderが隠れないように */
  -webkit-overflow-scrolling: touch; /* iOS でのスムーズスクロール */
  scrollbar-width: thin; /* Firefox */
  scrollbar-color: var(--color-border) transparent; /* Firefox */
}

.result__ladder-container::-webkit-scrollbar {
  height: 8px;
}

.result__ladder-container::-webkit-scrollbar-track {
  background: var(--color-surface-alt);
  border-radius: 4px;
}

.result__ladder-container::-webkit-scrollbar-thumb {
  background: var(--color-border);
  border-radius: 4px;
}

.result__ladder-container::-webkit-scrollbar-thumb:hover {
  background: var(--color-text-muted);
}

/* 参加者表示 */
.result__participants {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  margin-bottom: 5px;
  min-width: max-content; /* 内容に応じて最小幅を設定 */
  max-width: 100%; /* 親要素の幅を超えないように制限 */
  padding: 0 25px; /* 左右に余白を追加（border分を考慮） */
  overflow: visible; /* borderが隠れないように */
}

.result__participant {
  padding: 8px 16px;
  border-radius: var(--radius-pill);
  background: var(--color-surface);
  border: 2px solid var(--color-border);
  font-size: 14px;
  font-weight: 500;
  color: var(--color-text);
  transition: all var(--transition-base);
  cursor: pointer;
  position: relative;
  overflow: hidden;
  margin-right: 10px; /* 参加者ボタン間の間隔 */
  flex-shrink: 0; /* 縮小を防ぐ */
  max-width: 120px; /* 最大幅を制限 */
  white-space: nowrap; /* 改行を防ぐ */
  text-overflow: ellipsis; /* 省略記号を表示 */
}

.result__participant--selected {
  background: var(--amidakuji-accent-soft);
  border-color: var(--amidakuji-accent);
  color: var(--amidakuji-accent);
  font-weight: 600;
}

/* あみだくじ図形 */
.result__ladder {
  position: relative;
  width: 100%;
  height: 200px;
  margin: 10px auto;
  min-width: max-content; /* 内容に応じて最小幅を設定 */
}

.result__canvas {
  width: 100%;
  height: 100%;
  display: block;
}

/* 結果表示 */
.result__outcomes {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  margin-top: 5px;
  min-width: max-content; /* 内容に応じて最小幅を設定 */
  max-width: 100%; /* 親要素の幅を超えないように制限 */
  padding: 0 25px; /* 左右に余白を追加（border分を考慮） */
  overflow: visible; /* borderが隠れないように */
}

.result__outcome {
  padding: 8px 16px;
  font-size: 14px;
  font-weight: 500;
  color: var(--color-text);
  min-width: 60px;
  max-width: 100px; /* 最大幅を制限 */
  text-align: center;
  background: none;
  border: none;
  margin-right: 10px; /* 結果ボタン間の間隔 */
  flex-shrink: 0; /* 縮小を防ぐ */
  white-space: nowrap; /* 改行を防ぐ */
  overflow: hidden; /* はみ出しを隠す */
  text-overflow: ellipsis; /* 省略記号を表示 */
}

.result__outcome--highlighted {
  color: var(--amidakuji-accent);
  font-weight: 600;
}

/* 選択された結果 */
.result__selected-result {
  display: flex;
  justify-content: center;
  gap: 8px;
  font-size: 18px;
  font-weight: 500;
  color: var(--color-text);
  margin: 16px 0;
  padding: 0;
  background: none;
  border: none;
}

.result__selected-label {
  font-weight: 700;
}

.result__selected-value {
  color: var(--amidakuji-accent);
  font-weight: 600;
}

/* アクションボタン */
.result__actions {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
}

.result__action-button {
  padding: 12px 24px;
  border-radius: var(--radius-pill);
  background: var(--color-surface);
  border: 2px solid var(--amidakuji-accent);
  font-size: 16px;
  font-weight: 600;
  color: var(--amidakuji-accent);
  transition: all var(--transition-base);
}

.result__action-button:active {
  transform: translateY(1px);
  box-shadow: none;
}

/* シャッフルボタンも通常のボタンと同じスタイル */
