
  :root{
    --paper:#f3e7cc;       /* 宣纸底 */
    --paper2:#efe0c0;
    --ink:#2b2118;         /* 墨色 */
    --vermilion:#9e2b25;   /* 朱砂 */
    --vermilion2:#b8413a;
    --gold:#b8893b;        /* 金 */
    --line:#c9a86a;
    --good:#2f7d4f;
    --bad:#9e2b25;
    /* ===== 全站尺寸令牌：内容卡片与底部 tabbar 共用同一组值，保证左右严格对齐 ===== */
    --shell-max:460px;     /* 全站统一：老黄历 / 择日 / 二十四节气 三页同宽（zeri.html 同值） */
    --pad-x:10px;          /* 页面左右留白，三页同一值 */
    --radius:12px;         /* 卡片圆角，tabbar 顶部圆角同值 */
    --shadow:0 10px 40px rgba(0,0,0,.55);
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
  html,body{margin:0;padding:0;}
  body{
    background:#1c1712;
    color:var(--ink);
    font-family:"Kaiti SC","STKaiti","KaiTi","Songti SC","SimSun",serif;
    display:flex;justify-content:center;
    padding:14px var(--pad-x) 84px;
    background-image:radial-gradient(circle at 50% 0%, #2a2218, #140f0a 70%);
  }
  .book{
    width:100%;max-width:var(--shell-max);
    background:
      repeating-linear-gradient(0deg, rgba(180,140,70,.04) 0 2px, transparent 2px 4px),
      linear-gradient(160deg,var(--paper),var(--paper2));
    border:2px solid var(--line);
    border-radius:var(--radius);
    box-shadow:var(--shadow), inset 0 0 0 6px rgba(255,255,255,.18);
    padding:18px 16px 22px;
    position:relative;
  }
  .book::before{
    content:"";position:absolute;inset:8px;border:1px solid var(--line);
    border-radius:7px;pointer-events:none;opacity:.55;
  }
  /* 顶部 */
  .top{text-align:center;position:relative;z-index:1;}
  .brand{font-size:13px;letter-spacing:6px;color:var(--vermilion);font-weight:700;}
  .brand .seal{
    display:inline-block;border:1.5px solid var(--vermilion);color:var(--vermilion);
    border-radius:4px;padding:0 4px;font-size:11px;letter-spacing:1px;margin-left:6px;
    transform:translateY(-1px);
  }
  .title{font-size:27px;font-weight:700;letter-spacing:8px;margin:2px 0 8px;color:var(--ink);}
  .title b{color:var(--vermilion);}

  /* 视图容器 */
  .view{position:relative;z-index:1;}

  /* 公历日期行：左右翻日按钮与日期齐平 */
  .g-row{display:flex;align-items:center;justify-content:center;gap:8px;}
  .g-row button{
    background:transparent;border:1px solid var(--line);color:var(--vermilion);
    font-family:inherit;font-size:18px;width:30px;height:30px;border-radius:50%;cursor:pointer;
    flex:none;line-height:1;padding:0;
  }
  .g-row button:active{background:rgba(158,43,37,.12);}

  /* 大日期 */
  .hero{text-align:center;padding:14px 0 6px;border-bottom:1px dashed var(--line);position:relative;z-index:1;}
  .hero .g{font-size:30px;font-weight:800;letter-spacing:1px;color:var(--ink);line-height:1.3;white-space:nowrap;}
  .hero .wc{font-size:13px;color:#7a6a4e;margin-top:2px;letter-spacing:2px;}
  .pillars{display:flex;justify-content:center;gap:10px;margin-top:10px;flex-wrap:wrap;}
  .pillar{text-align:center;min-width:64px;}
  .pillar .lab{font-size:11px;color:#7a6a4e;letter-spacing:1px;}
  .pillar .gz{font-size:21px;font-weight:700;color:var(--vermilion);letter-spacing:1px;}
  .sx{margin-top:8px;font-size:14px;color:var(--ink);letter-spacing:1px;}
  .sx b{color:var(--vermilion);font-size:16px;}

  /* 值神 / 宿 */
  .badges{display:flex;gap:10px;margin:12px 0 6px;}
  .badge{flex:1;border:1px solid var(--line);border-radius:8px;padding:8px 6px;text-align:center;background:rgba(255,255,255,.25);}
  .badge .k{font-size:11px;color:#7a6a4e;letter-spacing:1px;}
  .badge .v{font-size:22px;font-weight:700;color:var(--ink);margin-top:2px;letter-spacing:1px;}
  .badge .t{font-size:11px;margin-top:2px;font-weight:700;}
  .t.ji{color:var(--good);} .t.xiong{color:var(--bad);}

  /* 节气提示 */
  .term-tip{
    margin:10px 0;padding:8px 10px;border-radius:8px;font-size:13px;letter-spacing:.5px;
    background:rgba(184,137,59,.16);border:1px solid var(--gold);color:var(--ink);text-align:center;
  }
  .term-tip b{color:var(--vermilion);}
  .term-tip.hit{background:rgba(158,43,37,.12);border-color:var(--vermilion);}

  /* 通用区块 */
  .sec{margin-top:12px;position:relative;z-index:1;}
  .sec-h{font-size:13px;color:var(--vermilion);font-weight:700;letter-spacing:3px;
    border-left:3px solid var(--vermilion);padding-left:7px;margin-bottom:6px;}
  .sec-h .sub{font-size:10px;color:#9a8c6e;letter-spacing:0;font-weight:400;margin-left:6px;}
  .yiji{display:flex;gap:10px;}
  .yiji .col{flex:1;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:rgba(255,255,255,.22);}
  .yiji .h{font-size:12px;font-weight:700;letter-spacing:1px;margin-bottom:3px;}
  .yiji .yi .h{color:var(--good);}
  .yiji .ji .h{color:var(--bad);}
  .yiji .items{font-size:13px;line-height:1.7;color:var(--ink);}

  .grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  .cell{border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:rgba(255,255,255,.2);}
  .cell .k{font-size:11px;color:#7a6a4e;letter-spacing:1px;}
  .cell .v{font-size:14px;font-weight:700;color:var(--ink);margin-top:2px;letter-spacing:.5px;}
  .cell .v.warn{color:var(--bad);}
  .cell .v.ok{color:var(--good);}

  .peng{font-size:13px;line-height:1.85;color:var(--ink);background:rgba(255,255,255,.2);
    border:1px solid var(--line);border-radius:8px;padding:8px 10px;letter-spacing:.5px;}

  .foot{margin-top:14px;font-size:10.5px;color:#8a7a5c;line-height:1.7;text-align:center;letter-spacing:.5px;position:relative;z-index:1;}
  .foot b{color:var(--vermilion);}
  .disclaimer{
    margin-top:10px;font-size:10.5px;color:#7a6a4e;line-height:1.75;text-align:justify;
    background:rgba(184,137,59,.1);border:1px dashed var(--gold);border-radius:8px;padding:8px 10px;
  }
  .disclaimer b{color:var(--vermilion);}

  /* ===== 节气页 ===== */
  .jq-head{display:flex;align-items:center;justify-content:space-between;margin:4px 0 10px;}
  .jq-head .yr{font-size:16px;font-weight:700;letter-spacing:2px;color:var(--ink);}
  .jq-head button{
    background:transparent;border:1px solid var(--line);color:var(--vermilion);
    font-family:inherit;font-size:16px;width:34px;height:30px;border-radius:6px;cursor:pointer;
  }
  .jq-head button:active{background:rgba(158,43,37,.12);}
  .term-detail{
    border:1.5px solid var(--vermilion);border-radius:10px;padding:12px 14px;margin-bottom:12px;
    background:rgba(255,255,255,.28);
  }
  .term-detail .nm{font-size:22px;font-weight:700;color:var(--vermilion);letter-spacing:2px;}
  .term-detail .meta{font-size:12px;color:#7a6a4e;margin:4px 0 6px;letter-spacing:1px;}
  .term-detail .meta b{color:var(--ink);}
  .term-detail .desc{font-size:13px;line-height:1.8;color:var(--ink);letter-spacing:.5px;}
  .term-detail .tag{display:inline-block;font-size:10px;color:#fff;background:var(--vermilion);
    border-radius:4px;padding:1px 6px;margin-left:8px;letter-spacing:1px;vertical-align:middle;}

  .term-list{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:rgba(255,255,255,.2);}
  .term-row{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;font-size:14px;
    border-bottom:1px dashed rgba(201,168,106,.5);letter-spacing:.5px;cursor:pointer;}
  .term-row:last-child{border-bottom:none;}
  .term-row:active{background:rgba(158,43,37,.08);}
  .term-row .nm{font-weight:700;color:var(--ink);}
  .term-row .dt{color:#7a6a4e;font-size:12px;}
  .term-row.past .nm{color:#9a8c6e;font-weight:400;}
  .term-row.sel{background:rgba(158,43,37,.14);}
  .term-row.sel .nm{color:var(--vermilion);}
  .term-row.today{background:rgba(184,137,59,.22);}
  .term-row.today .nm{color:var(--vermilion);}

  /* ===== tabbar：宽度、左右边距与内容卡片严格一致（共用 --shell-max / --pad-x） ===== */
  .tabbar-wrap{
    position:fixed;left:0;right:0;bottom:0;z-index:30;
    display:flex;justify-content:center;
    padding:0 var(--pad-x);pointer-events:none;
  }
  .tabbar{
    pointer-events:auto;
    width:100%;max-width:var(--shell-max);
    display:flex;background:linear-gradient(180deg,#3a2a1c,#241a10);
    border:2px solid var(--gold);border-bottom:0;
    border-radius:var(--radius) var(--radius) 0 0;
    box-shadow:0 -6px 20px rgba(0,0,0,.5);
  }
  .tabbar button{
    flex:1;background:transparent;border:none;color:#cbb78c;font-family:inherit;
    font-size:13.5px;letter-spacing:1px;padding:12px 0;cursor:pointer;position:relative;white-space:nowrap;
  }
  .tabbar button.active{color:#f6ead0;}
  .tabbar button.active::after{
    content:"";position:absolute;left:50%;bottom:6px;transform:translateX(-50%);
    width:30px;height:3px;border-radius:2px;background:var(--vermilion);
  }
  .tabbar .divider{width:1px;flex:none;background:rgba(201,168,106,.4);margin:8px 0;}

  /* ===== 释义弹窗（点击名词弹出通俗说明） ===== */
  [data-key]{cursor:pointer;user-select:none;}
  .mask{position:fixed;inset:0;background:rgba(18,12,6,.58);display:flex;align-items:flex-end;
    justify-content:center;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s;}
  .mask.show{opacity:1;pointer-events:auto;}
  .modal{width:100%;max-width:460px;background:linear-gradient(168deg,#f8efd9,#efe0c0);
    border:1px solid var(--gold);border-top:3px solid var(--vermilion);
    border-radius:14px 14px 0 0;padding:15px 18px 18px;
    box-shadow:0 -8px 32px rgba(0,0,0,.45);transform:translateY(14px);transition:transform .2s;}
  .mask.show .modal{transform:translateY(0);}
  .modal .m-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;}
  .modal .m-h b{font-size:17px;color:var(--vermilion);letter-spacing:1px;line-height:1.5;}
  .modal .m-x{background:transparent;border:1px solid var(--line);color:var(--ink);
    font-size:16px;width:27px;height:27px;border-radius:50%;cursor:pointer;
    font-family:inherit;line-height:1;flex:none;}
  .modal .m-body{font-size:13.5px;line-height:1.95;color:var(--ink);letter-spacing:.3px;
    max-height:54vh;overflow:auto;}
  .modal .m-body p{margin:0 0 7px;}
  .modal .m-body .hl{color:var(--vermilion);font-weight:700;}
  .modal .m-body .hr{border-top:1px dashed var(--line);margin:8px 0 7px;}
  .modal .m-foot{font-size:10.5px;color:#8a7a5c;margin-top:8px;text-align:center;letter-spacing:.5px;}

  /* ===== 日期快捷操作（小按钮） ===== */
  .hero-actions{display:flex;gap:8px;margin:8px 0 0;justify-content:center;}
  .hero-actions .ha-btn{
    padding:3px 12px;border-radius:5px;border:1px solid var(--vermilion);
    background:transparent;color:var(--vermilion);font-family:inherit;font-size:11px;
    letter-spacing:1px;cursor:pointer;line-height:1.4;
  }
  .hero-actions .ha-btn.solid{background:var(--vermilion);color:#f6ead0;}
  .hero-actions .ha-btn:active{opacity:.7;}
  .hero-actions .ha-btn.dim{opacity:.35;cursor:default;}

  /* ===== 日期选择月历 ===== */
  .cal-mask{position:fixed;inset:0;background:rgba(18,12,6,.58);display:flex;align-items:center;
    justify-content:center;z-index:105;opacity:0;pointer-events:none;transition:opacity .2s;padding:24px;}
  .cal-mask.show{opacity:1;pointer-events:auto;}
  .cal-panel{width:100%;max-width:360px;background:linear-gradient(168deg,#f8efd9,#efe0c0);
    border:1px solid var(--gold);border-top:3px solid var(--vermilion);border-radius:14px;
    padding:14px 14px 12px;box-shadow:0 10px 40px rgba(0,0,0,.5);
    transform:scale(.96);transition:transform .18s;}
  .cal-mask.show .cal-panel{transform:scale(1);}
  .cal-head{display:flex;align-items:center;gap:6px;margin-bottom:10px;}
  .cal-title{flex:1;text-align:center;font-size:17px;font-weight:700;color:var(--ink);letter-spacing:2px;}
  .cal-arr{background:transparent;border:1px solid var(--line);color:var(--vermilion);font-family:inherit;
    font-size:17px;width:30px;height:28px;border-radius:6px;cursor:pointer;}
  .cal-x{background:transparent;border:1px solid var(--line);color:var(--ink);font-family:inherit;
    font-size:14px;width:28px;height:28px;border-radius:50%;cursor:pointer;line-height:1;}
  .cal-week{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:11px;
    color:#7a6a4e;margin-bottom:4px;letter-spacing:0;}
  .cal-week span:nth-child(1),.cal-week span:nth-child(7){color:var(--vermilion);}
  .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
  .cal-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:15px;
    color:var(--ink);border-radius:8px;cursor:pointer;font-family:inherit;}
  .cal-day.empty{cursor:default;}
  .cal-day.today{color:var(--vermilion);font-weight:700;background:rgba(158,43,37,.10);}
  .cal-day.sel{background:var(--vermilion);color:#f6ead0;font-weight:700;}
  .cal-foot{text-align:center;font-size:11px;color:#8a7a5c;margin-top:10px;letter-spacing:.5px;}
