/* ブラウザ版の見た目調整。表示内容は変えず、余白・カード・文字の階層だけを整える */

:root {
  --gc-primary: #2B59C3 !important;
  --gc-primary-soft: #EAF0FC !important;
  --gc-text: #1F2937 !important;
  --gc-muted: #6B7280 !important;
  --gc-border: #E2E6EE !important;
  --gc-surface: #FFFFFF !important;
  --gc-page: #F7F8FB !important;
  --gc-radius: 12px !important;
  --gc-shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.06) !important;
}

/* 文字: Windowsは游ゴシックUI、Macはヒラギノ */
[data-testid="stApp"],
[data-testid="stApp"] *:not([data-testid="stIconMaterial"]):not(.material-symbols-rounded) {
  font-family: system-ui, -apple-system, "Segoe UI", "Hiragino Sans", "Hiragino Kaku Gothic ProN",
    "Yu Gothic UI", "Meiryo", sans-serif;
}
[data-testid="stApp"] code, [data-testid="stApp"] pre { font-family: ui-monospace, "Cascadia Code", Consolas, monospace !important; }

/* ページ全体: 薄いグレーの背景、中央寄せで読みやすい幅に */
[data-testid="stApp"], [data-testid="stAppViewContainer"] { background: var(--gc-page) !important; }
[data-testid="stHeader"] { background: transparent !important; }
[data-testid="stDecoration"] { display: none !important; }
[data-testid="stMainBlockContainer"] {
  max-width: 1080px !important;
  padding-top: 2.5rem !important;
  padding-bottom: 4rem !important;
}

/* 見出し(横に出るリンクのマークは不要なので消す) */
[data-testid="stHeaderActionElements"] { display: none !important; }
h1 {
  font-weight: 700 !important;
  letter-spacing: 0.01em !important;
  color: var(--gc-text) !important;
  padding-bottom: 0.25rem !important;
}
h2 {
  font-weight: 700 !important;
  margin-top: 1.5rem !important;
  padding-bottom: 0.4rem !important;
  border-bottom: 1px solid var(--gc-border) !important;
}
h3 { font-weight: 600 !important; color: var(--gc-text) !important; }
[data-testid="stCaptionContainer"] { color: var(--gc-muted) !important; }

/* 入力欄 */
[data-testid="stSelectbox"] label p,
[data-testid="stFileUploader"] label p {
  font-weight: 600 !important;
  color: var(--gc-text) !important;
}
[data-testid="stSelectbox"] > div > div {
  background: var(--gc-surface) !important;
}
[data-testid="stFileUploaderDropzone"] {
  background: var(--gc-surface) !important;
  border: 1.5px dashed #C5CEDD !important;
  border-radius: var(--gc-radius) !important;
  transition: border-color 0.15s, background 0.15s !important;
}
[data-testid="stFileUploaderDropzone"]:hover {
  border-color: var(--gc-primary) !important;
  background: var(--gc-primary-soft) !important;
}

/* ボタン */
[data-testid="stBaseButton-primary"] {
  font-weight: 600 !important;
  padding: 0.55rem 1.4rem !important;
  box-shadow: 0 1px 2px rgba(43, 89, 195, 0.25) !important;
}

/* 進捗の数字(4つのカード) */
[data-testid="stMetric"] {
  background: var(--gc-surface) !important;
  border: 1px solid var(--gc-border) !important;
  border-radius: var(--gc-radius) !important;
  padding: 0.9rem 1rem !important;
  box-shadow: var(--gc-shadow) !important;
  height: 100% !important;
}
[data-testid="stMetricLabel"],
[data-testid="stMetricLabel"] * {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
}
[data-testid="stMetricLabel"] p {
  color: var(--gc-muted) !important;
  font-size: 0.85rem !important;
  font-weight: 600 !important;
}
/* 数字が「26...」のように省略されないよう、幅に応じて縮め、必要なら折り返す */
[data-testid="stMetricValue"],
[data-testid="stMetricValue"] * {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
}
[data-testid="stMetricValue"] {
  font-size: clamp(1.2rem, 2.4vw, 1.9rem) !important;
  line-height: 1.25 !important;
  color: var(--gc-text) !important;
  font-weight: 700 !important;
  font-variant-numeric: tabular-nums !important;
}

