/* 世界树 · 纸墨风共用样式（2026-10-09 起）
   与每日时间块海报同一套语言：纸底 + 淡方格 + 墨线 + 五色象限 */
:root{
  --paper:#f5f2ea;
  --ink:#26312f;
  --dim:#7c827c;
  --faint:#a8aca4;
  --grid:rgba(38,49,47,.055);
  --rule:rgba(38,49,47,.18);
  --rule2:rgba(38,49,47,.08);
  /* 框线：两块新档，让各区块边界分明 */
  --frame:rgba(38,49,47,.45);
  --frame-soft:rgba(38,49,47,.24);
  --fin:#C94F43;
  --soc:#E6B85C;
  --hea:#356B4D;
  --men:#5B4B91;
  --gra:#A5AAA7;
  --bad:#C94F43;
  --warn:#C94F43;
  --ok:#356B4D;
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB",-apple-system,sans-serif;
  font-size:14px;line-height:1.62;
  min-height:100vh;
  padding:0 0 60px;
  background-image:
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:62px 62px;
}
.sheet{
  max-width:1440px;margin:0 auto;padding:40px 84px 50px;
  border-top:3px solid var(--ink);
}
.serif{font-family:inherit}

/* ---------- 页头 ---------- */
header{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:20px}
.wordmark{display:flex;align-items:baseline;gap:16px}
.wordmark h1{font-size:26px;font-weight:800;letter-spacing:.06em;line-height:1}
.wordmark .sub{color:var(--faint);font-size:12px;font-weight:700;letter-spacing:.26em}
.today{text-align:right;line-height:1.1}
.today .date{font-size:20px;font-weight:800;letter-spacing:.02em;font-variant-numeric:tabular-nums}
.today .date b{font-weight:800}
.pill{display:inline-block;margin-top:8px;padding:3px 0;font-size:12px;font-weight:700;letter-spacing:.16em;border-bottom:2px solid}
.pill.filled{color:var(--hea);border-color:var(--hea)}
.pill.partial{color:var(--fin);border-color:var(--fin)}
.pill.open{color:var(--dim);border-color:var(--rule)}

/* ---------- 昨日简报 ---------- */
.brief{
  border:1px solid var(--frame-soft);padding:15px 22px;margin-bottom:6px;
  display:flex;align-items:baseline;gap:20px;flex-wrap:wrap;
}
.brief .label{color:var(--faint);font-size:12px;font-weight:700;letter-spacing:.26em;flex-shrink:0}
.brief .txt{color:var(--ink);font-size:14px;flex:1;min-width:200px}
.brief .stats{display:flex;gap:32px}
.brief .stats .it{text-align:right}
.brief .stats .n{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.brief .stats .k{font-size:11px;color:var(--faint);font-weight:700;letter-spacing:.14em}

/* ---------- 月份 tabs ---------- */
.tabs{display:flex;gap:26px;padding:20px 0 22px;border-top:1px solid var(--rule);flex-wrap:wrap}
.tab{
  font-size:15px;font-weight:700;color:var(--faint);letter-spacing:.04em;
  cursor:pointer;user-select:none;padding-bottom:5px;border-bottom:3px solid transparent;
  font-variant-numeric:tabular-nums;
}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--ink);border-bottom-color:var(--ink)}

