/* ============================================================
   大会カレンダー
   大会ページの表示と、貼り出し用ページ (/Tournaments/CalendarPrint) の両方で使う。
   印刷用ページは Tailwind を読まないので、見た目はこのファイルだけで完結させる。
   ============================================================ */

/* ------------------------------------------------------------
   寸法はすべてここの変数で決める。
   ・画面（大会ページ）は下の既定値
   ・紙に近い見た目にしたいときは .cal-print を付ける（印刷ページの画面表示）
   ・実際の印刷は @media print が同じ値に差し替える
   こうしておかないと、印刷ページのプレビューと刷り上がりが 食い違ってしまう。
   ------------------------------------------------------------ */
:root {
    --cal-cell-h: auto;          /* 紙のときだけ高さを固定する */
    --cal-cell-min-h: 96px;
    --cal-cell-pad: 3px;
    --cal-head-font: 13px;
    --cal-head-pad: 5px 4px;
    --cal-daynum-font: 13px;
    --cal-daynum-min-h: 15px;
    --cal-daynum-gap: 2px;
    --cal-more-font: 9px;
    --cal-chip-font: 9px;
    --cal-chip-pad: 2px 4px;
    --cal-chip-gap: 2px;
}

/* 紙の見た目。印刷ページは画面でもこれを使うので、プレビューと刷り上がりが一致する。
   ここの数値は Services/TournamentCalendar.cs の FitsPerCell と対になっている。
   1マスに何件入るかをC#側が同じ数値で計算して「他○件」に振り分けるので、
   片方だけ変えると見切れたり余ったりする。必ず両方そろえること。 */
.cal-print {
    /* 使える高さ = A4(297mm) - 上下の余白 - 曜日見出し - 枠。それを週の数で割る */
    --cal-cell-h: calc((297mm - (var(--cal-margin, 35mm) * 2) - 12mm) / var(--cal-weeks, 6));
    --cal-cell-min-h: 0;
    --cal-cell-pad: 2px;
    --cal-head-font: 11px;
    --cal-head-pad: 3px 2px;
    --cal-daynum-font: 11px;
    --cal-daynum-min-h: 13px;
    --cal-daynum-gap: 1px;
    --cal-more-font: 8px;
    --cal-chip-font: 8px;
    --cal-chip-pad: 1px 3px;
    --cal-chip-gap: 1.5px;
}

.calendar-box {
    background: #ffffff;
    border: 2px solid #0f766e;
    border-radius: 8px;
    overflow: hidden;
}

.cal-table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
}

