*{box-sizing:border-box}
html,body{margin:0;padding:0;background:#f3f4f6;color:#111;font-family:"Noto Sans JP","Yu Gothic",Meiryo,sans-serif}
header{background:#111827;color:#fff;padding:14px 18px;position:relative}
header h1{margin:0;font-size:20px}
main{max-width:1180px;margin:0 auto;padding:16px}
/* メインナビゲーション：大会進行・試合結果・試合入力を同一サイズ／同一デザインに統一 */
nav{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:18px}
nav button{
  border:0;
  border-radius:16px;
  min-height:68px;
  padding:16px 28px;
  background:#d1d5db;
  color:#111;
  font-size:20px;
  font-weight:500;
  line-height:1.2;
  white-space:nowrap;
}
/* 主要3タブは同じ幅・高さ。現在位置だけ濃紺にする */
nav button:nth-child(1),
nav button:nth-child(2),
nav button:nth-child(3){
  flex:1 1 0;
  min-width:190px;
}
nav button:nth-child(4){
  min-width:130px;
}
nav button.active{background:#111827;color:#fff}
#inputNav{margin-left:auto}
nav .nav-hidden{display:none}
@media(max-width:760px){
  nav{gap:10px}
  nav button{min-height:60px;padding:14px 20px;font-size:18px;border-radius:14px}
  nav button:nth-child(1),nav button:nth-child(2),nav button:nth-child(3){min-width:0;flex:1 1 calc(50% - 5px)}
  nav button:nth-child(4){min-width:0;flex:1 1 calc(50% - 5px)}
  #inputNav{margin-left:0}
}
section{display:none}.show{display:block}
.card{background:#fff;border-radius:12px;padding:14px;margin-bottom:14px;box-shadow:0 1px 4px #0002}

/* 大会進行カード：試合結果に合わせて角を直角にする */
.tournament-card{
  border-radius:0;
  overflow:hidden;
}

.notice{padding:10px;border:1px solid #fed7aa;background:#fff7ed;border-radius:8px}
button{cursor:pointer}
.match{border:1px solid #ddd;border-radius:10px;background:#fff;padding:12px;margin:10px 0}
.matchgrid{display:grid;grid-template-columns:70px 1fr 100px 1fr;gap:10px;align-items:center}
.teambox{border:1px solid #ddd;border-radius:8px;padding:10px}
.preview{font-size:22px;font-weight:700;background:#f3f4f6;border-radius:8px;padding:8px;min-height:44px;letter-spacing:.08em}
.buttons{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.buttons button{padding:8px 11px;border:1px solid #aaa;border-radius:7px;background:#fff}
.buttons .foul{color:#a16207;border-color:#d97706}
.buttons .end{color:#1d4ed8;border-color:#2563eb}
.correction{display:flex;gap:6px;justify-content:center;margin-top:8px;flex-wrap:wrap}
.correction button{padding:6px 9px;border:1px solid #aaa;background:#fff;border-radius:7px}
.muted{color:#666;font-size:13px}.red{color:#d00}
hr{border:0;border-top:1px solid #ddd}

/* 試合結果
   参照画像の構造をHTMLから組み直したもの。
   列：チーム名 | 先鋒 | 次鋒 | 中堅 | 副将 | 大将 | 本数/勝数
   行：見出し | A選手名 | A記録 | B記録 | B選手名
*/
.public-scroll{overflow:auto;padding:2px 0 10px}
.scoreboard{
  width:660px;
  height:550px;
  margin:0 auto;
  display:grid;
  grid-template-columns:76px repeat(5,96px) 104px;
  grid-template-rows:30px 162px 96px 96px 166px;
  border-left:2px solid #222;
  border-top:2px solid #222;
  background:#fff;
}
.sb{
  border-right:2px solid #222;
  border-bottom:2px solid #222;
  position:relative;
  overflow:hidden;
  background:#fff;
}
.sb.head{
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:800;
  font-size:17px;
  white-space:nowrap;
}
.sb.team{
  display:flex;
  align-items:center;
  justify-content:center;
}
.sb.team .v{
  writing-mode:vertical-rl;
  text-orientation:upright;
  font-weight:800;
  font-size:27px;
  letter-spacing:.12em;
  line-height:1.25;
}
.sb.name{
  display:flex;
  align-items:center;
  justify-content:center;
}
.sb.name .v{
  writing-mode:vertical-rl;
  text-orientation:mixed;
  font-weight:800;
  font-size:26px;
  letter-spacing:.14em;
  line-height:1.15;
}
.sb.score{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:4px;
}
.score-inner{
  width:100%;
  height:100%;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
}
.score-list{
  position:absolute;
  left:0;
  right:0;
  top:4px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  gap:1px;
  min-height:1px;
  padding:0;
}
.score-item{
  width:38px;
  height:31px;
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 31px;
}
.vscore{
  font-weight:800;
  font-size:20px;
  line-height:1;
  color:#111;
}
.redscore{
  font-weight:800;
  font-size:20px;
  line-height:1;
  color:#e00000;
}
.mark-circle{
  width:30px;
  height:30px;
  border:3px solid #e00000;
  border-radius:50%;
  color:#111;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:800;
  font-size:20px;
  line-height:1;
}
.mark-x{
  font-size:66px;
  font-weight:300;
  line-height:1;
  transform:scaleX(.7);
  color:#111;
}

/* 反則は必ず横一列。下詰め。 */
.foul-triangle{
  position:absolute;
  left:50%;
  bottom:3px;
  transform:translateX(-50%);
  display:flex;
  flex-direction:row;
  align-items:flex-end;
  justify-content:center;
  gap:2px;
  width:100%;
  height:15px;
  color:#e00000;
  font-size:15px;
  line-height:15px;
  font-weight:800;
  writing-mode:horizontal-tb;
  white-space:nowrap;
}
.foul-triangle span{
  display:block;
  width:14px;
  height:15px;
  line-height:15px;
  flex:0 0 14px;
}

/* 本数/勝数は分数のように、数字は正立 */
.total{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 8px;
}
.total .vtotal{
  width:100%;
  height:78px;
  display:grid;
  grid-template-rows:1fr 2px 1fr;
  align-items:center;
  justify-items:center;
  color:#e00000;
  font-weight:900;
  font-size:29px;
  line-height:1;
}
.total .vtotal .num,
.total .vtotal .den{
  font-family:Arial,"Noto Sans JP",sans-serif;
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1;
  writing-mode:horizontal-tb;
  text-orientation:mixed;
  transform:none;
}
.total .vtotal .bar{
  width:54px;
  border-top:2px solid #e00000;
  height:0;
}
.admin-entry{float:right;background:#374151;color:#fff;border:0;border-radius:7px;padding:7px 10px;font-size:12px}
.admin-badge{display:none;float:right;background:#065f46;color:#fff;border-radius:7px;padding:7px 10px;font-size:12px}
#settings{display:none}#settings.show{display:block}
.csv{border-collapse:collapse;width:100%}
.csv td,.csv th{border:1px solid #ccc;padding:7px;text-align:left}
@media(max-width:760px){.scoreboard{margin-left:0}}

.bye-mark-red{
  color:#e60000 !important;
  font-weight:700;
}

/* 選手別・記録用紙型の試合入力UI */
.input-mode-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.input-mode-bar button{border:1px solid #9ca3af;background:#fff;border-radius:8px;padding:8px 12px}
.input-mode-bar button.active{background:#111827;color:#fff;border-color:#111827}
.input-paper{background:#fff;border:1px solid #d1d5db;border-radius:10px;margin:12px 0;overflow:hidden}
.input-paper-head{display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;padding:9px;border-bottom:1px solid #222;background:#fafafa}
.input-sides{position:relative;}
/* 試合入力の引き分けはA・B両選手の領域の中央に通常サイズのXを1つ表示 */
.draw-x{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:70px;height:70px;display:flex;align-items:center;justify-content:center;font-size:64px;font-weight:300;line-height:1;color:#111;z-index:5;pointer-events:none;}
.input-side{display:grid;grid-template-columns:minmax(170px,1fr) 62px 90px;gap:10px;align-items:stretch;padding:12px;border-bottom:1px solid #ddd}
.input-side:last-of-type{border-bottom:0}
.input-controls{display:grid;grid-template-columns:repeat(3,minmax(54px,1fr));grid-template-rows:repeat(2,48px);gap:6px;align-content:start}
.input-controls button{font-size:21px;font-weight:800;border:1px solid #9ca3af;background:#fff;border-radius:5px;touch-action:manipulation}
.input-controls button.score-dot{color:#e00000}
.input-controls button.foul-btn{color:#e00000;font-size:20px}
.input-controls button:active{transform:scale(.97);background:#f3f4f6}
.input-name-wrap{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;min-height:112px;gap:6px}
.input-name{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;letter-spacing:.12em;min-height:88px}
.input-name.absent{color:#9ca3af;font-size:18px}
.name-change{font-size:11px;padding:4px 7px;border:1px solid #9ca3af;border-radius:6px;background:#fff;white-space:nowrap;writing-mode:horizontal-tb}
.name-change:hover{background:#f3f4f6}
.input-record{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;min-height:112px;gap:3px;padding-top:2px}
.input-record .record-item{font-size:23px;font-weight:800;line-height:1.05;min-height:27px;display:flex;align-items:center;justify-content:center}
.input-record .record-item.dot{color:#e00000}
.input-record .record-item.first{border:2px solid #e00000;border-radius:50%;width:31px;height:31px}
.input-record .record-item.reflected{color:#111}
.input-foul-count{font-size:12px;color:#666;margin-top:4px}
.input-actions{display:flex;gap:7px;justify-content:center;flex-wrap:wrap;padding:10px;border-top:1px solid #ddd}
.input-actions button{padding:8px 14px;border-radius:7px;border:1px solid #9ca3af;background:#fff}
.input-actions .end{border-color:#2563eb;color:#1d4ed8}
.input-actions .reset{border-color:#dc2626;color:#b91c1c}
.input-actions .undo{border-color:#6b7280}
.input-side .disabled{opacity:.45;pointer-events:none}
@media(max-width:600px){.input-side{grid-template-columns:minmax(135px,1fr) 48px 72px;gap:6px;padding:8px}.input-controls{grid-template-columns:repeat(3,minmax(43px,1fr));grid-template-rows:repeat(2,46px);gap:5px}.input-controls button{font-size:19px}.input-name{font-size:21px}.input-record .record-item{font-size:20px}}

/* 大会進行：部門・予選／決勝タブ */
.tournament-card{padding:0;overflow:hidden}
.tournament-card h2{margin:0;padding:18px 20px 14px}
.division-tabs{display:grid;grid-template-columns:repeat(3,1fr);border-top:2px solid #222;border-bottom:2px solid #222;background:#fff}
.division-tab,.phase-tab{border:0;background:#fff;color:#111;font-weight:800;cursor:pointer}
.division-tab{min-height:58px;padding:12px 8px;font-size:17px;border-right:2px solid #222}
.division-tab:last-child{border-right:0}
.division-tab.active{background:#111827;color:#fff}
.phase-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:2px solid #222;background:#fff}
.phase-tab{min-height:62px;padding:12px;font-size:20px;border-right:2px solid #222}
.phase-tab:last-child{border-right:0}
.phase-tab.active{background:#111827;color:#fff}
.tournament-panel{padding:18px 20px 24px;min-height:420px}
.tournament-panel-title{font-size:18px;font-weight:800;margin:0 0 16px}
.placeholder-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.placeholder-box{border:1px solid #bbb;border-radius:8px;padding:18px;min-height:150px;background:#fff}
.placeholder-box h4{margin:0 0 12px;font-size:17px}
.league-list{display:grid;gap:12px}
.league-box{border:1px solid #bbb;border-radius:8px;padding:14px}
.league-box h4{margin:0 0 10px}
.league-teams{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.league-team{border:1px solid #ddd;border-radius:6px;padding:10px;text-align:center;background:#f9fafb}
.final-table{width:100%;border-collapse:collapse}
.final-table th,.final-table td{border:1px solid #bbb;padding:9px;text-align:center}
.final-table th{background:#f3f4f6}

/* 予選リーグの三角形対戦図 */
.prelim-grid{display:flex;flex-direction:column;gap:22px}
.prelim-block{display:grid;grid-template-columns:minmax(250px,1fr) minmax(250px,1fr);gap:20px;align-items:center}
.league-visual{position:relative;height:205px;background:#fff}
.league-visual svg{width:100%;height:100%;display:block;overflow:visible}
.league-edge{stroke:#111;stroke-width:4;fill:none;cursor:pointer;stroke-linecap:round;transition:stroke .12s,stroke-width .12s}
.league-edge:hover,.league-edge:focus{stroke:#e00000;stroke-width:6;outline:none}
.league-edge-hit{stroke:transparent;stroke-width:18;fill:none;cursor:pointer}
.league-label{font-size:16px;font-weight:700;fill:#111;pointer-events:none}
.league-label.top{text-anchor:middle}
.league-label.left{text-anchor:end}
.league-label.right{text-anchor:start}
.league-table{
  width:100%;
  border-collapse:collapse;
  background:#fff;
  table-layout:fixed;
}
.league-table th,.league-table td{
  border:1px solid #999;
  padding:7px 8px;
  text-align:center;
  height:44px;
  box-sizing:border-box;
  vertical-align:middle;
}
.league-table th{
  font-weight:700;
  background:#fafafa;
  height:42px;
}
.league-table th:nth-child(1),
.league-table td:nth-child(1){width:48%;text-align:center}
.league-table th:nth-child(2),
.league-table td:nth-child(2),
.league-table th:nth-child(3),
.league-table td:nth-child(3),
.league-table th:nth-child(4),
.league-table td:nth-child(4),
.league-table th:nth-child(5),
.league-table td:nth-child(5){width:13%}
.league-table td:first-child{
  text-align:center;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.public-match-selector{margin:-2px 0 12px}
.public-match-select{display:block;width:100%;max-width:900px;margin:0 auto;border:1px solid #9ca3af;border-radius:10px;background:#fff;color:#111;padding:12px 42px 12px 14px;font-size:17px;font-weight:700;line-height:1.4;appearance:auto}
.public-match-select:focus{outline:2px solid #111827;outline-offset:1px}
.public-match-title{text-align:center;font-weight:800;font-size:19px;margin:4px 0 12px}
.input-match-selector{margin:10px 0 14px}
@media(max-width:760px){.prelim-block{grid-template-columns:1fr;gap:10px}.league-visual{height:205px}.league-table{font-size:14px}.league-table th,.league-table td{height:42px;padding:6px 5px}}

@media(max-width:600px){
 .division-tab{font-size:14px;min-height:54px}
 .phase-tab{font-size:18px}
 .tournament-panel{padding:14px}
 .placeholder-grid{grid-template-columns:1fr}
 .league-teams{grid-template-columns:1fr}
}

/* 試合結果・試合入力の部門／リーグタブ
   大会進行と同じ、3列＋2列の大きなタブUIに統一 */
.context-tabs{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border-top:2px solid #222;
  border-bottom:2px solid #222;
  background:#fff;
  margin:0;
  overflow:hidden;
}
.context-tabs .context-tab{
  min-height:58px;
  padding:12px 8px;
  border:0;
  border-right:2px solid #222;
  border-radius:0;
  background:#fff;
  color:#111;
  font-size:17px;
  font-weight:800;
  white-space:nowrap;
  cursor:pointer;
}
.context-tabs .context-tab:last-child{border-right:0}
.context-tabs .context-tab.active{background:#111827;color:#fff}
.context-tabs.phase-context-tabs{
  grid-template-columns:1fr 1fr;
  border-top:0;
  border-bottom:2px solid #222;
}
.context-tabs.phase-context-tabs .context-tab{
  min-height:62px;
  padding:12px;
  font-size:20px;
}
.context-tabs.phase-context-tabs .context-tab.active{background:#111827;color:#fff}

@media(max-width:600px){
  .context-tabs .context-tab{font-size:14px;min-height:54px;padding:10px 5px}
  .context-tabs.phase-context-tabs .context-tab{font-size:18px;min-height:58px}
}


/* 試合結果の部門・リーグタブを試合入力と完全に同じ寸法・UIにする */
#public .public-match-selector{margin:0 0 14px}
#public .context-tabs{width:100%;margin:0}
#public .context-tabs .context-tab{border-radius:0}
#public .public-score-card{margin-top:0}


/* 試合結果：個人戦の勝者を大きな赤丸で明示 */
.sb.score .score-inner.bout-winner::after{
  content:"";
  position:absolute;
  left:50%;
  top:3px;
  width:70px;
  height:70px;
  transform:translateX(-50%);
  border:4px solid #e00000;
  border-radius:50%;
  box-sizing:border-box;
  z-index:4;
  pointer-events:none;
}
.sb.score .score-inner.bout-winner .score-list{
  z-index:3;
}

/* 試合結果：引き分けは両チームの記録欄を跨ぐ大きな× */
.public-draw-x{
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
  z-index:9;
  pointer-events:none;
  overflow:visible;
  background:transparent;
  font-size:92px;
  font-weight:400;
  line-height:1;
  color:#111;
  transform:scaleX(.78);
  transform-origin:center;
}


/* 大会進行：リーグ表は見出し・内容とも全て中央揃え */
.league-table th,
.league-table td{
  text-align:center !important;
}


/* 大会進行：本数と順位の間を二重罫線にする */
.league-table th:nth-child(4),
.league-table td:nth-child(4){
  border-right:4px double #666 !important;
}
.league-table th:nth-child(5),
.league-table td:nth-child(5){
  border-left:0 !important;
}


/* 試合入力：予選リーグ / トーナメント作成 / 決勝リーグ入力 */
#input .phase-context-tabs{
  grid-template-columns:repeat(3,1fr);
}
#input .phase-context-tabs .context-tab{
  white-space:nowrap;
}
.tournament-create-panel{
  margin-top:14px;
  padding:18px;
  border:1px solid #d1d5db;
  border-radius:10px;
  background:#fff;
}
.tournament-create-panel h3{
  margin:0 0 10px;
  font-size:20px;
}
.tournament-create-panel .muted{
  line-height:1.7;
}
@media(max-width:600px){
  #input .phase-context-tabs .context-tab{
    font-size:14px;
    padding:10px 4px;
  }
}


/* ===== トーナメント作成：縦型 ===== */
.tournament-create-panel{
  overflow:hidden;
}
.tournament-create-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:14px;
}
.tournament-create-head h3{margin:0 0 5px}
.draw-status{
  flex:0 0 auto;
  padding:7px 11px;
  border:1px solid #cbd5e1;
  border-radius:999px;
  background:#f8fafc;
  font-size:13px;
  font-weight:800;
  white-space:nowrap;
}
.qualifier-summary{
  margin:0 0 14px;
  padding:10px 12px;
  border:1px solid #d1d5db;
  border-radius:8px;
  background:#f8fafc;
  font-size:13px;
  line-height:1.7;
}
.qualifier-summary b{color:#111827}

.bracket-scroll{
  overflow-x:auto;
  overflow-y:hidden;
  padding:8px 2px 16px;
  -webkit-overflow-scrolling:touch;
}
.draw-bracket.vertical{
  position:relative;
  width:1340px;
  height:980px;
  min-width:1340px;
  border:1px solid #d1d5db;
  border-radius:10px;
  background:#fff;
}
.bracket-round-label{
  position:absolute;
  left:10px;
  width:88px;
  height:28px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid #9ca3af;
  border-radius:5px;
  background:#f8fafc;
  font-size:12px;
  font-weight:900;
  color:#111827;
  z-index:4;
}
.bracket-round-label.r1{top:660px}
.bracket-round-label.qf{top:520px}
.bracket-round-label.sf{top:380px}
.bracket-round-label.fn{top:240px}
.bracket-round-label.ch{top:100px}

.bracket-lines{
  position:absolute;
  inset:0;
  width:1340px;
  height:980px;
  z-index:0;
  pointer-events:none;
}
.bracket-lines path{
  fill:none;
  stroke:#4b5563;
  stroke-width:2;
  vector-effect:non-scaling-stroke;
}

.team-leaf{
  position:absolute;
  top:724px;
  width:58px;
  height:198px;
  z-index:3;
}
.vertical-team-picker{
  position:relative;
  width:58px;
  height:198px;
  border:1px solid #6b7280;
  border-radius:6px;
  background:#fff;
  box-sizing:border-box;
  cursor:pointer;
}
.vertical-team-name{
  position:absolute;
  inset:24px 6px 28px 6px;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  writing-mode:vertical-rl;
  text-orientation:upright;
  font-size:14px;
  font-weight:800;
  line-height:1.15;
  letter-spacing:.05em;
  overflow:hidden;
  color:#111827;
}
.vertical-team-name.placeholder{
  color:#9ca3af;
  font-weight:700;
}
.vertical-team-picker::after{
  content:"▼";
  position:absolute;
  left:0;
  right:0;
  bottom:4px;
  text-align:center;
  font-size:12px;
  color:#4b5563;
  pointer-events:none;
}
.vertical-team-picker select{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  opacity:0;
  cursor:pointer;
}
.draw-slot-no{
  position:absolute;
  top:6px;
  left:0;
  width:58px;
  text-align:center;
  font-size:11px;
  font-weight:900;
  color:#6b7280;
  line-height:1;
  pointer-events:none;
}
.bracket-champion{
  position:absolute;
  z-index:3;
  left:604px;
  top:44px;
  width:132px;
  height:58px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:2px solid #111827;
  border-radius:7px;
  background:#fff;
  font-size:14px;
  font-weight:900;
}
.draw-note{
  margin-top:10px;
  font-size:12px;
  color:#6b7280;
  line-height:1.6;
}
@media(max-width:600px){
  .tournament-create-head{display:block}
  .draw-status{display:inline-block;margin-top:8px}
  .vertical-team-name{font-size:13px}
}

/* トーナメント作成：決勝リーグ入力の勝者ルートを赤で表示 */
.bracket-lines path.winner-path{
  stroke:#d40000;
  stroke-width:4;
}

/* 1回戦の縦罫線を長くするため、チーム入力欄を下へ移動 */
.team-leaf{
  top:770px;
}
.draw-bracket.vertical{
  height:1040px;
}
.bracket-lines{
  height:1040px;
}


/* 大会進行の決勝トーナメントは閲覧専用 */
.vertical-team-picker.readonly{
  cursor:default;
}
.vertical-team-picker.readonly::after{
  content:"";
}
.vertical-team-picker.readonly .vertical-team-name{
  inset:24px 6px 7px 6px;
}
.tournament-create-panel.readonly-view .tournament-create-head{
  margin-bottom:8px;
}


/* トーナメント全体を囲む外枠線は非表示 */
.draw-bracket.vertical{
  border:none !important;
  border-radius:0 !important;
}


/* 管理者設定：画面上部の題名 */
.title-setting{margin:8px 0 16px}
.title-setting label{display:block;margin-bottom:7px;font-weight:800}
.title-setting-row{display:flex;gap:8px;align-items:center}
.title-setting-row input{
  flex:1 1 auto;min-width:0;padding:10px 12px;
  border:1px solid #9ca3af;border-radius:7px;font-size:16px;
}
.title-setting-row button{
  flex:0 0 auto;padding:10px 14px;border:1px solid #111827;
  border-radius:7px;background:#111827;color:#fff;font-weight:800;
}
@media(max-width:600px){
  .title-setting-row{flex-direction:column;align-items:stretch}
  .title-setting-row button{width:100%}
}


/* 大会進行：試合結果と同じ直角タブに固定 */
.card.tournament-card{
  border-radius:0 !important;
}
#tournament .tournament-card,
#tournament .division-tabs,
#tournament .phase-tabs,
#tournament .division-tab,
#tournament .phase-tab{
  border-radius:0 !important;
}


/* 選択中の予選・決勝タブを、選択中の部門タブと同じ濃紺に統一 */
#tournament .phase-tab.active,
#public .phase-context-tabs .context-tab.active,
#input .phase-context-tabs .context-tab.active{
  background:#111827 !important;
  color:#fff !important;
}


/* 画面上部をコンパクト化：表示領域を広げる */
header{
  padding:9px 14px !important;
}
header h1{
  font-size:18px !important;
  line-height:1.25;
}
main{
  padding-top:6px !important;
}
nav{
  margin-bottom:8px !important;
  gap:10px !important;
}
nav button{
  min-height:52px !important;
  padding:10px 22px !important;
  font-size:18px !important;
  border-radius:12px !important;
}
@media(max-width:760px){
  header{
    padding:8px 10px !important;
  }
  header h1{
    font-size:16px !important;
    padding-right:72px;
  }
  main{
    padding:5px 8px 10px !important;
  }
  nav{
    gap:6px !important;
    margin-bottom:6px !important;
  }
  nav button{
    min-height:46px !important;
    padding:8px 10px !important;
    font-size:16px !important;
    border-radius:10px !important;
  }
}


/* 部門タブを極力薄くして、試合結果・トーナメントの表示領域を最大化 */
#tournament .division-tab,
#public .division-context-tabs .context-tab,
#input .division-context-tabs .context-tab{
  min-height:34px !important;
  height:34px !important;
  padding:2px 5px !important;
  font-size:14px !important;
  line-height:1.05 !important;
}

/* スマホではさらに少し圧縮 */
@media(max-width:600px){
  #tournament .division-tab,
  #public .division-context-tabs .context-tab,
  #input .division-context-tabs .context-tab{
    min-height:32px !important;
    height:32px !important;
    padding:1px 3px !important;
    font-size:13px !important;
  }
}


/* 予選リーグ・決勝リーグ等のタブも薄くして表示領域を最大化 */
#tournament .phase-tab,
#public .phase-context-tabs .context-tab,
#input .phase-context-tabs .context-tab{
  min-height:34px !important;
  height:34px !important;
  padding:2px 5px !important;
  font-size:14px !important;
  line-height:1.05 !important;
}

/* スマホではさらに圧縮 */
@media(max-width:600px){
  #tournament .phase-tab,
  #public .phase-context-tabs .context-tab,
  #input .phase-context-tabs .context-tab{
    min-height:32px !important;
    height:32px !important;
    padding:1px 3px !important;
    font-size:13px !important;
  }
}


/* メインタブ（大会進行・試合結果・試合入力・設定）も薄くして表示領域を最大化 */
#nav button{
  min-height:38px !important;
  height:38px !important;
  padding:3px 10px !important;
  font-size:16px !important;
  line-height:1.05 !important;
}

/* スマホではさらに圧縮 */
@media(max-width:600px){
  #nav button{
    min-height:34px !important;
    height:34px !important;
    padding:2px 6px !important;
    font-size:14px !important;
  }
}


/* 管理者ボタンをヘッダーの紺色領域内に固定 */
header{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:8px !important;
}
header h1{
  flex:1 1 auto !important;
  min-width:0 !important;
  padding-right:0 !important;
}
header .admin-entry,
header .admin-badge{
  float:none !important;
  flex:0 0 auto !important;
  margin:0 !important;
  position:static !important;
  align-self:center !important;
}
header .admin-entry{
  padding:6px 10px !important;
  font-size:12px !important;
  line-height:1.2 !important;
  min-height:32px !important;
  height:auto !important;
  max-height:36px !important;
}
header .admin-badge{
  padding:6px 10px !important;
  font-size:12px !important;
  line-height:1.2 !important;
}

@media(max-width:600px){
  header{
    min-height:52px !important;
  }
  header h1{
    font-size:16px !important;
    line-height:1.2 !important;
  }
  header .admin-entry,
  header .admin-badge{
    padding:5px 9px !important;
    font-size:12px !important;
    min-height:30px !important;
    max-height:34px !important;
  }
}


/* ヘッダー最終調整
   題名は変更後も常に左詰め＋上下中央。
   管理者ボタンは常に右端、紺色ヘッダー内に配置。 */
header{
  display:flex !important;
  align-items:center !important;
  justify-content:flex-start !important;
  gap:8px !important;
}
header h1#systemTitle{
  order:1 !important;
  flex:1 1 auto !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  text-align:left !important;
  align-self:center !important;
  line-height:1.2 !important;
}
header #adminEntry,
header #adminBadge{
  order:2 !important;
  flex:0 0 auto !important;
  margin-left:auto !important;
  margin-right:0 !important;
  align-self:center !important;
  position:static !important;
  float:none !important;
}


/* 決勝トーナメントを60%表示 */
.bracket-scale-60{
  position:relative;
  width:804px;   /* 1340 × 0.6 */
  min-width:804px;
  height:624px;   /* 1040 × 0.6 */
}
.bracket-scale-60 > .draw-bracket.vertical{
  transform:scale(0.6);
  transform-origin:top left;
}


/* トーナメント本体60%・内部テキストは見た目100% */
.bracket-scale-60 .vertical-team-name{
  font-size:23.333px !important; /* 23.333 × 0.6 ≒ 14px */
}
.bracket-scale-60 .vertical-team-picker::after{
  font-size:20px !important;   /* 20 × 0.6 = 12px */
}
.bracket-scale-60 .draw-slot-no{
  font-size:18.333px !important; /* 18.333 × 0.6 ≒ 11px */
}
.bracket-scale-60 .bracket-champion{
  font-size:23.333px !important; /* 23.333 × 0.6 ≒ 14px */
}

@media(max-width:600px){
  .bracket-scale-60 .vertical-team-name{
    font-size:21.667px !important; /* 21.667 × 0.6 ≒ 13px */
  }
}


/* 試合結果・試合入力の試合選択プルダウンを省スペース化 */
#public .public-match-select,
#input .public-match-select{
  height:32px !important;
  min-height:32px !important;
  padding:2px 36px 2px 10px !important;
  font-size:14px !important;
  line-height:1.1 !important;
  box-sizing:border-box !important;
  border-radius:6px !important;
}


/* 試合入力：対戦チーム名を明確に表示 */
.input-match-heading{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  margin:6px 0 8px;
  padding:4px 8px;
  font-size:17px;
  font-weight:800;
  white-space:nowrap;
}
.input-match-heading .team{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
.input-match-heading .vs{
  flex:0 0 auto;
}

/* 各選手入力欄の上段に、その選手側のチーム名を表示 */
.input-team-label{
  grid-column:1 / -1;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:24px;
  margin:-2px 0 0;
  font-size:15px;
  font-weight:900;
  line-height:1.15;
  color:#111827;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
@media(max-width:600px){
  .input-match-heading{
    gap:8px;
    font-size:15px;
  }
  .input-team-label{
    min-height:22px;
    font-size:14px;
  }
}
