/* ============================================================
   KAMI OS — CYCLE 5 · HABITS OVERHAUL (.c5h- namespace)
   Habit System cards + rings + perfect days · Daily Log merged view
   Mobile-first: tuned for 361px content width.
   ============================================================ */

/* ---------- Perfect-days hero strip ---------- */
.c5h-perfect {
  display: flex; align-items: center; gap: 16px;
  padding: 14px 16px; margin-bottom: 14px;
  border: 1px solid var(--glass-border); border-radius: var(--radius);
  background: linear-gradient(135deg, var(--good-dim), rgba(4, 8, 14, 0.5));
}
.c5h-perfect-num {
  font-family: var(--font-display); font-size: 40px; font-weight: 700;
  color: var(--good); line-height: 1; text-shadow: 0 0 18px rgba(46, 230, 166, 0.35);
}
.c5h-perfect-info { min-width: 0; flex: 1; }
.c5h-perfect-label { font-size: 13px; font-weight: 600; color: var(--text); }
.c5h-perfect-sub { font-size: 10.5px; color: var(--text-faint); margin-top: 4px; }
.c5h-month-dots { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 6px; }
.c5h-mdot { width: 7px; height: 7px; border-radius: 50%; background: rgba(255, 255, 255, 0.08); }
.c5h-mdot.part { background: var(--warn-dim); box-shadow: inset 0 0 0 1px var(--warn); }
.c5h-mdot.on { background: var(--good); box-shadow: 0 0 5px rgba(46, 230, 166, 0.5); }
.c5h-mdot.future { opacity: 0.25; }
.c5h-mdot.today { outline: 1px solid var(--accent); outline-offset: 1px; }