/* --- 曜日の見出し --- */
.cal-head {
    background: #0f766e;
    color: #ffffff;
    font-size: var(--cal-head-font);
    font-weight: 700;
    padding: var(--cal-head-pad);
    text-align: center;
    border: 1px solid #0b5c56;
    letter-spacing: 0.1em;
}
.cal-head.cal-sun { background: #b91c1c; border-color: #991b1b; }
.cal-head.cal-sat { background: #1d4ed8; border-color: #1e40af; }

/* --- 日のマス --- */
.cal-cell {
    border: 1px solid #cbd5e1;
    vertical-align: top;
    padding: 0;
    background: #ffffff;
}
.cal-cell.cal-out { background: #f8fafc; }        /* 前後の月のはみ出し */
.cal-cell.cal-out .cal-daynum { color: #cbd5e1; }
.cal-cell.cal-today { background: #fffbeb; }

/* td には overflow が効かないので、中身はこの箱で高さを決める */
.cal-cell-inner {
    padding: var(--cal-cell-pad);
    min-height: var(--cal-cell-min-h);
    height: var(--cal-cell-h);
    overflow: hidden;
}

.cal-daynum-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 3px;
    margin-bottom: var(--cal-daynum-gap);
    min-height: var(--cal-daynum-min-h);
}
.cal-daynum {
    font-size: var(--cal-daynum-font);
    font-weight: 700;
    color: #334155;
    line-height: 1;
}
.cal-daynum.cal-sun { color: #b91c1c; }
.cal-daynum.cal-sat { color: #1d4ed8; }

/* 日付の横のすき間に出す「他○件」 */
.cal-more {
    font-family: inherit;
    font-size: var(--cal-more-font);
    line-height: 1;
    padding: 2px 4px;
    border-radius: 999px;
    border: 1px solid #cbd5e1;
    background: #ffffff;
    color: #475569;
    cursor: pointer;
    white-space: nowrap;
}
.cal-more:hover { background: #f1f5f9; }

/* --- 予定のチップ --- */
.cal-chip {
    display: block;
    border-radius: 3px;
    padding: var(--cal-chip-pad);
    margin-bottom: var(--cal-chip-gap);
    text-decoration: none;
    overflow: hidden;
}
.cal-chip-title {
    /* 長いタイトルは1行に収めて末尾を「…」にする。
       2行に折り返すとマスの中が詰まって、日付や他の予定が読みにくくなるため。
       全文はチップの title 属性（マウスを乗せると出る）で読める。 */
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: var(--cal-chip-font);
    font-weight: 700;
    line-height: 1.1;
}
/* タイトル（ポケカ・遊戯王など）。刷ったものが白黒でもゲームが分かるように一番上へ置く。
   大会タイトルより控えめにして、見出しの主役を奪わないようにする。 */
.cal-chip-game {
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: var(--cal-chip-font);
    font-weight: 700;
    line-height: 1.1;
    opacity: 0.85;
}
/* カレンダー用の説明。入力した1行につき、この箱が1つ出る（最大2つ）。
   1行の中では折り返さず、長い分は「…」で切る。
   折り返させると Services/TournamentCalendar.cs の LinesOf が見込む高さより背が高くなり、
   その日の最後の予定が升目から見切れる。折り返しの扱いを変えるときは必ず両方そろえること。 */
.cal-chip-note {
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: var(--cal-chip-font);
    font-weight: 500;
    line-height: 1.1;
    opacity: 0.95;
}
.cal-chip-time {
    display: block;
    font-size: var(--cal-chip-font);
    font-weight: 700;
    line-height: 1.1;
    opacity: 0.95;
}

/* 「他○件」で隠しているぶん。Tailwind の .hidden に頼らない */
.cal-more-list { display: none; }
.cal-more-list.is-open { display: block; }
.cal-more-list .cal-chip { margin-top: 2px; }

/* 紙の見た目のときは開かない。開くと升目からあふれて、刷り上がりと違って見えるため */
.cal-print .cal-more-list,
.cal-print .cal-more-list.is-open { display: none; }
.cal-print .cal-more { border: none; background: transparent; color: #475569; padding: 0; cursor: default; }

/* ============================================================
   印刷（A4 縦・1枚）
   刷るのは専用ページ。用紙の余白はそちらが持つので、
   ここでは升目の高さを用紙に合わせ、はみ出しを抑える。
   ============================================================ */
@media print {
    @page {
        size: A4 portrait;
        margin: 0;
    }

    /* 大会ページからそのまま刷られた場合に備えて、紙の寸法に切り替える。
       印刷ページ側は body に .cal-print が付いているので、そちらの値（選んだ文字サイズ）が勝つ。 */
    :root {
        --cal-cell-h: calc((297mm - (var(--cal-margin, 35mm) * 2) - 12mm) / var(--cal-weeks, 6));
        --cal-cell-min-h: 0;
        --cal-cell-pad: 2px;
        --cal-head-font: 11px;
        --cal-head-pad: 3px 2px;
        --cal-daynum-font: 11px;
        --cal-daynum-min-h: 13px;
        --cal-daynum-gap: 1px;
        --cal-more-font: 8px;
        --cal-chip-font: 8px;
        --cal-chip-pad: 1px 3px;
        --cal-chip-gap: 1.5px;
    }

    .calendar-box { page-break-inside: avoid; }

    /* 「他○件」は印刷でも残す（その日にまだ予定があると分かるように）。
       押せないので、ボタンらしさは消して文字だけにする */
    .cal-more {
        border: none;
        background: transparent;
        color: #475569;
        padding: 0;
    }
    /* 隠しているぶんは印刷でも出さない */
    .cal-more-list, .cal-more-list.is-open { display: none !important; }

    /* 背景色を必ず出す（印刷ダイアログの「背景のグラフィック」を入れてもらう） */
    .cal-head, .cal-chip, .cal-cell {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* 大会ページからそのまま刷られた場合に備えて、操作まわりは出さない */
    header, footer, nav, .no-print { display: none !important; }
}
