:root{
  --bg:#12100e; --bg2:#1a1714; --card:#201c18; --card2:#262119;
  --line:#332c24; --line2:#443a2e;
  --fg:#f2ece2; --fg2:#bdb3a4; --fg3:#918877;  /* fg3 需 ≥ 4.5:1（WCAG AA）；勿再調暗 */
  --gold:#e3b341; --gold-dim:#8a6d24;
  --red:#e2685e; --blue:#6ea8d8; --green:#79bc8a; --purple:#a98ed8;
  --r:14px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;background:var(--bg);color:var(--fg)}
body{
  font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang TC","Noto Sans TC","Microsoft JhengHei",sans-serif;
  padding-bottom:env(safe-area-inset-bottom);
}
.app{max-width:680px;margin:0 auto;padding:20px 18px 96px}

/* ---------- header ---------- */
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}
.brand{font-size:19px;font-weight:700;letter-spacing:.06em}
.brand span{color:var(--gold)}
.tabs{display:flex;gap:4px;background:var(--bg2);padding:4px;border-radius:11px;border:1px solid var(--line)}
.tabs button{
  background:none;border:0;color:var(--fg3);font:inherit;font-size:13.5px;
  padding:6px 13px;border-radius:8px;cursor:pointer;white-space:nowrap
}
.tabs button.on{background:var(--card2);color:var(--fg)}
.tabs button:hover{color:var(--fg2)}

.streak{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--fg3)}
.streak b{color:var(--gold);font-size:15px}

/* ---------- cards ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:17px 16px;margin-bottom:14px}
.card.tight{padding:14px}
h2{font-size:15px;margin:0 0 4px;letter-spacing:.03em}
.hint{font-size:12.5px;color:var(--fg3);margin:0 0 12px;line-height:1.6}
.layer-head{display:flex;align-items:center;gap:8px;margin-bottom:3px}
.dot{width:8px;height:8px;border-radius:50%;flex:none}
.dot.fact{background:var(--blue)} .dot.assume{background:var(--purple)} .dot.emotion{background:var(--red)}

textarea,input[type=text],input[type=date],select{
  width:100%;background:var(--bg2);border:1px solid var(--line2);color:var(--fg);
  border-radius:10px;padding:11px 12px;font:inherit;font-size:16px;line-height:1.6;resize:vertical;
}
textarea{min-height:82px}
textarea::placeholder,input::placeholder{color:#8a7f70}
textarea:focus,input:focus,select:focus{outline:none;border-color:var(--gold-dim);background:#191612}

.field{margin-bottom:14px}
.field:last-child{margin-bottom:0}
label.lbl{display:block;font-size:13px;color:var(--fg2);margin-bottom:5px}

.btn{
  background:var(--gold);color:#1a1508;border:0;border-radius:10px;
  font:inherit;font-weight:700;font-size:15px;padding:12px 18px;cursor:pointer
}
.btn:disabled{opacity:.35;cursor:not-allowed}
.btn.ghost{background:none;border:1px solid var(--line2);color:var(--fg2);font-weight:500}
.btn.wide{width:100%}
.row{display:flex;gap:9px;flex-wrap:wrap;align-items:center}
.spacer{flex:1}

/* ---------- step nav ---------- */
.steps{display:flex;gap:6px;margin-bottom:16px;align-items:center}
.steps i{height:3px;flex:1;background:var(--line2);border-radius:2px;display:block}
.steps i.on{background:var(--gold)}

