/* 印刷用シート。サイズはすべて --u（用紙の短辺の1/100）を基準にする */
@font-face {
  font-family: 'CalSheet';
  src: url('../fonts/cal-sheet-regular.woff2') format('woff2');
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: 'CalSheet';
  src: url('../fonts/cal-sheet-bold.woff2') format('woff2');
  font-weight: 700;
  font-display: swap;
}

.sheet {
  --ink: #1d232b;
  --line: #c6ccd3;
  --soft: #87909a;
  --sun: #d0342b;
  --sat: #1f63b6;
  --hol: #d0342b;
  --accent: #1f3a68;
  --head-bg: #e9eef6;
  --weekend-bg: transparent;
  --hair: 0.2mm;
  position: relative;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: calc(var(--u) * 5) calc(var(--u) * 5.5) calc(var(--u) * 4.6);
  background: #fff;
  color: var(--ink);
  font-family: 'CalSheet', 'BIZ UDPGothic', 'Hiragino Sans', 'Yu Gothic', Meiryo, system-ui, sans-serif;
  line-height: 1.2;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
.sheet *,
.sheet *::before,
.sheet *::after {
  box-sizing: border-box;
}

.theme-navy { --accent: #1f3a68; --head-bg: #e9eef6; }
.theme-green { --accent: #2c6a4c; --head-bg: #e6f1ea; }
.theme-coral { --accent: #bf4e38; --head-bg: #fbebe5; }
.theme-plum { --accent: #6b3f7a; --head-bg: #f1e9f4; }
.theme-mono { --accent: #111; --head-bg: #ececec; --sun: #111; --sat: #111; --hol: #111; }

/* 英語版は土曜を青にせず、週末に薄い背景を付ける */
.lang-en { --sat: var(--ink); --weekend-bg: #f5f6f8; }

/* ---- 月のシートの見出し ---- */
.sh-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: calc(var(--u) * 3);
  margin-bottom: calc(var(--u) * 2.4);
}
.sh-ttl {
  display: flex;
  align-items: flex-end;
  gap: calc(var(--u) * 2.4);
  min-width: 0;
}
.sh-mnum {
  font-size: calc(var(--u) * 15);
  font-weight: 700;
  line-height: 0.8;
  letter-spacing: -0.03em;
  color: var(--accent);
}
.sh-mname {
  font-size: calc(var(--u) * 3.4);
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent);
}
.sh-mbig {
  font-size: calc(var(--u) * 8.5);
  font-weight: 700;
  line-height: 0.9;
  color: var(--accent);
}
.portrait .sh-mbig { font-size: calc(var(--u) * 6.6); }
.sh-minis { flex: none; }
.sh-ysub {
  margin-top: calc(var(--u) * 0.7);
  font-size: calc(var(--u) * 2.4);
  color: var(--soft);
}
.sh-custom {
  margin-top: calc(var(--u) * 0.8);
  font-size: calc(var(--u) * 2.6);
  font-weight: 700;
  color: var(--ink);
}
.sh-minis {
  display: flex;
  gap: calc(var(--u) * 3);
}
.mini {
  border-collapse: collapse;
  font-size: calc(var(--u) * 1.45);
}
.mini caption {
  padding-bottom: calc(var(--u) * 0.4);
  font-size: calc(var(--u) * 1.7);
  font-weight: 700;
  text-align: left;
  color: var(--accent);
}
.mini th,
.mini td {
  width: calc(var(--u) * 2.5);
  padding: calc(var(--u) * 0.1) 0;
  font-weight: 400;
  text-align: center;
}
.mini th { color: var(--soft); }
.mini .sun { color: var(--sun); }
.mini .sat { color: var(--sat); }

/* ---- 月のマス目 ---- */
.sh-grid {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  grid-template-rows: auto repeat(var(--rows), minmax(0, 1fr));
  border-top: calc(var(--u) * 0.3) solid var(--accent);
  border-left: var(--hair) solid var(--line);
}
.sh-grid.has-wn {
  grid-template-columns: calc(var(--u) * 4) repeat(7, minmax(0, 1fr));
}
.wh {
  padding: calc(var(--u) * 0.8) 0;
  border-right: var(--hair) solid var(--line);
  border-bottom: var(--hair) solid var(--line);
  background: var(--head-bg);
  font-size: calc(var(--u) * 2);
  font-weight: 700;
  text-align: center;
}
.wh.sun { color: var(--sun); }
.wh.sat { color: var(--sat); }
.c,
.wn {
  position: relative;
  min-width: 0;
  overflow: hidden;
  border-right: var(--hair) solid var(--line);
  border-bottom: var(--hair) solid var(--line);
}
.c {
  display: flex;
  flex-direction: column;
  padding: calc(var(--u) * 0.7) calc(var(--u) * 0.9);
}
.c.sun,
.c.sat { background: var(--weekend-bg); }
.c .dn {
  font-size: calc(var(--u) * 4);
  font-weight: 700;
  line-height: 1;
}
.c.sun .dn { color: var(--sun); }
.c.sat .dn { color: var(--sat); }
.c.hol .dn { color: var(--hol); }
.c .hn {
  margin-top: calc(var(--u) * 0.6);
  font-size: calc(var(--u) * 1.6);
  line-height: 1.15;
  color: var(--hol);
  overflow-wrap: anywhere;
  hyphens: auto;
}
.portrait .c .hn { font-size: calc(var(--u) * 1.45); }
.c .rk {
  position: absolute;
  top: calc(var(--u) * 0.8);
  right: calc(var(--u) * 0.9);
  font-size: calc(var(--u) * 1.4);
  color: var(--soft);
}
.c.out { background: transparent; }
.c.out .dn {
  font-size: calc(var(--u) * 2.4);
  font-weight: 400;
  color: #c3c8ce;
}
.wn,
.wn-h {
  padding-top: calc(var(--u) * 0.8);
  font-size: calc(var(--u) * 1.4);
  font-weight: 400;
  text-align: center;
  color: var(--soft);
}
.theme-mono .c.sun,
.theme-mono .c.hol { background: #ededed; }

/* ---- 書き込み用 ---- */
.sheet-memo .sh-mnum { font-size: calc(var(--u) * 11); }
.memo-body {
  flex: 1;
  min-height: 0;
  display: flex;
  gap: calc(var(--u) * 3);
}
.memo-body .sh-grid { flex: 3; }
.portrait .memo-body { flex-direction: column; }
.portrait .memo-body .sh-grid { flex: 4; }
.sheet-memo .c .dn { font-size: calc(var(--u) * 2.5); }
.sheet-memo .c .hn { margin-top: calc(var(--u) * 0.3); font-size: calc(var(--u) * 1.3); }
.sheet-memo .c .rk { font-size: calc(var(--u) * 1.2); }
.sh-notes {
  flex: 1;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.notes-ttl {
  padding-bottom: calc(var(--u) * 0.6);
  border-bottom: calc(var(--u) * 0.3) solid var(--accent);
  font-size: calc(var(--u) * 2);
  font-weight: 700;
  color: var(--accent);
}
.lines {
  flex: 1;
  background-image: repeating-linear-gradient(
    to bottom,
    transparent 0,
    transparent calc(var(--u) * 4.2 - 0.3mm),
    var(--line) calc(var(--u) * 4.2 - 0.3mm),
    var(--line) calc(var(--u) * 4.2)
  );
}

/* ---- 予定表（縦型） ---- */
.sheet-list .sh-mnum { font-size: calc(var(--u) * 10); }
.sheet-list .sh-mbig { font-size: calc(var(--u) * 6.5); }
.sh-list {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-rows: repeat(var(--rows), minmax(0, 1fr));
  border-top: calc(var(--u) * 0.3) solid var(--accent);
}
.lr {
  display: grid;
  grid-template-columns: calc(var(--u) * 6.5) calc(var(--u) * 6.5) calc(var(--u) * 26) minmax(0, 1fr);
  align-items: center;
  min-height: 0;
  border-bottom: var(--hair) solid var(--line);
  font-size: calc(var(--u) * 1.85);
}
.lr > span {
  overflow: hidden;
  padding: 0 calc(var(--u) * 1);
  white-space: nowrap;
  text-overflow: ellipsis;
}
.lh {
  background: var(--head-bg);
  font-size: calc(var(--u) * 1.6);
  font-weight: 700;
}
.ld { font-weight: 700; text-align: right; }
.lw { text-align: center; }
.lx { font-size: calc(var(--u) * 1.6); }
.lp {
  align-self: stretch;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  border-left: var(--hair) solid var(--line);
}
.lwn {
  font-size: calc(var(--u) * 1.3);
  font-style: normal;
  color: var(--soft);
}
.lr.sun,
.lr.sat { background: var(--weekend-bg); }
.lr.sun .ld, .lr.sun .lw { color: var(--sun); }
.lr.sat .ld, .lr.sat .lw { color: var(--sat); }
.lr.hol .ld, .lr.hol .lw, .lr.hol .lx { color: var(--hol); }
.theme-mono .lr.sun,
.theme-mono .lr.hol { background: #ededed; }

/* ---- 年間 ---- */
.sheet.cols-4 { --cols: 4; }
.sheet.cols-3 { --cols: 3; }
.y-head {
  display: flex;
  align-items: flex-end;
  gap: calc(var(--u) * 3);
  margin-bottom: calc(var(--u) * 3);
}
.y-num {
  font-size: calc(var(--u) * 12);
  font-weight: 700;
  line-height: 0.82;
  letter-spacing: -0.02em;
  color: var(--accent);
}
.y-sub {
  font-size: calc(var(--u) * 2.5);
  color: var(--soft);
}
.y-grid {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(var(--cols), minmax(0, 1fr));
  grid-auto-rows: minmax(0, 1fr);
  gap: calc(var(--u) * 2.6) calc(var(--u) * 3.6);
}
.ym {
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.ym-name {
  margin-bottom: calc(var(--u) * 0.5);
  padding-bottom: calc(var(--u) * 0.4);
  border-bottom: calc(var(--u) * 0.25) solid var(--accent);
  font-size: calc(var(--u) * 2.5);
  font-weight: 700;
  color: var(--accent);
}
.ym-name small {
  margin-left: 0.6em;
  font-size: 0.6em;
  font-weight: 400;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--soft);
}
.ym-t {
  flex: 1;
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: calc(var(--u) * 1.8);
}
.ym-t th {
  padding-bottom: calc(var(--u) * 0.2);
  font-size: calc(var(--u) * 1.3);
  font-weight: 400;
  color: var(--soft);
}
.ym-t td { text-align: center; }
.ym-t .sun { color: var(--sun); }
.ym-t .sat { color: var(--sat); }
.ym-t td.hol {
  font-weight: 700;
  color: var(--hol);
  text-decoration: underline;
  text-decoration-thickness: 0.25mm;
  text-underline-offset: 0.18em;
}
.ym-t th.sun { color: var(--sun); }
.ym-t th.sat { color: var(--sat); }
.y-hol {
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--u) * 0.5) calc(var(--u) * 2.2);
  margin-top: calc(var(--u) * 2.4);
  padding-top: calc(var(--u) * 1.4);
  border-top: var(--hair) solid var(--line);
  font-size: calc(var(--u) * 1.45);
}
.y-hol b {
  margin-right: 0.3em;
  color: var(--hol);
}

/* ---- 共通フッター ---- */
.sh-foot {
  position: absolute;
  right: calc(var(--u) * 5.5);
  bottom: calc(var(--u) * 1.5);
  font-size: calc(var(--u) * 1.15);
  color: #aeb4bb;
}

/* ---- 印刷 ---- */
#print-root { display: none; }
@media print {
  html,
  body {
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
  }
  body > *:not(#print-root) { display: none !important; }
  #print-root { display: block !important; }
  #print-root .sheet {
    break-after: page;
    page-break-after: always;
  }
  #print-root .sheet:last-child {
    break-after: auto;
    page-break-after: auto;
  }
}
