/* filter chips */
.chip-row { display: flex; flex-wrap: wrap; gap: 6px; }
.filter-chip { font: 600 13px var(--font-fun); color: var(--ink); background: var(--card); border: 2px solid var(--line); border-radius: 999px; padding: 3px 12px; cursor: pointer; transition: transform 180ms cubic-bezier(0.34, 1.56, 0.64, 1); }
.filter-chip:hover { transform: rotate(-3deg) scale(1.06); }
.filter-chip.active { background: var(--accent); color: #0b1424; border-color: #fff9; box-shadow: 0 0 10px var(--accent); }

/* ubuntu bots */
.bot-card { align-items: center !important; }
.status-light { width: 14px; height: 14px; border-radius: 50%; flex-shrink: 0; margin-top: 6px; align-self: flex-start; background: #6f93b3; border: 2px solid #fff8; }
.health-running .status-light { background: var(--mint); box-shadow: 0 0 10px var(--mint); animation: glow-pulse 2.4s ease-in-out infinite; }
.health-crash-looping .status-light, .health-failed .status-light { background: var(--danger); box-shadow: 0 0 10px var(--danger); animation: glow-pulse 0.7s ease-in-out infinite; }
.health-starting .status-light { background: var(--yellow); box-shadow: 0 0 10px var(--yellow); }
.bot-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.pill.mini { font-size: 12px; padding: 2px 10px; }
.server-sticker { background: linear-gradient(150deg, #e95420, #8f2c0c); }
.journal { flex: 1; min-height: 0; overflow: auto; margin: 0; padding: 10px; font: 12px/1.4 Consolas, monospace; white-space: pre-wrap; background: #050b16; border: 2px dashed var(--line); border-radius: 10px; }

/* calendar stays a small month pad, not a wall of squares */
.calendar-layout { display: flex; gap: 16px; align-items: flex-start; flex-wrap: wrap; }
.calendar-board { width: 420px; max-width: 100%; flex-shrink: 0; display: flex; flex-direction: column; gap: 8px; }
.calendar-weekdays, .calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.calendar-weekdays span { text-align: center; font: 600 11px var(--font-fun); color: var(--ink-soft); }
.calendar-day { position: relative; height: 44px; padding: 3px; display: flex; flex-direction: column; align-items: center; justify-content: space-between; color: var(--ink); background: var(--card); border: 2px solid var(--line); border-radius: 10px; cursor: pointer; font: 600 13px var(--font-fun); transition: transform 180ms cubic-bezier(0.34, 1.56, 0.64, 1); }
.calendar-day:hover { transform: scale(1.08) rotate(-2deg); border-color: var(--accent); z-index: 1; }
.calendar-day.outside { opacity: 0.35; }
.calendar-day.today { border-color: var(--accent); box-shadow: 0 0 10px var(--accent); }
.calendar-day.selected { background: var(--accent); color: #0b1424; border-color: #fff9; }
.day-dots { display: flex; gap: 3px; min-height: 6px; }
.day-dot-mark { width: 6px; height: 6px; border-radius: 50%; }
.dot-task { background: #ffae42; box-shadow: 0 0 5px #ffae42; }
.dot-event { background: #ff7a6b; box-shadow: 0 0 5px #ff7a6b; }
.day-panel { display: flex; flex-direction: column; gap: 8px; width: 280px; max-width: 100%; }
.day-items { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.day-item { display: flex; align-items: center; gap: 8px; }
.day-item-text { flex: 1; }
.day-dot { width: 9px; height: 9px; border-radius: 50%; background: #ff7a6b; flex-shrink: 0; }
.kind-task .day-dot { background: #ffae42; }
.time-input { width: 110px; flex: none !important; }

/* calculator stays pocket sized */
.calc-wrap { width: 320px; max-width: 100%; display: flex; flex-direction: column; gap: 10px; }
.calc-body { display: flex; flex-direction: column; gap: 8px; padding: 12px; background: var(--card); border: 2px solid var(--line); border-radius: var(--wobbly); box-shadow: var(--paper-shadow); }
.calc-display { font: 600 22px var(--font-fun); text-align: right; }
.calc-result { text-align: right; font: 600 18px var(--font-fun); color: var(--accent); text-shadow: 0 0 10px var(--accent); min-height: 22px; }
.calc-result.broken { opacity: 0.4; }
.calc-keys { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.calc-key { height: 40px; font: 600 16px var(--font-fun); color: var(--ink); background: var(--card-light); border: 2px solid var(--line); border-radius: 12px; box-shadow: var(--paper-shadow); cursor: pointer; transition: transform 150ms cubic-bezier(0.34, 1.56, 0.64, 1); }
.calc-key:hover { transform: scale(1.05) rotate(-2deg); border-color: var(--accent); }
.calc-key:active { transform: scale(0.9); }
.calc-key.op { color: var(--accent); }
.calc-key.soft { color: var(--ink-soft); font-size: 15px; }
.calc-key.equals { background: var(--accent); color: #0b1424; border-color: #fff9; grid-row: span 2; height: auto; }
.calc-history { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; max-height: 180px; overflow: auto; }
.history-line { display: flex; justify-content: space-between; gap: 10px; padding: 4px 10px; border-bottom: 1px dashed var(--line); cursor: pointer; }
.history-line:hover { color: var(--accent); }

/* logs */
.log-list { list-style: none; margin: 0; padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; font: 14px/1.35 Consolas, monospace; background: #07101ecc; border: 2px dashed var(--line); border-radius: var(--wobbly-alt); }
.log-line { display: grid; grid-template-columns: 64px 80px 1fr; gap: 8px; padding: 2px 0; border-bottom: 1px dotted #2b558844; }
.log-time { color: var(--ink-soft); }
.log-source { color: var(--accent); }
.log-message { overflow-wrap: anywhere; }
.log-line.warn .log-message { color: var(--yellow); }
.log-line.error .log-message { color: var(--danger); }
