/* 日子 · 纸墨 */
:root{
  --paper:#F8F3E8;
  --case:#F0E7D4;
  --card:#FFFDF8;
  --line:#E3D9C2;
  --line-strong:#CFC3A6;
  --ink:#241F18;
  --ink2:#6B6257;
  --ink3:#8C8375;
  --zhu:#A32D2D;
  --sun:#FAF5E9;
  --tab-h:56px;
  --song:"Songti SC","STSong","Source Han Serif SC",Georgia,serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--paper);color:var(--ink);
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
  padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom,0px));
}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
button{border:0;background:none;padding:0;cursor:pointer}
.wrap{max-width:520px;margin:0 auto;padding:0 16px}

/* 顶栏 */
.head{
  display:flex;align-items:baseline;justify-content:space-between;
  padding:calc(env(safe-area-inset-top,0px) + 20px) 0 14px;
}
.brand{
  font-family:var(--song);font-size:19px;letter-spacing:.18em;
  position:relative;padding-left:11px;
}
.brand::before{content:'';position:absolute;left:0;top:3px;bottom:3px;width:3px;background:var(--zhu);border-radius:2px}
.head-date{font-size:11.5px;color:var(--ink3);letter-spacing:.02em}

/* 页 */
.page{display:none;padding-bottom:24px}
.page.on{display:block}

/* 今日 · 盘匣 */
.box{background:var(--case);border-radius:14px;padding:9px}
.box-in{background:var(--card);border-radius:10px;padding:17px 15px 15px}

.gz{font-family:var(--song);font-size:46px;line-height:1.1;letter-spacing:.02em;margin-bottom:10px}
.gz .z{color:var(--ink)}
.ten-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:3px}
.chip{
  font-size:12px;color:var(--ink2);border:1px solid var(--line);
  border-radius:20px;padding:2px 9px;line-height:1.5;background:#fff
}
.chip.zhu{color:var(--zhu);border-color:rgba(163,45,45,.32);background:rgba(163,45,45,.05)}
.chip.plain{border:0;background:none;padding:2px 0;color:var(--ink3);font-size:11.5px}

.divider{height:1px;background:var(--line);margin:13px 0 12px}
.tone{font-family:var(--song);font-size:15px;line-height:1.85;color:var(--ink);letter-spacing:.01em}