/* ---------- yesterday banner ---------- */
.yest{background:linear-gradient(135deg,#241d10,#201c18);border:1px solid var(--gold-dim);border-radius:var(--r);padding:15px 16px;margin-bottom:14px}
.yest .tag{font-size:11.5px;color:var(--gold);letter-spacing:.1em;margin-bottom:7px}
.yest .txt{font-size:16px;line-height:1.7;margin-bottom:12px}
.yest .row{gap:8px}
.btn.sm{font-size:13.5px;padding:8px 13px}

/* ---------- entries ---------- */
.entry{border-left:2px solid var(--line2);padding:2px 0 2px 13px;margin-bottom:15px}
.entry .meta{font-size:12px;color:var(--fg3);margin-bottom:5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.entry .ev{font-size:15.5px;font-weight:600;margin-bottom:7px}
.entry .if{font-size:14.5px;color:var(--gold);background:#1d1a12;border-radius:8px;padding:8px 11px;line-height:1.6}
.entry details{margin-top:8px}
.entry summary{font-size:12.5px;color:var(--fg3);cursor:pointer;list-style:none}
.entry summary::-webkit-details-marker{display:none}
.entry summary::before{content:"▸ ";}
.entry details[open] summary::before{content:"▾ ";}
.entry .layer{margin-top:9px;font-size:13.5px;color:var(--fg2);line-height:1.65}
.entry .layer b{color:var(--fg);font-weight:600;display:block;font-size:12px;letter-spacing:.06em;margin-bottom:2px}
.entry .layer>div{margin-bottom:8px}
.pill{display:inline-block;font-size:11px;padding:2px 8px;border-radius:20px;border:1px solid var(--line2);color:var(--fg3)}
.pill.used{border-color:var(--green);color:var(--green)}
.pill.unused{border-color:var(--line2);color:var(--fg3)}

.empty{text-align:center;color:var(--fg3);font-size:14px;padding:38px 10px;line-height:1.8}

/* ---------- week ---------- */
.week-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
.week-head .n{font-size:26px;font-weight:700}
.week-head .n small{font-size:13px;color:var(--fg3);font-weight:400;margin-left:6px}
.themes{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.theme{display:flex;align-items:center;gap:10px}
.theme .w{flex:1;background:var(--bg2);border-radius:5px;height:22px;position:relative;overflow:hidden}
.theme .w i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,var(--gold-dim),var(--gold));border-radius:5px}
.theme .t{font-size:13.5px;min-width:74px}
.theme .c{font-size:12px;color:var(--fg3);width:22px;text-align:right}

/* ---------- month / stats ---------- */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px}
.stat .k{font-size:12px;color:var(--fg3);margin-bottom:5px}
.stat .v{font-size:23px;font-weight:700}
.stat .v small{font-size:12px;color:var(--fg3);font-weight:400;margin-left:3px}
.heat{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,1fr);gap:3px;overflow-x:auto;padding-bottom:5px}
.heat i{width:12px;height:12px;border-radius:3px;background:var(--bg2);border:1px solid #241f1a;display:block}
.heat i.l1{background:#3d3016;border-color:#4a3a19}
.heat i.l2{background:#6d5520;border-color:#7d6227}
.heat i.l3{background:#a5832d;border-color:#b38f31}
.heat i.l4{background:var(--gold);border-color:var(--gold)}
.heat i.today{outline:1.5px solid var(--fg2);outline-offset:1px}

.toast{
  position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);
  background:var(--card2);border:1px solid var(--line2);color:var(--fg);
  padding:11px 18px;border-radius:11px;font-size:14px;opacity:0;pointer-events:none;
  transition:.25s;z-index:50;max-width:88vw;text-align:center
}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

.warn{background:#2a1c16;border:1px solid #6b3a2c;color:#f0c9b6;border-radius:11px;padding:12px 14px;font-size:13px;margin-bottom:14px;line-height:1.6}
.foot{text-align:center;color:var(--fg3);font-size:11.5px;margin-top:26px;line-height:1.8}
/* Mac / 平板：加寬內容並在寬螢幕改用雙欄，避免長表單拉得太高。
   手機完全不影響（這些規則只在 ≥900px 生效）。 */
@media (min-width:900px){
  .app{max-width:980px;padding:28px 28px 96px}
  .two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
  .two-col > .card{margin-bottom:0}
  .two-col > *{min-width:0}
  .tabs button{font-size:14px;padding:7px 16px}
  textarea{min-height:96px}
}
@media (min-width:1280px){
  .app{max-width:1080px}
}
@media (max-width:400px){ .grid2{grid-template-columns:1fr} .brand{font-size:17px} }
