/* O2-Aggregate (CC_194/CC_195) — Wartung & Reparatur, Lebenserhaltung (Statuskarte). */
@keyframes o2-critical-pulse { 0%,100% { box-shadow: none; } 50% { box-shadow: 0 0 10px rgba(213,0,0,0.5); } }
.o2-units { margin-top: 1.25rem; display: flex; flex-direction: column; gap: 0.75rem; }
.o2-title { margin: 0; font-size: 1.1rem; }
.o2-sub { margin: 0.2rem 0 0; font-size: 0.8rem; opacity: 0.7; }
.o2-notice { margin: 0; padding: 0.4rem 0.6rem; border-radius: 4px; font-size: 0.85rem; }
.o2-notice.ok { background: rgba(0,200,83,0.12); border: 1px solid rgba(0,200,83,0.4); color: #69f0ae; }
.o2-notice.warn { background: rgba(255,214,0,0.12); border: 1px solid rgba(255,214,0,0.5); color: #ffd600; }
.o2-unit-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.o2-unit { padding: 0.9rem; display: flex; flex-direction: column; gap: 0.5rem; }
.o2-unit.tone-critical { border-color: rgba(213,0,0,0.7); animation: o2-critical-pulse 1s infinite; }
.o2-unit.tone-warning { border-color: rgba(255,214,0,0.5); }
.o2-unit.tone-maintenance { border-color: rgba(64,196,255,0.5); }
.o2-unit-head { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; }
.o2-unit-head h3 { margin: 0; font-size: 0.95rem; }
.o2-state { font-size: 0.7rem; font-weight: bold; padding: 0.15rem 0.45rem; border-radius: 3px; background: rgba(255,255,255,0.08); }
.o2-state.tone-normal { color: #00c853; }
.o2-state.tone-warning { color: #ffd600; }
.o2-state.tone-critical { color: #ff5252; }
.o2-state.tone-maintenance, .o2-state.tone-info { color: #40c4ff; }
.o2-step { margin: 0; font-size: 0.85rem; }
.o2-progress { height: 6px; background: rgba(255,255,255,0.1); border-radius: 3px; overflow: hidden; }
.o2-progress-bar { height: 100%; background: #40c4ff; transition: width 0.5s; }
.o2-output { display: flex; gap: 1rem; font-size: 0.75rem; opacity: 0.85; flex-wrap: wrap; }
.o2-slots { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.45rem; }
.o2-slot { padding: 0.4rem 0.5rem; background: rgba(0,0,0,0.25); border-radius: 4px; display: flex; flex-direction: column; gap: 0.3rem; }
.o2-slot-head { display: flex; justify-content: space-between; gap: 0.5rem; font-size: 0.8rem; }
.o2-slot-name { font-weight: bold; }
.o2-slot-task { opacity: 0.6; font-size: 0.72rem; }
.o2-part { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; }
.o2-part-tag { font-family: monospace; opacity: 0.75; font-size: 0.72rem; }
.o2-health { flex: 1; height: 8px; background: rgba(255,255,255,0.1); border-radius: 4px; overflow: hidden; min-width: 50px; }
.o2-health-bar { height: 100%; }
.o2-health-bar.cond-good { background: #00c853; }
.o2-health-bar.cond-worn { background: #ffd600; }
.o2-health-bar.cond-defect { background: #d50000; }
.o2-part-val { white-space: nowrap; }
.o2-part-val.cond-worn { color: #ffd600; }
.o2-part-val.cond-defect { color: #ff5252; }
.o2-empty { margin: 0; font-size: 0.75rem; color: #ffd600; }
.o2-candidates { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.o2-actions { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.o2-btn { background: rgba(64,196,255,0.12); border: 1px solid rgba(64,196,255,0.5); color: #40c4ff; cursor: pointer; }
.o2-btn-stop { background: rgba(255,82,82,0.12); border-color: rgba(255,82,82,0.5); color: #ff8a80; }
.o2-btn-start { background: rgba(0,200,83,0.12); border-color: rgba(0,200,83,0.5); color: #69f0ae; }
.o2-lower { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; }
.o2-lower h3 { margin: 0 0 0.5rem; font-size: 0.9rem; }
.o2-depot, .o2-carried, .o2-journal { padding: 0.8rem; }
.o2-depot-list, .o2-journal ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.35rem; font-size: 0.78rem; }
.o2-depot-item { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; }
.o2-depot-type { font-weight: bold; }
.o2-scrap { color: #ff5252; font-size: 0.7rem; font-weight: bold; }
.o2-hint { font-size: 0.72rem; opacity: 0.65; margin: 0; }
/* CC_195: Brauchwasser, Werkbank-Schritte, Pruefstand */
.o2-water { margin: 0; font-size: 0.8rem; opacity: 0.9; }
.o2-water.low b { color: #ffd600; }
.o2-water.empty { color: #ff5252; }
.o2-step-btn { min-width: 2rem; }
.o2-inspect { padding: 0.8rem; }
.o2-inspect h3 { margin: 0 0 0.5rem; font-size: 0.9rem; }
.o2-inspect-form { display: flex; gap: 0.4rem; margin-bottom: 0.5rem; }
.o2-inspect-input { flex: 1; width: auto; }
.o2-inspect-props { display: grid; grid-template-columns: auto 1fr; gap: 0.2rem 0.6rem; font-size: 0.78rem; margin: 0; }
.o2-inspect-props dt { opacity: 0.6; }
.o2-inspect-props dd { margin: 0; }
.o2-inspect-props dd.cond-worn { color: #ffd600; }
.o2-inspect-props dd.cond-defect { color: #ff5252; }
@media (max-width: 800px) {
  .o2-unit-grid { grid-template-columns: 1fr; }
}
/* Statuskarte auf der Lebenserhaltungsseite */
.o2-summary { margin-top: 1.25rem; padding: 0.9rem; display: flex; flex-direction: column; gap: 0.5rem; }
.o2-summary-head { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.8rem; }
.o2-summary-head h3 { margin: 0; font-size: 1rem; }
.o2-summary-link { margin-left: auto; min-height: 44px; display: inline-flex; align-items: center; text-decoration: none; }
.o2-summary-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.35rem; }
.o2-summary-item { display: flex; flex-wrap: wrap; align-items: center; gap: 0.3rem 0.8rem; font-size: 0.82rem;
                   padding: 0.35rem 0.5rem; background: rgba(0,0,0,0.25); border-radius: 4px; }
.o2-summary-item b { font-weight: 600; }
.o2-summary-item .o2-output { margin-left: auto; }
.o2-inspect-form input { flex: 1; min-width: 0; background: rgba(0,0,0,0.5); border: 1px solid rgba(255,255,255,0.3); color: inherit; padding: 0.3rem; }