/* ---------- Habit cards (thumb-first toggle rows) ---------- */
.c5h-list { display: flex; flex-direction: column; gap: 10px; }
@media (min-width: 1100px) { .c5h-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: start; } }
.c5h-card {
  border: 1px solid var(--glass-border); border-radius: var(--radius);
  background: rgba(4, 8, 14, 0.45); overflow: hidden;
  transition: border-color 0.15s var(--ease), background 0.15s var(--ease);
}
.c5h-card.done { border-color: rgba(46, 230, 166, 0.35); background: linear-gradient(135deg, var(--good-dim), rgba(4, 8, 14, 0.45)); }
.c5h-row {
  display: flex; align-items: center; gap: 12px; width: 100%;
  min-height: 56px; padding: 10px 14px; text-align: left;
  background: none; border: none; color: var(--text); cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.c5h-row:active { transform: scale(0.985); }
.c5h-check {
  flex-shrink: 0; width: 26px; height: 26px; border-radius: 50%;
  border: 2px solid var(--text-faint); display: grid; place-items: center;
  font-size: 14px; font-weight: 700; color: #00141a;
  transition: all 0.15s var(--ease);
}
.c5h-card.done .c5h-check { background: var(--good); border-color: var(--good); box-shadow: 0 0 12px -2px rgba(46, 230, 166, 0.6); }
.c5h-name { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.c5h-name b { font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.c5h-card.done .c5h-name b { color: var(--good); }
.c5h-name small { font-family: var(--font-mono); font-size: 10px; color: var(--text-faint); }

/* ---------- 30-day completion ring ---------- */
.c5h-ring { flex-shrink: 0; width: 40px; height: 40px; }
.c5h-ring-track { fill: none; stroke: rgba(255, 255, 255, 0.08); stroke-width: 4; }
.c5h-ring-fill { fill: none; stroke-width: 4; stroke-linecap: round; transition: stroke-dashoffset 0.4s var(--ease); }
.c5h-ring.good .c5h-ring-fill { stroke: var(--good); }
.c5h-ring.warn .c5h-ring-fill { stroke: var(--warn); }
.c5h-ring.low .c5h-ring-fill { stroke: var(--bad); }
.c5h-ring-num { font-family: var(--font-mono); font-size: 11px; fill: var(--text-dim); text-anchor: middle; }

/* ---------- Card stat strip: streak · best · 4-week grid ---------- */
.c5h-stats {
  display: flex; align-items: center; gap: 14px;
  padding: 8px 14px 10px; border-top: 1px solid rgba(255, 255, 255, 0.05);
}
.c5h-stat { display: flex; flex-direction: column; gap: 1px; }
.c5h-stat i { font-family: var(--font-mono); font-style: normal; font-size: 8.5px; letter-spacing: 1px; text-transform: uppercase; color: var(--text-faint); }
.c5h-stat b { font-family: var(--font-mono); font-size: 13px; color: var(--text-dim); }
.c5h-stat b.hot { color: var(--warn); text-shadow: 0 0 8px var(--warn-dim); }
.c5h-grid {
  margin-left: auto; display: grid;
  grid-template-columns: repeat(7, 10px); grid-auto-rows: 10px; gap: 3px;
}
.c5h-cell { width: 10px; height: 10px; border-radius: 3px; background: rgba(255, 255, 255, 0.07); }
.c5h-cell.on { background: var(--accent); box-shadow: 0 0 4px var(--accent-glow); }
.c5h-cell.today { outline: 1px solid var(--warn); outline-offset: 1px; }
.c5h-cell.today.on { outline-color: var(--accent); }

/* ---------- Chain repair (backfill yesterday) ---------- */
.c5h-repair {
  display: block; width: 100%; padding: 8px 14px; text-align: left;
  background: var(--warn-dim); border: none; border-top: 1px solid rgba(255, 176, 32, 0.25);
  color: var(--warn); font-family: var(--font-mono); font-size: 10.5px; cursor: pointer;
}
.c5h-repair:active { background: rgba(255, 176, 32, 0.25); }

/* ---------- Daily Log: thumb-size pending rows ---------- */
.c5h-tap { min-height: 52px; }
.c5h-tap:active { transform: scale(0.985); border-color: var(--glass-border-hot); }

/* ---------- Daily Log: merged day view (sections + chips) ---------- */
.c5h-sec { display: flex; gap: 10px; align-items: flex-start; padding: 7px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.04); }
.c5h-sec:last-child, .c5h-line:last-child { border-bottom: none; }
.c5h-sec-tag {
  font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.5px;
  text-transform: uppercase; min-width: 52px; flex-shrink: 0; padding-top: 4px;
}
.c5h-sec-tag.cal { color: #7dd3fc; }
.c5h-sec-tag.hab { color: var(--warn); }
.c5h-sec-tag.money { color: var(--bad); }
.c5h-sec-tag.jp { color: var(--good); }
.c5h-sec-tag.health { color: var(--accent-3); }
.c5h-sec-tag.dim { color: var(--text-faint); }
.c5h-chips { display: flex; flex-wrap: wrap; gap: 5px; min-width: 0; }
.c5h-chip {
  font-size: 11px; line-height: 1.4; padding: 3px 9px;
  border-radius: 999px; border: 1px solid var(--glass-border);
  background: rgba(4, 8, 14, 0.4); color: var(--text-dim); max-width: 100%;
}
.c5h-chip.mono { font-family: var(--font-mono); }
.c5h-chip.good { color: var(--good); border-color: rgba(46, 230, 166, 0.3); }
.c5h-chip.bad { color: var(--bad); border-color: rgba(255, 77, 109, 0.3); }
.c5h-chip.warn { color: var(--warn); border-color: rgba(255, 176, 32, 0.3); }
.c5h-chip.accent { color: var(--accent); border-color: rgba(0, 229, 255, 0.3); }
.c5h-chip.dim { color: var(--text-faint); }

.c5h-blocks { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; }
.c5h-block {
  display: flex; gap: 8px; align-items: baseline;
  font-size: 12.5px; line-height: 1.45; padding: 4px 8px;
  border-radius: var(--radius-sm); color: var(--text-dim);
}
.c5h-block.done { color: var(--good); background: var(--good-dim); }
.c5h-block.missed { color: var(--text-faint); }
.c5h-block.missed .c5h-block-check { color: var(--bad); }
.c5h-block.open { cursor: pointer; border: 1px dashed rgba(255, 176, 32, 0.35); color: var(--text); }
.c5h-block.open:active { background: var(--warn-dim); }
.c5h-block-check { font-weight: 700; flex-shrink: 0; }
.c5h-line { display: flex; gap: 10px; align-items: flex-start; padding: 7px 0; font-size: 12.5px; line-height: 1.45; color: var(--text-dim); border-bottom: 1px solid rgba(255, 255, 255, 0.04); }
