body { font-family: Arial, sans-serif; margin: 0; padding: 20px; background: #f9f9f9; } h1 { color: #333; } .container { display: flex; flex-direction: row; } .block-list { width: 250px; margin-right: 20px; } .block-item { padding: 10px; margin: 5px 0; background: #f5f5f5; border-radius: 4px; cursor: pointer; border-left: 4px solid #2196F3; transition: all 0.3s ease; } .block-item:hover { background: #e0e0e0; } .block-item.active { background: #e3f2fd; } .block-item.recently-updated { animation: pulse 1.5s; border-left-color: #e91e63; } @keyframes pulse { 0% { background-color: #f5f5f5; } 50% { background-color: #ffcdd2; } 100% { background-color: #f5f5f5; } } .timeline-view { flex: 1; } .timeline-item { border-left: 2px solid #2196F3; padding: 10px; margin: 10px 0 10px 20px; position: relative; } .timeline-item:before { content: ''; position: absolute; width: 12px; height: 12px; background: #2196F3; border-radius: 50%; left: -7px; top: 10px; } .timeline-item.attribute-edit { border-left-color: #e91e63; } .timeline-item.attribute-edit:before { background: #e91e63; } .timeline-item.moved { border-left-color: #4caf50; } .timeline-item.moved:before { background: #4caf50; } .timeline-item.scaled { border-left-color: #ff9800; } .timeline-item.scaled:before { background: #ff9800; } .timeline-item.stretched { border-left-color: #9c27b0; } .timeline-item.stretched:before { background: #9c27b0; } .timeline-item.rotated { border-left-color: #795548; } .timeline-item.rotated:before { background: #795548; } .timeline-time { color: #666; font-size: 0.8em; } .action-type { font-weight: bold; margin-right: 10px; } .block-action-details { margin-top: 5px; padding: 8px; background: #f5f5f5; border-radius: 4px; } .timeline-container { max-height: 600px; overflow-y: auto; padding-right: 10px; } .block-info { margin-bottom: 15px; padding: 10px; background: #f5f5f5; border-radius: 4px; } .changes { color: #e91e63; font-weight: bold; } .current { color: #4caf50; font-weight: bold; } .initial { color: #2196F3; font-weight: bold; } .attribute { color: #333; } .attribute-section { border-top: 1px solid #ddd; margin-top: 8px; padding-top: 8px; } .attribute-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px; } @media (min-width: 768px) { .attribute-grid { grid-template-columns: repeat(3, 1fr); } } .collapsible { cursor: pointer; padding: 5px 0; width: 100%; border: none; text-align: left; outline: none; background-color: transparent; font-weight: bold; position: relative; } .collapsible:after { content: '+'; font-weight: bold; float: right; margin-left: 5px; } .active-collapse:after { content: "-"; } .collapse-content { max-height: 0; overflow: hidden; transition: max-height 0.2s ease-out; } .notification { position: fixed; bottom: 20px; right: 20px; padding: 10px 20px; background-color: #4caf50; color: white; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.2); opacity: 0; transition: opacity 0.3s; z-index: 1000; } .notification.show { opacity: 1; }