/* 議決権行使システム - 共通スタイル */
* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Yu Gothic", "Meiryo", sans-serif;
  background: #f4f6f8;
  color: #000;       /* 既定で黒文字 */
  line-height: 1.6;
}
.page {
  max-width: 1100px;
  margin: 16px auto;
  padding: 0 16px;
}
.card {
  background: #fff;
  border: 1px solid #c9d4dd;
  border-radius: 14px;
  padding: 24px 28px;
  margin-bottom: 16px;
  box-shadow: 0 2px 8px rgba(0,0,0,.04);
}
.card.wide { max-width: none; }

h1, h2, h3 { color: #2a3a4a; margin-top: 0; }
h2 { border-bottom: 2px solid #2f6e9b; padding-bottom: 6px; }
h3 { margin-top: 18px; }

.menu-title {
  text-align: center;
  font-size: 36px;
  text-decoration: underline;
  margin: 24px 0 48px;
  white-space: nowrap;
}
.menu-card { max-width: 900px; margin: 80px auto; }
.menu-card .btn {
  font-size: 21px;
  padding: 12px 34px;
}

/* 中央配置カード（共通の枠つき） */
.card.centered {
  max-width: 640px;
  margin: 40px auto;
  border: 2px solid #2f6e9b;
  border-radius: 18px;
  padding: 28px 36px;
  box-shadow: 0 4px 18px rgba(0,0,0,.08);
}
.card.centered.wide  { max-width: 960px; }
.card.centered.xwide { max-width: 1200px; }
.card.centered.full  { max-width: none; }

.card.centered .form-grid label {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 12px 0 4px;
}
.card.centered .form-grid input[type="text"],
.card.centered .form-grid input[type="password"] {
  flex: 0 0 240px;
}
.card.centered .hint {
  margin: 0 0 16px 8.5em;
  font-size: 12.5px;
}

.menu-list { font-size: 16px; line-height: 2; padding-left: 1.4em; list-style: none; }
.title-center { text-align: center; }
/* 中央配置カードの直下 h2（画面タイトル）は中央寄せ */
.card.centered > h2 { text-align: center; }
.menu-list a { color: #000; text-decoration: none; border-bottom: 1px solid #ccc; }
.menu-list a:hover { color: #2f6e9b; border-color: #2f6e9b; }

table.data {
  width: 100%;
  border-collapse: collapse;
  margin: 12px 0;
  background: #fff;
}
table.data th, table.data td {
  border: 1px solid #c9d4dd;
  padding: 8px 10px;
  text-align: left;
  vertical-align: top;
  color: #000;
}
table.data th { background: #2f6e9b; color: #fff; font-weight: 600; }
table.data tbody tr:nth-child(even) td { background: #f1f4f7; }
table.data.editable input { width: 100%; border: 1px solid #d0d0d0; padding: 4px 6px; color: #000; font-size: 14px; }

/* ウィンドウ枠固定: ヘッダー行 */
.scroll-xy table.data thead th {
  position: sticky; top: 0; z-index: 3;
}
/* ウィンドウ枠固定: A列（1列目） */
.scroll-xy table.data th.freeze-col,
.scroll-xy table.data td.freeze-col {
  position: sticky; left: 0; z-index: 2;
}
.scroll-xy table.data td.freeze-col { background: #fff; }
.scroll-xy table.data tbody tr:nth-child(even) td.freeze-col { background: #f1f4f7; }
/* ヘッダー行×A列の交差セル */
.scroll-xy table.data thead th.freeze-col { z-index: 4; }

.scroll-x { overflow-x: auto; width: 100%; }
.scroll-xy {
  overflow: auto;
  width: 100%;
  max-height: 70vh;
  border: 1px solid #c9d4dd;
}
.scroll-xy table.data { width: max-content; min-width: 100%; }
.scroll-xy table.data th,
.scroll-xy table.data td { white-space: nowrap; }
.scroll-xy::-webkit-scrollbar { width: 14px; height: 14px; }
.scroll-xy::-webkit-scrollbar-track { background: #e0e0e0; }
.scroll-xy::-webkit-scrollbar-thumb { background: #888; border-radius: 7px; border: 2px solid #e0e0e0; }
.scroll-xy::-webkit-scrollbar-thumb:hover { background: #555; }

.vote-table .detail-col { width: 140px; text-align: center; }

.btn {
  display: inline-block;
  padding: 8px 22px;
  margin: 6px 4px;
  border: 1px solid #2f6e9b;
  border-radius: 8px;
  cursor: pointer;
  font-size: 14px;
  text-decoration: none;
  color: #000;     /* 黒文字 */
  background: #cfe1ee;
}
.btn-primary { background: #6699c0; color: #fff; }
.btn-primary { color: #000; }   /* 共通ルール: 黒文字 */
.btn-secondary { background: #e6ecef; }
.btn:hover { filter: brightness(0.95); }

.row-center { display: flex; justify-content: center; gap: 12px; align-items: center; margin: 16px 0; }
.row-end { display: flex; justify-content: flex-end; gap: 12px; align-items: center; margin: 16px 0; }
.row-inline { display: inline-flex; gap: 8px; align-items: center; margin: 0; }
.row-end.small { font-size: 12px; color: #555; }

form.form-grid label { display: block; margin: 8px 0; }
form.form-grid input[type="text"], form.form-grid input[type="password"] {
  width: 220px; padding: 6px; border: 1px solid #999; color: #000;
}
.hint { color: #555; font-size: 13px; margin: 4px 0 14px; padding-left: 8px; }

.messages { margin-bottom: 12px; }
.msg {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 14px; border-radius: 8px; margin-bottom: 6px;
  background: #fdecec;
}
.msg-error { color: #c0392b; border: 1px solid #c0392b; background: #fdecec; }
.msg-error span { font-weight: bold; }
.msg-info { color: #1a4f7a; border: 1px solid #1a4f7a; background: #e8f1f8; }
.msg .ok {
  margin-left: auto; padding: 4px 14px; border: 1px solid currentColor;
  border-radius: 6px; background: #fff; cursor: pointer; color: inherit;
}

.modal {
  border: 1px solid #c9d4dd; border-radius: 12px;
  padding: 16px; margin: 18px auto; max-width: 520px;
  background: #f7fbfd; text-align: center;
}

.testbar {
  background: #fff4d6; border: 1px solid #d4a040;
  padding: 6px 12px; border-radius: 8px; margin-bottom: 12px;
  text-align: center; font-size: 14px;
}

.proposal-list { font-size: 15px; }
.proposal-list li { margin: 4px 0; }

.done { color: #1a7f37; font-weight: bold; }
.muted { color: #888; }

input[type="text"], input[type="password"] {
  font-size: 14px;
}