/* 宜 / 忌 */
.sect{margin-top:15px}
.li-t{font-size:10.5px;color:var(--ink3);letter-spacing:.16em;margin-bottom:5px}
ul.li{list-style:none;margin:0 0 4px;padding:0}
ul.li li{position:relative;padding-left:13px;font-size:13.5px;line-height:1.95;color:var(--ink)}
ul.li li::before{content:'';position:absolute;left:2px;top:.86em;width:4px;height:4px;border-radius:50%;background:var(--ink3)}
ul.li.bad li{color:var(--ink2)}
ul.li.bad li::before{background:none;content:'×';top:0;left:0;width:auto;height:auto;font-size:11px;color:#B9A98F}

/* 标记 */
.marks{display:flex;flex-wrap:wrap;gap:5px 10px;margin-top:14px;font-size:11.5px;color:var(--ink3)}
.marks b{font-weight:500;color:var(--ink2)}
.marks .warn{color:var(--zhu)}
.marks .ok{color:#2F6448}

/* 打卡 */
.check{margin-top:16px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px}
.check .q{font-size:13px;color:var(--ink2);margin-bottom:3px}
.seg{display:flex;background:var(--sun);border-radius:9px;padding:3px;gap:2px}
.seg button{flex:1;padding:9px 0;font-size:13px;color:var(--ink2);border-radius:7px;transition:background .15s}
.seg button.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(60,40,40,.08)}
.note-in{
  width:100%;margin-top:10px;border:1px solid var(--line);border-radius:9px;
  background:var(--sun);padding:10px 11px;font-size:13.5px;resize:none;line-height:1.6;
}
.note-in::placeholder{color:#B3A896}
.saved-hint{font-size:11.5px;color:#2F6448;margin-top:8px}

/* 往后 */
.nitem{border-bottom:1px solid var(--line)}
.nitem:last-child{border-bottom:0}
.nrow{
  display:flex;align-items:center;gap:12px;padding:12px 0;
  border-bottom:1px solid var(--line);
}
.nitem .nrow{border-bottom:0}
.nrow .dd{width:42px;text-align:center;flex:none}
.nrow .dd b{display:block;font-size:20px;font-weight:500;line-height:1.15;font-variant-numeric:tabular-nums}
.nrow .dd s{text-decoration:none;font-size:10px;color:var(--ink3)}
.nrow .mid{flex:1;min-width:0}
.nrow .mid .g{font-family:var(--song);font-size:16px;letter-spacing:.08em}
.nrow .mid .g em{font-style:normal;font-size:11.5px;color:var(--ink3);letter-spacing:0;margin-left:7px;font-family:-apple-system,sans-serif}
.nrow .mid .s{font-size:11.5px;color:var(--ink3);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nrow .tag{font-size:11px;color:var(--ink2);border:1px solid var(--line);border-radius:14px;padding:1px 8px;flex:none;background:#fff}
.nrow.is-today{background:rgba(163,45,45,.045);margin:0 -10px;padding:12px 10px;border-radius:9px}
.nrow.is-today .dd b{color:var(--zhu)}
.ndetail{display:flex;gap:18px;padding:2px 2px 13px 54px;border-top:1px dashed var(--line);margin-top:-2px}
.ndetail ul{list-style:none;margin:0;padding:0;font-size:12px;line-height:1.95;color:var(--ink2)}
.ndetail .h{font-size:10px;color:var(--ink3);letter-spacing:.14em;margin-bottom:2px}

/* 「对你」判断：盘匣内，干支下方 */
.verdict{margin-top:12px;padding:10px 12px;border-radius:8px;background:var(--sun)}
.verdict.lv-favor{background:rgba(47,100,72,.055)}
.verdict.lv-avoid{background:rgba(163,45,45,.05)}
.verdict.v-none{font-size:12px;line-height:1.7;color:var(--ink3)}
.v-top{display:flex;align-items:baseline;gap:7px;margin-bottom:5px}
.v-lv{font-size:13px;font-weight:600;letter-spacing:.03em;color:var(--ink2)}
.lv-favor .v-lv{color:#2F6448}
.lv-avoid .v-lv{color:var(--zhu)}
.v-top i{font-style:normal;font-size:11px;color:var(--ink3)}
.v-t{font-size:13px;line-height:1.75;color:var(--ink)}
.v-drain{font-size:12px;line-height:1.7;color:#8A5A12;margin-top:6px;padding-left:8px;border-left:2px solid rgba(138,90,18,.28)}
.hit{
  margin-top:7px;font-size:12px;line-height:1.65;color:#8A3A3A;
  background:rgba(163,45,45,.055);border-radius:5px;padding:6px 8px;
}
.tag.lv-favor{border-color:rgba(47,100,72,.35);color:#2F6448}
.tag.lv-avoid{border-color:rgba(163,45,45,.28);color:var(--zhu)}

/* 今天会怎样 */
.fc{margin-top:12px;padding-top:11px;border-top:1px dashed var(--line)}
.fc-h{font-size:10.5px;color:var(--ink3);letter-spacing:.16em;margin-bottom:8px}
.fc-row{display:flex;gap:9px;padding:2.5px 0;font-size:12.5px;line-height:1.72}
.fc-k{flex:none;width:26px;color:var(--ink3);font-size:11px;padding-top:2px;letter-spacing:.06em}
.fc-v{flex:1;color:var(--ink)}
.fc-v.warn{color:#8A5A12}

/* 命局设定 */
.cfg-line{font-size:12.5px;color:var(--ink2);line-height:1.7;padding-bottom:10px}
.cfg-line b{font-family:var(--song);font-size:15px;color:var(--ink);font-weight:400;margin-left:2px}
.cfg-row{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-top:1px solid var(--line)}
.cfg-k{width:30px;font-size:11.5px;color:var(--ink3);flex:none;padding-top:7px;letter-spacing:.08em}
.cfg-opts{display:flex;flex-wrap:wrap;gap:5px;flex:1}

.schip{
  font-size:11.5px;padding:4px 8px;border-radius:6px;
  border:1px solid var(--line);color:var(--ink2);background:#fff;line-height:1.6;
}
.schip.on{background:var(--sun);border-color:var(--line-strong);color:var(--ink);font-weight:600}

.gchip{
  display:flex;align-items:center;gap:3px;
  font-size:11.5px;padding:3px 6px;border-radius:6px;line-height:1.65;
  border:1px solid var(--line);color:var(--ink2);background:#fff;
}
.gchip i{
  font-style:normal;font-size:9.5px;line-height:1.5;
  padding:0 3px;border-radius:3px;background:var(--sun);color:var(--ink3);
}
.gchip.favor{border-color:rgba(47,100,72,.35);color:#2F6448;background:rgba(47,100,72,.045)}
.gchip.favor i{background:rgba(47,100,72,.12);color:#2F6448}
.gchip.avoid{border-color:rgba(163,45,45,.3);color:var(--zhu);background:rgba(163,45,45,.045)}
.gchip.avoid i{background:rgba(163,45,45,.1);color:var(--zhu)}

.cfg-tip{font-size:11px;color:var(--ink3);line-height:1.65;margin-top:9px}

.rule-h{
  display:flex;justify-content:space-between;align-items:center;
  margin:16px 0 6px;font-size:10.5px;color:var(--ink3);letter-spacing:.14em;
}
.rule{display:flex;gap:8px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--line)}
.rule:last-child{border-bottom:0}
.rule-k{flex:none;width:22px;font-size:11px;color:var(--zhu);padding-top:2px}
.rule-t{flex:1;font-size:12.5px;line-height:1.68;color:var(--ink2)}
.rule-x{flex:none;color:var(--ink3);font-size:15px;line-height:1;padding:0 2px}

.rule-add{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.rule-add select,.rule-add input{
  border:1px solid var(--line);border-radius:8px;background:#fff;
  padding:8px 9px;font-size:13px;min-width:0;appearance:none;
}
.rule-add select{flex:0 0 62px}
.rule-add .btn-zhu{width:100%;flex:none}
.rule-add input{flex:1}
.rule-add input::placeholder{color:#B3A896}
.btn-mini{width:auto;padding:8px 15px;font-size:12.5px;border-radius:8px;flex:none}

/* 我的 */
.pillars{
  display:grid;grid-template-columns:repeat(4,1fr);
  background:var(--line);gap:1px;border:1px solid var(--line);
  border-radius:10px;overflow:hidden;margin-top:4px;
}
.pillars .pc{background:var(--card);padding:10px 2px;text-align:center}
.pillars .k{display:block;font-size:10.5px;color:var(--ink3);letter-spacing:.08em}
.pillars .v{display:block;font-family:var(--song);font-size:19px;margin-top:3px;letter-spacing:.04em}
.pillars .v.dm{color:var(--zhu)}

.sec{margin-top:22px}
.sec-h{font-size:11px;color:var(--ink3);letter-spacing:.16em;margin-bottom:8px}
.card2{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 15px}

.row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}
.row:last-child{border-bottom:0}
.row label{width:58px;font-size:13px;color:var(--ink2);flex:none}
.row input,.row select{
  flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;
  padding:9px 10px;background:#fff;font-size:15px;appearance:none;
}
.row input:focus,.row select:focus{outline:0;border-color:var(--line-strong)}

.btn-zhu{width:100%;background:var(--zhu);color:#fff;border-radius:10px;padding:13px;font-size:15px;font-weight:600;letter-spacing:.04em}
.btn-zhu:disabled{opacity:.45}
.btn-line{width:100%;border:1px solid var(--line-strong);border-radius:10px;padding:12px;font-size:14px;color:var(--ink2);background:var(--card)}
.btn-sm{font-size:12px;color:var(--zhu);border:1px solid rgba(163,45,45,.3);border-radius:14px;padding:4px 11px}

.stat-row{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:13px}
.stat-row .n{width:52px;color:var(--ink2);flex:none}
.stat-row .bar{flex:1;height:6px;background:var(--sun);border-radius:3px;overflow:hidden}
.stat-row .bar i{display:block;height:100%;background:var(--zhu);border-radius:3px;opacity:.75}
.stat-row .v{width:64px;text-align:right;font-size:11.5px;color:var(--ink3);flex:none;font-variant-numeric:tabular-nums}

.empty{text-align:center;color:var(--ink3);font-size:12.5px;padding:18px 0;line-height:1.9}

/* 今日页补充 */
.dayline{font-size:11.5px;color:var(--ink3);margin:0 0 9px 3px;letter-spacing:.02em}
.q-sub{display:block;color:var(--ink3);font-size:11px;margin-bottom:11px}
.li-t.mt{margin-top:13px}
.fine{font-size:11.5px;color:var(--ink3);line-height:1.7;margin-top:11px}
.who{font-size:13px;color:var(--ink2);margin-top:11px}
.who b{font-family:var(--song);font-size:15px;color:var(--ink);font-weight:400}
.who-sub{font-size:11.5px;color:var(--ink3);margin-top:5px;line-height:1.7}
.note-card p{font-size:12.5px;color:var(--ink2);line-height:1.95;margin:0 0 2px}
.note-card b{font-weight:500;color:var(--ink)}
.note-card .dim{color:var(--ink3);font-size:11px;margin-top:10px}

/* 记录列表 */
.log-item{padding:9px 0;border-bottom:1px solid var(--line)}
.log-item:last-child{border-bottom:0}
.log-top{display:flex;align-items:center;gap:9px}
.ld{font-size:11.5px;color:var(--ink3);font-variant-numeric:tabular-nums;flex:none}
.lg{font-family:var(--song);font-size:14px;letter-spacing:.05em}
.lt{font-size:11.5px;color:var(--ink2)}
.ls{margin-left:auto;font-size:11px;padding:1px 8px;border-radius:12px;flex:none}
.ls-顺{color:#2F6448;background:rgba(47,100,72,.08)}
.ls-平{color:var(--ink2);background:var(--sun)}
.ls-累{color:#8A5A12;background:rgba(138,90,18,.08)}
.ln{font-size:12px;color:var(--ink2);margin-top:4px;line-height:1.65}

/* 引导 */
.intro{background:var(--case);border-radius:14px;padding:22px 18px}
.intro h2{font-family:var(--song);font-size:20px;font-weight:400;margin:0 0 8px;letter-spacing:.04em}
.intro p{font-size:13px;color:var(--ink2);line-height:1.85;margin:0 0 16px}
.form{background:var(--card);border-radius:10px;padding:4px 14px 14px}

/* 底栏 */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:20;
  display:flex;background:rgba(248,243,232,.97);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
.tabbar button{
  flex:1;position:relative;padding:12px 0 13px;
  font-size:12.5px;color:var(--ink3);letter-spacing:.06em;
}
.tabbar button.on{color:var(--ink);font-weight:600}
.tabbar button.on::before{
  content:'';position:absolute;top:5px;left:50%;transform:translateX(-50%);
  width:22px;height:2px;background:var(--zhu);border-radius:1px;
}

/* toast */
.toast{
  position:fixed;left:50%;bottom:calc(var(--tab-h) + 24px);transform:translate(-50%,8px);
  background:rgba(36,31,24,.92);color:#fff;font-size:13px;
  padding:9px 16px;border-radius:20px;opacity:0;pointer-events:none;
  transition:opacity .2s,transform .2s;z-index:50;
}
.toast.on{opacity:1;transform:translate(-50%,0)}

@media (max-width:360px){
  .gz{font-size:40px}
  .wrap{padding:0 12px}
}
