:root{
  --paper:#F1F2EE;
  --paper-2:#E8EAE3;
  --card:#F8F9F5;
  --ink:#1F2D27;
  --ink-soft:#566159;
  --pine:#3C6B57;
  --pine-deep:#2C5041;
  --amber:#E0A23B;
  --amber-soft:#F6E7C6;
  --brick:#B1543E;
  --moss:#6E9A6B;
  --rule:#D6DAD2;
  --line:#C7CCC3;
  --serif:"Noto Serif SC","Songti SC","Source Han Serif SC",serif;
  --sans:"Noto Sans SC",system-ui,-apple-system,"PingFang SC",sans-serif;
  --mono:"IBM Plex Mono","JetBrains Mono",ui-monospace,"SFMono-Regular",monospace;
}
*{box-sizing:border-box;}
html,body{margin:0;height:100%;}
body{
  font-family:var(--sans);
  color:var(--ink);
  background:var(--paper);
  display:grid;
  grid-template-columns:296px 1fr;
  height:100vh;
  overflow:hidden;
}
/* ---------- sidebar ---------- */
.sidebar{
  background:var(--paper-2);
  border-right:1px solid var(--line);
  padding:26px 18px;
  overflow-y:auto;
}
.brand{margin-bottom:22px;padding-left:6px;}
.brand h1{
  font-family:var(--serif);
  font-weight:700;font-size:21px;margin:0;letter-spacing:.04em;color:var(--ink);
}
.brand .sub{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--pine);margin-top:6px;
}
.side-group{margin-bottom:4px;}
.tree-label{
  font-family:var(--serif);font-weight:700;font-size:15px;
  color:var(--pine-deep);padding:10px 6px 6px;cursor:pointer;
}
.tree-label.sub{
  font-family:var(--mono);font-weight:500;font-size:12px;letter-spacing:.1em;
  color:var(--ink-soft);padding-left:14px;
}
.tree-item{
  font-family:var(--mono);font-size:13px;color:var(--ink);
  padding:7px 6px 7px 30px;border-radius:6px;cursor:pointer;
  border-left:2px solid transparent;transition:background .15s,color .15s;
}
.tree-item:hover{background:var(--card);}
.tree-item.active{background:var(--card);color:var(--pine-deep);border-left-color:var(--pine);font-weight:500;}
.tree-todo{
  margin-top:18px;padding:9px 6px 9px 30px;font-family:var(--mono);font-size:13px;
  cursor:pointer;border-radius:6px;border-left:2px solid transparent;color:var(--ink);
}
.tree-todo:hover{background:var(--card);}
.tree-todo.active{background:var(--card);color:var(--pine-deep);border-left-color:var(--amber);}
/* ---------- main ---------- */
.main{overflow-y:auto;padding:40px 48px 80px;}
.wrap{max-width:760px;margin:0 auto;}
.crumb{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--ink-soft);text-transform:uppercase;margin-bottom:18px;}
.day-head{display:flex;align-items:flex-end;gap:16px;border-bottom:1.5px solid var(--ink);padding-bottom:14px;margin-bottom:30px;}
.day-head .date{font-family:var(--serif);font-weight:700;font-size:38px;line-height:1;color:var(--ink);}
.day-head .meta{font-family:var(--mono);font-size:12px;color:var(--ink-soft);padding-bottom:4px;}
.ribbon{margin-left:auto;font-family:var(--mono);font-size:11px;letter-spacing:.08em;padding:4px 10px;border-radius:6px;border:1px solid transparent;background:transparent;}
.ribbon.bad{color:var(--brick);border-color:var(--brick);}
.ribbon.good{color:var(--moss);border-color:var(--moss);}
.ribbon.neutral{color:var(--ink-soft);border-color:var(--line);}
.section-title{
  font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--pine);margin:34px 0 16px;display:flex;align-items:center;gap:10px;
}
.section-title::after{content:"";flex:1;height:1px;background:var(--rule);}
/* axis */
.axis{position:relative;padding-left:26px;}
.axis::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:var(--line);}
.plan-node{position:relative;margin-bottom:18px;}
.plan-node .dot{position:absolute;left:-23px;top:6px;width:11px;height:11px;border-radius:50%;background:var(--pine);box-shadow:0 0 0 4px var(--paper);}
.plan-time{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--pine-deep);margin-bottom:5px;}
.plan-card{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:12px 15px;font-size:15px;line-height:1.6;}
/* review */
.review-item{border-left:2px solid var(--line);padding:4px 0 16px 16px;margin-bottom:6px;}
.review-item .topic{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink-soft);margin-bottom:5px;}
.review-item .content{font-size:15px;line-height:1.65;color:var(--ink);}
.review-item b{color:var(--pine-deep);font-weight:500;}
/* happy */
.happy-row{display:flex;flex-wrap:wrap;gap:10px;}
.happy-pill{
  background:var(--amber-soft);border:1px solid #EBD49B;color:#8a5e15;
  font-size:14px;padding:7px 12px;border-radius:8px;line-height:1.35;
}
/* prose / quote (trueMe) */
.prose{font-size:15px;line-height:1.85;color:var(--ink);margin-bottom:16px;}
.quote{font-family:var(--serif);font-style:italic;font-size:16.5px;line-height:1.7;color:var(--pine-deep);border-left:3px solid var(--amber);padding:6px 0 6px 14px;margin:4px 0 18px;}
.goals{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:6px;}
.goals .happy-pill::before{content:"";}
/* todo */
.todo-item{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:14px 16px;margin-bottom:12px;}
.todo-top{display:flex;align-items:center;gap:10px;margin-bottom:6px;}
.tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;padding:3px 9px;border-radius:5px;background:var(--paper-2);color:var(--ink-soft);}
.todo-title{font-family:var(--serif);font-weight:500;font-size:16px;}
.todo-done{margin-left:auto;font-family:var(--mono);font-size:11px;padding:3px 10px;border-radius:20px;}
.todo-done.y{background:var(--moss);color:#fff;}
.todo-done.n{background:var(--paper-2);color:var(--ink-soft);}
.todo-note{font-size:13px;color:var(--ink-soft);line-height:1.55;margin:6px 0;}
.todo-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
.todo-links a{font-family:var(--mono);font-size:11px;color:var(--pine);text-decoration:none;border-bottom:1px dashed var(--pine);}
.todo-links a:hover{color:var(--pine-deep);}
.todo-item.is-done{opacity:.55;}
.todo-item.is-done .todo-title{text-decoration:line-through;}
.todo-item.carry-warn{border-color:var(--brick);background:#FBF0EC;}
.carry-badge{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;padding:3px 9px;border-radius:20px;background:var(--brick);color:#fff;margin-left:8px;}
.empty{font-size:14px;color:var(--ink-soft);font-style:italic;background:var(--card);border:1px dashed var(--line);border-radius:10px;padding:14px 16px;line-height:1.6;}
.kv{font-family:var(--mono);font-size:12px;color:var(--ink-soft);margin-bottom:14px;}
.indicators{display:flex;flex-direction:column;gap:14px;margin-bottom:8px;}
.ind-item{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;}
.ind-name{font-family:var(--serif);font-weight:600;font-size:15px;margin-bottom:4px;}
.ind-val{font-family:var(--mono);font-size:12px;color:var(--ink-soft);margin-bottom:8px;}
.ind-bar{height:7px;border-radius:4px;background:var(--paper-2);overflow:hidden;}
.ind-fill{height:100%;background:var(--pine);border-radius:4px;}
::selection{background:var(--amber-soft);}
.sidebar::-webkit-scrollbar,.main::-webkit-scrollbar{width:8px;}
.sidebar::-webkit-scrollbar-thumb,.main::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px;}

/* ---------- dashboard / 面板网格 ---------- */
.wrap.wide{max-width:1180px;}
.dash{display:grid;grid-template-columns:repeat(12,1fr);gap:18px;align-items:start;margin-top:6px;}
.col-3{grid-column:span 3;} .col-4{grid-column:span 4;} .col-5{grid-column:span 5;}
.col-6{grid-column:span 6;} .col-7{grid-column:span 7;} .col-8{grid-column:span 8;}
.col-12{grid-column:span 12;}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin:8px 0 2px;}
.kpi{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:16px 18px;}
.kpi-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);}
.kpi-val{font-family:var(--serif);font-weight:700;font-size:30px;line-height:1.05;color:var(--ink);margin:9px 0 3px;}
.kpi-sub{font-family:var(--mono);font-size:11px;color:var(--ink-soft);}
.kpi.good .kpi-val{color:var(--moss);} .kpi.bad .kpi-val{color:var(--brick);}
.panel{background:var(--card);border:1px solid var(--rule);border-radius:12px;overflow:hidden;
  display:flex;flex-direction:column;min-width:0;}
.panel-head{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--pine);padding:13px 18px;border-bottom:1px solid var(--rule);
  background:var(--card);}
.panel-body{padding:16px 18px;}
/* 单天日记：更宽 + 横向瀑布流（多列 masonry，卡片按高度自然流动） */
.day-flow{columns:3;column-gap:18px;margin-top:6px;}
.day-flow .panel{break-inside:avoid;margin:0 0 18px;width:100%;}
@media(max-width:1080px){.day-flow{columns:2;}}
@media(max-width:720px){.day-flow{columns:1;}}
@media(max-width:1080px){
  .col-7,.col-8{grid-column:span 12;} .col-5{grid-column:span 12;}
  .col-4{grid-column:span 6;} .col-3{grid-column:span 6;}
}
@media(max-width:720px){
  .dash{gap:14px;} [class*="col-"]{grid-column:span 12 !important;} .kpi-grid{grid-template-columns:1fr 1fr;}
}