/* ---------- hero ---------- */
.hero{display:grid;grid-template-columns:minmax(300px,400px) minmax(0,1fr);gap:34px;padding:26px 0 30px;align-items:stretch}
.panel{border:1px solid var(--frame-soft);padding:22px 24px 24px;display:flex;flex-direction:column}
.panel h3{font-size:12px;font-weight:800;letter-spacing:.32em;color:var(--dim);margin-bottom:18px}
.tree-panel svg{width:100%;height:auto;display:block}
.tree-total{margin-top:6px;display:flex;align-items:baseline;gap:10px}
.tree-total .n{font-size:88px;font-weight:800;line-height:.9;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.tree-total .u{font-size:12px;font-weight:700;color:var(--dim);letter-spacing:.2em}
.bars{display:flex;flex-direction:column;gap:16px}
.bar-row .top{display:flex;justify-content:space-between;font-size:14px;margin-bottom:6px}
.bar-row .top .q{font-weight:700}
.bar-row .top .v{color:var(--dim);font-weight:700;font-variant-numeric:tabular-nums}
.bar-track{height:11px;background:var(--rule2);border:1px solid var(--frame-soft)}
.bar-fill{height:100%;transition:width .6s cubic-bezier(.22,.8,.36,1)}
.ratio-line{margin-top:22px;padding-top:16px;border-top:1px solid var(--rule);font-size:13px;color:var(--dim);display:flex;justify-content:space-between;font-weight:700;letter-spacing:.04em}
.ratio-line b{color:var(--ink);font-weight:800;font-variant-numeric:tabular-nums}
.dryline{margin-top:12px;font-size:13px;font-weight:700}
.dryline .warn{color:var(--fin)}

/* ---------- 计划条 ---------- */
.cal-section{display:flex;align-items:baseline;gap:16px;margin:30px 0 18px;padding-top:24px;border-top:1px solid var(--rule)}
.cal-section h2{font-size:12px;font-weight:800;letter-spacing:.32em;color:var(--dim)}
.cal-section .hint{color:var(--faint);font-size:11px;letter-spacing:.06em}
.plan-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}
.plan-card{border:1px solid var(--frame-soft);border-top:3px solid var(--frame);padding:11px 12px 12px;min-width:0}
.plan-card.today{border-color:var(--fin)}
.plan-card .pdate{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.plan-card .pdate small{color:var(--faint);font-size:11px;font-weight:700;letter-spacing:.14em}
.plan-item{display:flex;gap:6px;align-items:flex-start;padding:6px 0;border-bottom:1px solid var(--rule2);font-size:12px}
.plan-item:last-of-type{border-bottom:none}
.plan-item input[type=checkbox]{accent-color:#26312f;cursor:pointer;flex-shrink:0;margin-top:3px}
.plan-item .ptime{color:var(--faint);font-size:11px;font-variant-numeric:tabular-nums;flex-shrink:0;font-weight:700}
.plan-item .ptitle{flex:1;cursor:pointer;font-weight:700;line-height:1.4}
.plan-item .ptitle:hover{text-decoration:underline}
.plan-item.done .ptitle{text-decoration:line-through;color:var(--faint)}
.plan-item .pdel{background:none;border:none;color:var(--faint);cursor:pointer;font-size:14px;flex-shrink:0;line-height:1}
.plan-item .pdel:hover{color:var(--fin)}

/* ---------- 日历 ---------- */
.cal-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;padding:4px 0 12px}
.cal-head span{font-size:11px;font-weight:700;color:var(--faint);letter-spacing:.24em}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;grid-auto-rows:min-content}
.day{min-height:88px;cursor:pointer;position:relative;border:1px solid var(--frame-soft);padding:10px 11px 12px}
.day .dtop{display:flex;align-items:baseline;gap:6px}
.day .dnum{font-size:25px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--faint);line-height:1}
.day.has{border-color:var(--frame)}
.day.has .dnum{color:var(--ink)}
.day.today{border-color:var(--fin)}
.day.today .dnum{color:var(--fin)}
.day .dnum small{font-size:11px;font-weight:700;color:var(--faint);margin-left:3px}
.band{display:flex;height:12px;margin-top:10px;background:rgba(38,49,47,.05);overflow:hidden}
.band i{display:block;height:100%;flex:0 0 auto}
.day .dhours{font-size:12px;font-weight:700;color:var(--dim);margin-top:8px;font-variant-numeric:tabular-nums;letter-spacing:.04em}
.day.today .dhours{color:var(--fin)}
.day.empty{border-color:transparent;opacity:.3;cursor:default}
.day .coverimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.16;z-index:-1}

footer{margin-top:44px;padding-top:18px;border-top:1px solid var(--rule);color:var(--faint);font-size:11px;letter-spacing:.14em;font-weight:700}