/* 進捗バー: 太く・角丸 */
[data-testid="stProgress"] > div > div > div {
  height: 10px !important;
  border-radius: 999px !important;
}
[data-testid="stProgress"] > div > div > div > div {
  border-radius: 999px !important;
}

/* お知らせ(成功・警告・エラー) */
[data-testid="stAlert"] > div {
  border-radius: var(--gc-radius) !important;
}

/* 表・展開ボックスをカード風に */
[data-testid="stDataFrame"] {
  border: 1px solid var(--gc-border) !important;
  border-radius: var(--gc-radius) !important;
  overflow: hidden !important;
  background: var(--gc-surface) !important;
}
[data-testid="stExpander"] details {
  background: var(--gc-surface) !important;
  border: 1px solid var(--gc-border) !important;
  border-radius: var(--gc-radius) !important;
  box-shadow: var(--gc-shadow) !important;
}
[data-testid="stExpander"] summary p { font-weight: 600 !important; }

/* スマホ幅 */
@media (max-width: 640px) {
  [data-testid="stMainBlockContainer"] { padding-top: 1.5rem !important; }
  h1 { font-size: 1.9rem !important; }
  }

/* ファイル選択欄: 英語の「Upload」「200MB per file • XLSX」を日本語の説明に置き換える */
[data-testid="stFileUploaderDropzone"] [data-testid="stBaseButton-secondary"] {
  font-size: 0 !important;
}
[data-testid="stFileUploaderDropzone"] [data-testid="stBaseButton-secondary"] > * {
  display: none !important;
}
[data-testid="stFileUploaderDropzone"] [data-testid="stBaseButton-secondary"]::after {
  content: "ファイルを選択";
  font-size: 0.9rem;
  font-weight: 600;
}
[data-testid="stFileUploaderDropzoneInstructions"] > * {
  display: none !important;
}
[data-testid="stFileUploaderDropzoneInstructions"]::after {
  content: "またはここにファイルをドラッグ＆ドロップ(Excel形式 .xlsx)";
  font-size: 0.85rem;
  color: var(--gc-muted);
}

/* お知らせ・修正履歴: 広い画面では右端に縦長のバーとして固定表示し、履歴を上から積み重ねる。
   狭い画面ではページ下部にカードとして表示 */
.st-key-announcements {
  background: var(--gc-surface) !important;
  border: 1px solid var(--gc-border) !important;
  border-radius: var(--gc-radius) !important;
  padding: 1rem 1.1rem !important;
  gap: 0 !important;
}
.st-key-announcements p { font-size: 0.85rem !important; line-height: 1.6 !important; }
/* 見出し */
.st-key-announcements > div:first-child p {
  font-size: 1rem !important;
  padding-bottom: 0.6rem !important;
}
/* 履歴1件ごとに区切り線 */
.st-key-announcements > div + div {
  border-top: 1px solid var(--gc-border) !important;
  padding: 0.7rem 0 !important;
}
@media (min-width: 1280px) {
  /* 本文は右のバー(300px)を除いた領域の中央に置く */
  [data-testid="stMainBlockContainer"] {
    max-width: min(1080px, calc(100vw - 300px - 4rem)) !important;
    margin-left: max(2rem, calc((100vw - 300px - 1080px) / 2)) !important;
    margin-right: auto !important;
  }
  .st-key-announcements {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 300px !important;
    border: none !important;
    border-left: 1px solid var(--gc-border) !important;
    border-radius: 0 !important;
    padding: 3.5rem 1.4rem 2rem !important;
    overflow-y: auto !important;
    z-index: 1000 !important;
  }
}
