/* 全局样式 */ body { font-family: 'Arial', sans-serif; background-color: #282c34; color: #ffffff; margin: 0; padding: 20px; height: 100vh; display: grid; grid-template-rows: auto auto 1fr 1fr; grid-template-columns: 1fr 1fr; gap: 20px; } .db-status-panel { grid-column: 1 / -1; background-color: #333; border: 1px solid #61dafb; border-radius: 8px; padding: 20px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .control-panel { grid-column: 1 / -1; display: flex; gap: 20px; padding: 20px; background-color: #333; border: 1px solid #61dafb; border-radius: 8px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .db-status { display: flex; align-items: center; gap: 10px; font-size: 16px; } .db-status i { font-size: 20px; } .db-status.connected { color: #4caf50; } .db-status.disconnected { color: #f44336; } .control-panel button { flex: 1; padding: 15px 20px; background: linear-gradient(145deg, #61dafb, #4fa8c7); border: none; border-radius: 6px; color: #282c34; cursor: pointer; font-weight: bold; font-size: 14px; text-align: left; display: flex; align-items: center; gap: 10px; transition: all 0.3s ease; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } .control-panel button:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); background: linear-gradient(145deg, #4fa8c7, #61dafb); } .control-panel button i { font-size: 18px; } .panel { background-color: #333; border: 1px solid #61dafb; border-radius: 8px; padding: 20px; overflow: auto; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .panel h2 { color: #61dafb; margin-top: 0; margin-bottom: 15px; font-size: 18px; } .status-columns { display: flex; gap: 20px; } .status-column { flex: 1; } .status-column h3 { color: #61dafb; margin-top: 0; margin-bottom: 10px; font-size: 14px; } .log-panel { grid-column: 1; grid-row: 4; } .ccu-state-panel { grid-column: 2; grid-row: 3; } .dis-sys-panel { grid-column: 1; grid-row: 3; } .state-machine-panel { grid-column: 2; grid-row: 4; display: flex; flex-direction: column; gap: 15px; min-height: 400px; max-height: 600px; } .state-machine-panel h2 { display: flex; align-items: center; gap: 8px; } .state-machine-panel h2::before { content: ''; display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: #61dafb; box-shadow: 0 0 8px #61dafb; } .state-machine-panel pre { margin: 0; white-space: pre-wrap; word-wrap: break-word; font-size: 13px; line-height: 1.4; background-color: #3a3f4b; padding: 15px; border-radius: 6px; border-left: 4px solid #61dafb; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .state-machine-panel pre span { display: block; margin-bottom: 8px; color: #61dafb; font-weight: bold; } .state-machine-panel pre span::after { content: ':'; margin-left: 4px; } .file-input { display: none; } .file-label { display: inline-block; padding: 10px 15px; background: #61dafb; color: #282c34; border-radius: 4px; cursor: pointer; margin-left: 10px; } /* MOOS通知面板样式 */ .moos-notify-panel { margin-top: 20px; padding: 15px; background-color: #3a3f4b; border: 1px solid #61dafb; border-radius: 6px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .moos-notify-panel .input-group { margin-bottom: 15px; } .moos-notify-panel label { display: block; margin-bottom: 5px; color: #61dafb; font-size: 14px; } .moos-notify-panel input { width: 80%; padding: 8px 8px; background-color: #282c34; border: 1px solid #61dafb; border-radius: 4px; color: #ffffff; font-size: 14px; } .moos-notify-panel input:focus { outline: none; border-color: #4fa8c7; box-shadow: 0 0 0 2px rgba(97, 218, 251, 0.2); } .moos-notify-panel button { width: 80%; padding: 8px; background: linear-gradient(145deg, #61dafb, #4fa8c7); border: none; border-radius: 4px; color: #282c34; font-weight: bold; cursor: pointer; transition: all 0.3s ease; } .moos-notify-panel button:hover { transform: translateY(-1px); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); }