/* ---------- 弹窗 ---------- */
.overlay{position:fixed;inset:0;background:rgba(38,49,47,.34);display:none;align-items:flex-start;justify-content:center;z-index:50;padding:52px 20px;overflow-y:auto}
.overlay.show{display:flex}
.modal{background:var(--paper);border:1px solid var(--frame);border-top:3px solid var(--ink);border-bottom:3px solid var(--ink);width:min(760px,100%);padding:30px 40px 34px}
.modal h2{font-size:26px;font-weight:800;letter-spacing:.02em}
.modal .msub{color:var(--dim);font-size:12px;font-weight:700;margin:8px 0 24px;letter-spacing:.12em}
.coverbox{position:relative;height:170px;border:1px dashed var(--rule);margin-bottom:22px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.coverbox img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.coverbox .ph{color:var(--faint);font-size:12px;font-weight:700;letter-spacing:.16em;z-index:1}
.coverbox .uploadbtn{position:absolute;right:12px;bottom:12px;z-index:2;background:var(--paper);border:1px solid var(--rule);color:var(--ink);padding:5px 14px;font-size:12px;font-weight:700;cursor:pointer;letter-spacing:.06em}
.coverbox .uploadbtn:hover{border-color:var(--ink)}
.entry{border-bottom:1px solid var(--rule2);padding:10px 0;display:flex;align-items:center;gap:14px}
.entry .time{font-variant-numeric:tabular-nums;color:var(--dim);font-size:12px;width:82px;flex-shrink:0;font-weight:700}
.entry .qchip{font-size:11px;font-weight:700;flex-shrink:0;border-bottom:2px solid;padding-bottom:1px;letter-spacing:.04em}
.entry .act{flex:1;font-size:13px;font-weight:700}
.entry .act .notes{color:var(--faint);font-size:11px;font-weight:400;margin-top:3px}
.entry .dur{font-size:12px;color:var(--ink);font-variant-numeric:tabular-nums;flex-shrink:0;font-weight:700}
.entry .ops{display:flex;gap:8px;flex-shrink:0}
.entry .ops button{background:none;border:none;color:var(--faint);font-size:12px;font-weight:700;cursor:pointer;padding:2px 0;border-bottom:1px solid transparent}
.entry .ops button:hover{color:var(--ink);border-bottom-color:var(--ink)}
.entry .ops button.del:hover{color:var(--fin);border-bottom-color:var(--fin)}
.entry.unconfirmed{opacity:.7}
.form-row{display:flex;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--rule);flex-wrap:wrap}
.form-row input,.form-row select{background:transparent;border:1px solid var(--rule);color:var(--ink);padding:8px 10px;font-size:13px;font-family:inherit;outline:none;font-weight:700}
.form-row input:focus,.form-row select:focus{border-color:var(--ink)}
.form-row input[type=time]{width:98px;font-variant-numeric:tabular-nums}
.form-row input.act{flex:1;min-width:160px;font-weight:400}
.modal-actions{display:flex;gap:14px;margin-top:24px;align-items:center}
.btn{padding:9px 0;border:none;border-bottom:2px solid var(--ink);background:none;color:var(--ink);font-size:12px;font-weight:800;cursor:pointer;letter-spacing:.16em;font-family:inherit}
.btn:hover{opacity:.62}
.btn.primary{border-bottom-color:var(--fin);color:var(--fin)}
.btn.close{margin-left:auto;border-bottom-color:var(--rule);color:var(--faint)}

.toast{position:fixed;bottom:34px;left:50%;transform:translateX(-50%) translateY(14px);background:var(--ink);color:var(--paper);padding:11px 26px;font-size:13px;font-weight:700;letter-spacing:.06em;opacity:0;transition:all .22s ease;pointer-events:none;z-index:99}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media (max-width:1100px){
  .sheet{padding:32px 32px 44px}
  .hero{grid-template-columns:1fr;gap:34px}
  .plan-strip{grid-template-columns:repeat(2,1fr)}
  .cal-grid{gap:10px}
}
