/* 中华日历 · 打印版年历
 * 单页 A4 纵向：12 个月 3×4 + 二十四节气 / 法定节假日 / 图例
 */

*, *::before, *::after { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: #e8e5de;
  font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

/* ================= 屏幕工具栏 ================= */

.toolbar {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 14px;
  padding: 12px 18px;
  background: #fbf9f4;
  border-bottom: 1px solid #ddd8cc;
  font-size: 13px;
  color: #3b3529;
}

.toolbar h1 {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .08em;
}

.toolbar .grp { display: flex; align-items: center; gap: 7px; }
.toolbar label { color: #8a8271; font-size: 12px; }

select, .btn {
  height: 30px;
  padding: 0 11px;
  font-family: inherit;
  font-size: 13px;
  color: #232019;
  background: #fff;
  border: 1px solid #ddd8cc;
  border-radius: 8px;
  cursor: pointer;
}

.btn.primary {
  background: #b5372a;
  border-color: #b5372a;
  color: #fff;
  font-weight: 600;
}

.btn:hover { border-color: #b5372a; }
.toolbar .spacer { flex: 1; }
.toolbar a { color: #8a8271; text-decoration: none; font-size: 12px; }
.toolbar a:hover { color: #b5372a; }
.tip { font-size: 11.5px; color: #938b78; }

/* ================= 页面 ================= */

/* 页面按 A4 精确高度布局：页眉/页脚取自然高度，
   中间月历区用 flex + 1fr 吸收剩余空间 —— 从结构上保证内容永远不溢出到第二页 */
.sheet {
  display: flex;
  flex-direction: column;
  width: 210mm;
  height: 297mm;
  margin: 22px auto 40px;
  padding: 9mm;
  background: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, .06), 0 18px 40px -18px rgba(0, 0, 0, .28);
  color: #1c1a15;
}

/* ---- 页眉 ---- */

.hd {
  flex: 0 0 auto;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 10mm;
  padding-bottom: 3mm;
  margin-bottom: 4mm;
  border-bottom: 1.6pt solid #232019;
}

.hd-l { display: flex; align-items: baseline; gap: 4mm; }

.hd-l .y-cn {
  font-family: "Songti SC", "STSong", serif;
  font-size: 30pt;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .04em;
}

.hd-l .y-num {
  font-family: "Songti SC", serif;
  font-size: 13pt;
  color: #8a8271;
  letter-spacing: .1em;
}

.hd-r { text-align: right; }

.hd-r .seal {
  display: inline-block;
  padding: 1mm 3mm;
  background: #b5372a;
  color: #fff;
  border-radius: 2mm;
  font-family: "Songti SC", serif;
  font-size: 13pt;
  font-weight: 700;
  letter-spacing: .16em;
}

.hd-r .meta {
  margin-top: 1.6mm;
  font-size: 7.5pt;
  color: #6f6a5c;
  letter-spacing: .06em;
}

/* ---- 月历主体 ---- */

.months {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(4, 1fr);
  column-gap: 2.5mm;
  row-gap: 2.6mm;
}

.mon {
  min-height: 0;
  display: flex;
  flex-direction: column;
}

.mon-hd {
  flex: 0 0 auto;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1.5mm;
  padding: 0 0.6mm 1mm;
  border-bottom: .6pt solid #d8d3c6;
  margin-bottom: 1mm;
}

.mon-hd b {
  font-family: "Songti SC", serif;
  font-size: 10.5pt;
  font-weight: 700;
  letter-spacing: .06em;
}

.mon-hd i {
  font-style: normal;
  font-size: 6pt;
  color: #938b78;
  letter-spacing: .04em;
}

.wk {
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  font-size: 6pt;
  color: #938b78;
  text-align: center;
  margin-bottom: .6mm;
  line-height: 1.4;
}

.wk span:nth-child(1), .wk span:nth-child(7) { color: #b5372a; }

/* 6 行均分剩余空间 */
.days {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  grid-template-rows: repeat(6, 1fr);
}

.dy {
  position: relative;
  min-height: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .2mm;
  overflow: hidden;
  border-radius: .8mm;
  line-height: 1.1;
}

.dy b {
  font-size: 8.5pt;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
}

.dy em {
  font-style: normal;
  font-size: 5.6pt;
  color: #8a8271;
  letter-spacing: -.02em;
  white-space: nowrap;
  overflow: hidden;
  max-width: 100%;
}

.dy.out { visibility: hidden; }

/* 周末 */
.dy.rest b { color: #b5372a; opacity: .78; }

/* 法定放假 */
.dy.off { background: #f0e6e2; }
.dy.off b { color: #b5372a; font-weight: 700; }
.dy.off em { color: #b5372a; }

/* 调休补班 */
.dy.work { box-shadow: inset 0 0 0 .5pt #b9b3a4; }
.dy.work b { color: #1c1a15; }
.dy.work em { color: #6f6a5c; }

/* 节气 */
.dy.jq { background: var(--jq-bg); }
.dy.jq em { color: var(--jq-c); font-weight: 700; }
.dy.jq b { color: var(--jq-c); }

/* 既是节气又是法定假日（如清明）：保留放假底色，节气名仍用四季色 */
.dy.jq.off { background: #f0e6e2; }
.dy.jq.off b { color: #b5372a; }
.dy.jq.off em { color: var(--jq-c); }

/* 节日（非放假的农历节日） */
.dy.fv em { color: #b5372a; }

/* 今天 */
.dy.today b {
  box-shadow: 0 0 0 .8pt #b5372a;
  border-radius: 50%;
  padding: 0 .6mm;
}

/* ---- 页脚信息区 ---- */

.ft {
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: 1fr 66mm;
  gap: 4mm;
  margin-top: 3mm;
  padding-top: 2.4mm;
  border-top: .6pt solid #d8d3c6;
}

.ft h2 {
  margin: 0 0 1.6mm;
  font-size: 7.5pt;
  font-weight: 700;
  letter-spacing: .2em;
  color: #6f6a5c;
}

.jq-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: .6mm 1.5mm;
}

.jq-grid div {
  font-size: 7pt;
  color: #3b3529;
  letter-spacing: .02em;
  white-space: nowrap;
}

.jq-grid div b { font-weight: 600; }
.jq-grid div i {
  font-style: normal;
  color: #8a8271;
  font-size: 6.5pt;
}

.hol-list { font-size: 6.5pt; line-height: 1.55; color: #3b3529; }
.hol-list div { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hol-list b { font-weight: 600; }
.hol-list span { color: #b5372a; }
.hol-list .none { color: #938b78; white-space: normal; }

/* 底部一行：图例 + 数据来源 */
.ft-note {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 5mm;
  margin-top: 2mm;
  padding-top: 1.6mm;
  border-top: .4pt solid #e4e0d5;
  font-size: 6.5pt;
  line-height: 1.4;
  color: #6f6a5c;
}

.ft-note p { margin: 0; white-space: nowrap; }
.ft-note .src { margin-left: auto; color: #a8a08e; text-align: right; }

.ft-note i {
  display: inline-block;
  width: 3mm;
  height: 3mm;
  margin-right: .8mm;
  vertical-align: -.3mm;
  border-radius: .4mm;
}

.ft-note i.off { background: #f0e6e2; box-shadow: inset 0 0 0 .5pt #b5372a; }
.ft-note i.work { background: #fff; box-shadow: inset 0 0 0 .5pt #b9b3a4; }
.ft-note i.jq { background: #e8efe9; box-shadow: inset 0 0 0 .5pt #3f8f63; }

/* ================= 打印 ================= */

@page {
  size: A4 portrait;
  margin: 7mm;
}

@media print {
  html, body { background: #fff; }
  .toolbar { display: none !important; }
  .sheet {
    width: auto;
    height: 283mm;   /* A4 297mm - 上下各 7mm 页边距 */
    margin: 0;
    padding: 0;
    box-shadow: none;
  }
}

/* 窄屏时横向滚动显示 A4，避免被压缩变形 */
@media screen and (max-width: 900px) {
  .sheet { margin: 22px; zoom: .5; }
}
